

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ADDF のアーキテクチャと用語
<a name="addf-architecture-terminology"></a>

本ガイドのセキュリティとオペレーションのトピックについて理解するときは、Autonomous Driving Data Framework (ADDF) の用語、コンポーネント、アーキテクチャについて大まかに理解しておくことが重要になります。このセクションでは以下のトピックを取り上げます。
+ [ADDF の用語](#addf-terminology)
+ [ADDF アーキテクチャ](#addf-architecture)

## ADDF の用語
<a name="addf-terminology"></a>

ADDF の主要な用語は以下のとおりです。
+ **ADDF モジュール** — このモジュールは、先進運転支援システム (ADAS) に共通するタスクを実装する Infrastructure as Code (IaC) です。共通するタスクには、一元化されたデータストレージ、データ処理パイプライン、可視化のメカニズム、検索インターフェイス、シミュレーションワークロード、分析インターフェイス、事前に作成されたダッシュボードなどの設定が含まれます。モジュールは独自の要件を元に新たに作ることもできれば、既存のものを再利用またはカスタマイズすることもできます。

  を使用して ADDF モジュール AWS Cloud Development Kit (AWS CDK) を定義することも、Hashicorp Terraform や などの一般的な IaC フレームワークを使用して ADDF モジュール AWS CloudFormationを実装することもできます。モジュールには、入力パラメータのセットがあります。入力パラメータは、他のモジュールの出力値に依存します。ADDF のモジュールは、ADDF ターゲット AWS アカウントアカウントの、デプロイの最小単位です。
+ **ADDF デプロイマニフェストファイル** — このファイルは、スタンドアロンの ADDF モジュールのオーケストレーションを定義します。オーケストレーションとは、モジュールをデプロイする順序のことです。ADDF のデプロイマニフェストファイルでは、ADDF グループを使って関連するモジュールを 1 つにまとめることができます。このファイルでは、ADDF ツールチェーン AWS アカウント、ADDF ターゲット AWS アカウント、およびターゲットも定義します AWS リージョン。
+ **ADDF デプロイフレームワーク** – このフレームワークは、ADDF デプロイマニフェストファイルで定義されたオーケストレーション AWS アカウント に基づいて、ADDF モジュールを ADDF ターゲットにデプロイします。ADDF デプロイフレームワークは、次の AWS オープンソースプロジェクトを使用して実装されます。
  + [SeedFarmer](https://github.com/awslabs/seed-farmer) (GitHub) — SeedFarmer は、ADDF デプロイに使用される CLI ツールです。各モジュールの状態を管理し、モジュールコードの準備とパッケージ化を行い、ADDF デプロイロールの最小特権ポリシーを作成し、CodeSeeder がデプロイに使用するセマンティックを指示します。SeedFarmer は、直接連携して ADDF デプロイを実行することもできれば、継続的インテグレーションと継続的デプロイ (CI/CD) のパイプラインに統合して使用することもできます。
  + [CodeSeeder](https://github.com/awslabs/aws-codeseeder) (GitHub) – CodeSeeder は、 AWS CodeBuild ジョブを通じて任意のインフラストラクチャをコードパッケージとしてデプロイします。SeedFarmer は CodeSeeder を自動的にオーケストレーションし、実行します。CodeSeeder と直接連携できるのは SeedFarmer だけです。

  ADDF のデプロイフレームワークは、シングルアカウントおよびマルチアカウントのアーキテクチャでのデプロイをサポートするように設計されています。シングルアカウントとマルチアカウントのどちらのアーキテクチャが必要かは、ご自身の組織の要件に基づいて判断します。
+ **ADDF ツールチェーン AWS アカウント** – このアカウントは、ADDF デプロイマニフェストファイルの定義に基づいて AWS アカウント、ADDF ターゲットへのモジュールのデプロイをオーケストリングおよび管理します。1 回の ADDF デプロイで使用できる ADDF ツールチェーン AWS アカウントは 1 つのみです。シングルアカウントのアーキテクチャの場合、ADDF ツールチェーン AWS アカウント は ADDF ターゲット AWS アカウントでもあります。このアカウントには ADDF ツールチェーン IAM ロールと呼ばれる AWS Identity and Access Management (IAM) ロールが含まれていますが、ADDF デプロイプロセス中は SeedFarmer がその役割を引き受けます。このガイドでは、ADDF ツールチェーンを*ツールチェーンアカウント* AWS アカウント と呼びます。
+ **ADDF ターゲット AWS アカウント** – ADDF モジュールをデプロイするターゲットアカウントです。ターゲットアカウントは 1 つまたは複数使用することができます。これらのアカウントには、ADDF デプロイマニフェストファイルとマップされたそのモジュールに記述された、リソースとアプリケーションロジックが含まれています。シングルアカウントアーキテクチャでは、ADDF ターゲット AWS アカウント も ADDF ツールチェーンです AWS アカウント。各 ADDF ターゲットアカウントには、ADDF デプロイ IAM ロールと呼ばれる IAM ロールが含まれていますが、デプロイプロセス中は CodeSeeder がその役割を引き受けます。このガイドでは、ADDF ターゲットを*ターゲットアカウント* AWS アカウント と呼びます。
+ **ADDF インスタンス** — ADDF とモジュールをクラウドにデプロイすると、ADDF デプロイマニフェストファイルで定義されているとおり、こちらが ADDF インスタンスになります。ADDF インスタンスでは、シングルアカウントとマルチアカウントのいずれのアーキテクチャでも使用でき、複数の ADDF インスタンスをデプロイすることができます。インスタンス数の選び方とユースケースに応じたアカウントアーキテクチャの設計方法の詳細については、「[ADDF アーキテクチャを定義する](secure-setup-and-operation.md#defining-your-addf-architecture)」を参照してください。

## ADDF アーキテクチャ
<a name="addf-architecture"></a>

以下は、 AWS クラウドにおける ADDF インスタンスのアーキテクチャの概要図です。こちらに示すのはマルチアカウントのアーキテクチャで、専用のツールチェーンアカウントと 2 つのターゲットアカウントが含まれています。本ガイドでは、ADDF を使用してターゲットアカウントにリソースをデプロイするプロセスを最初から最後まで説明します。



![ツールチェーンとターゲットアカウントを使用した ADDF ローカルコード、デプロイマニフェストファイル、 AWS アーキテクチャ。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/addf-security-and-operations/images/addf-architecture-diagram.png)


1. **ADDF AWS アカウントを作成し、ブートストラップします。**

   正常に機能させるには、各アカウントを ADDF と AWS CDKにブートストラップする必要があります。ADDF の新規デプロイである場合、または新しいターゲットアカウントを追加する場合は、次の操作を行います。

   1.  AWS CDK ツールチェーンアカウントと各ターゲットアカウントのブートストラップ。手順については「[Bootstrapping](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html)」(AWS CDK ドキュメント) を参照してください。ADDF は AWS CDK を使用してインフラストラクチャをデプロイします。

   1. ツールチェーンアカウントと各ターゲットアカウントの ADDF をブートストラップします。手順については、[ADDF デプロイガイド](https://github.com/awslabs/autonomous-driving-data-framework/blob/main/docs/deployment_guide.md)の*「ブートストラップ AWS アカウント(複数可)*」を参照してください。これにより、SeedFarmer と CodeSeeder で必要になる ADDF 固有の IAM ロールがすべてセットアップされます。
**注記**  
上記のステップは、ADDF を初めてデプロイする場合か、新しいターゲットアカウントを追加する場合のみ実行します。作成済みの ADDF インスタンスに再度 ADDF をデプロイする場合は、このステップを実行する必要はありません。

1. **ADDF モジュールを作成またはカスタマイズします。**

   ADDF モジュールを、解決しようとしている特定の問題に基づいて作成またはカスタマイズします。モジュールは、分離されたタスク、またはタスクのグループを代表するものである必要があります。必要であれば、モジュールの入力パラメータを定義し、そのモジュールの出力値を、他のモジュールの入力パラメータとして使用します。

1. **モジュールオーケストレーションを ADDF デプロイマニフェストファイルで定義します。**

   ADDF マニフェストファイルでモジュールをグループにまとめ、デプロイの順番と、モジュール間の依存関係を定義します。このファイルでは、各 ADDF グループとそのモジュールの単一のツールチェーンアカウントとターゲットアカウント ( を含む AWS リージョン) も指定します。

1. **ADDF デプロイマニフェストファイルを評価し、デプロイの範囲を指定します。**

   ADDF 開発者または などの CI/CD パイプラインは AWS CodePipeline、CLI ツール SeedFarmer を呼び出して ADDF デプロイマニフェストファイルの評価を開始します。評価を開始するため、
   + SeedFarmer は、ADDF デプロイマニフェストファイルを評価の入力パラメータとして使用します。
   + ADDF ツールチェーン IAM ロールを引き受けるため、SeedFarmer は、ステップ 1 の ADDF のブートストラップ中に定義したものと同じ、有効な IAM ロールまたはユーザー認証情報を要求します。

   SeedFarmer が ADDF ツールチェーン IAM ロールを引き受けるための正しい認証情報を持っていないか、ADDF デプロイマニフェストファイルにアクセスできない場合、評価は開始されません。

   評価を開始できる場合、SeedFarmer はツールチェーンアカウントの ADDF ツールチェーン IAM ロールを引き受けます。このアカウントの ADDF デプロイメント IAM ロールを引き受けることで、これ以降 SeedFarmer はどのターゲットアカウントにもアクセスできるようになります。次に SeedFarmer は、ツールチェーンアカウントとターゲットアカウントの ADDF メタデータを読み取ろうとします。次のいずれかの結果になります。
   + 読み取るべき ADDF メタデータがない場合は、これが新しい ADDF インスタンスとなります。SeedFarmer は、デプロイ範囲は ADDF デプロイマニフェストファイルとその内容全体であると判断します。
   + ADDF メタデータが存在する場合、SeedFarmer は、ADDF デプロイマニフェストファイルとその内容を、ターゲットアカウントにある既存のデプロイ済みのアーティファクトの、MD5 ハッシュと比較します。デプロイ可能な変更が検出された場合、プロセスは継続します。検出されなければ、プロセスはそこで完了します。

1. **対象に含まれる ADDF モジュールをターゲットアカウントにデプロイします。**

   CodeSeeder には、ADDF デプロイマニフェストファイルと、前のステップの評価結果に従って、実行すべきデプロイの順番付きリストが作成されています。CodeSeeder は、このリストに基づいて、関連する各ターゲットアカウントで ADDF デプロイ IAM ロールを引き受けます。次に CodeSeeder を、ADDF モジュール用の AWS CDK アプリケーションなど、個々の IaC デプロイを作成または更新する AWS CodeBuild ジョブで実行します。デフォルトでは、ADDF は IaC フレームワーク AWS CDK として を使用しますが、他の一般的な IaC フレームワークもサポートされています。このプロセスが各ターゲットアカウントで完了すると、完全にデプロイされた、クロスアカウントでエンドツーエンドの、ADAS ベースのワークフローが ADDF デプロイマニフェストファイルで定義したとおりに完成します。

   シングルアカウントのアーキテクチャを使用する場合、ツールチェーンアカウントとターゲットアカウントは同じアカウントになり、説明した機能は一方のアカウントにすべて含まれます。

1. **ADDF でデプロイされたインフラストラクチャを使用します。**

   ADAS のデベロッパーは、デプロイした ADAS ベースのワークフローを、ユースケースで定義したとおりに使用できます。

   このワークフローには、ADDF マルチアカウント環境の、単一インスタンスのアーキテクチャが記述されています。開発、デプロイ、オペレーションのモデルによっては、多段階の環境で複数の ADDF インスタンスを実行することが推奨されます。一般的なセットアップには、開発、テスト、本番稼働用のブランチなど、各デプロイステージ AWS アカウント 専用の ADDF インスタンスが含まれる場合があります。また、ADDF インスタンスごとに一意のリソース名前空間を作成したと仮定して AWS リージョン、同じシングルアカウントまたはマルチアカウント環境で同じ で複数の ADDF インスタンスを実行することもできます。詳細については、「[ADDF アーキテクチャを定義する](secure-setup-and-operation.md#defining-your-addf-architecture)」を参照してください。