ADDF のアーキテクチャと用語 - AWS 規範ガイダンス

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

ADDF のアーキテクチャと用語

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

ADDF の用語

ADDF の主要な用語は以下のとおりです。

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

    ADDF モジュールを定義するときは AWS Cloud Development Kit (AWS CDK) を使用できます。また、ADDF モジュールを実装するときは、Hashicorp Terraform や AWS CloudFormation などの一般的な IaC フレームワークを使用できます。モジュールには、入力パラメータのセットがあります。入力パラメータは、他のモジュールの出力値に依存します。ADDF のモジュールは、ADDF ターゲット AWS アカウント アカウントの、デプロイの最小単位です。

  • ADDF デプロイマニフェストファイル — このファイルは、スタンドアロンの ADDF モジュールのオーケストレーションを定義します。オーケストレーションとは、モジュールをデプロイする順序のことです。ADDF のデプロイマニフェストファイルでは、ADDF グループを使って関連するモジュールを 1 つにまとめることができます。このファイルでは、ADDF ツールチェーン AWS アカウント、ADDF ターゲット AWS アカウント、ターゲット AWS リージョン も定義することができます。

  • ADDF デプロイフレームワーク - このフレームワークは、ADDF モジュールを、ADDF デプロイマニフェストファイルで定義されたオーケストレーションに基づいて ADDF ターゲット AWS アカウント にデプロイします。ADDF デプロイフレームワークは、以下の AWS オープンソースプロジェクトを使用して実装します。

    • SeedFarmer (GitHub) — SeedFarmer は、ADDF デプロイに使用される CLI ツールです。各モジュールの状態を管理し、モジュールコードの準備とパッケージ化を行い、ADDF デプロイロールの最小特権ポリシーを作成し、CodeSeeder がデプロイに使用するセマンティックを指示します。SeedFarmer は、直接連携して ADDF デプロイを実行することもできれば、継続的インテグレーションと継続的デプロイ (CI/CD) のパイプラインに統合して使用することもできます。

    • CodeSeeder (GitHub) — CodeSeederは、任意のインフラストラクチャをコードパッケージとして、AWS CodeBuild のジョブを介してデプロイします。SeedFarmer は CodeSeeder を自動的にオーケストレーションし、実行します。CodeSeeder と直接連携できるのは SeedFarmer だけです。

    ADDF のデプロイフレームワークは、シングルアカウントおよびマルチアカウントのアーキテクチャでのデプロイをサポートするように設計されています。シングルアカウントとマルチアカウントのどちらのアーキテクチャが必要かは、ご自身の組織の要件に基づいて判断します。

  • ADDF ツールチェーン AWS アカウント — このアカウントは、ADDF デプロイマニフェストファイルの定義に基づいて ADDF ターゲット AWS アカウント へのモジュールのデプロイをオーケストレーションし、管理します。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 アーキテクチャを定義する」を参照してください。

ADDF アーキテクチャ

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

ADDF ローカルコード、デプロイマニフェストファイル、ツールチェーンとターゲットアカウントを含む AWS アーキテクチャ。
  1. ADDF AWS アカウント を作成し、ブートストラップします。

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

    1. ツールチェーンアカウントと各ターゲットアカウントの AWS CDK をブートストラップします。手順については「Bootstrapping」(AWS CDK ドキュメント) を参照してください。ADDF では、インフラストラクチャのデプロイに AWS CDK を使用します。

    2. ツールチェーンアカウントと各ターゲットアカウントの ADDF をブートストラップします。手順については「ADDF デプロイガイド」の「Bootstrap AWS アカウント(s)」を参照してください。これにより、SeedFarmer と CodeSeeder で必要になる ADDF 固有の IAM ロールがすべてセットアップされます。

    注記

    上記のステップは、ADDF を初めてデプロイする場合か、新しいターゲットアカウントを追加する場合のみ実行します。作成済みの ADDF インスタンスに再度 ADDF をデプロイする場合は、このステップを実行する必要はありません。

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

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

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

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

  4. 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 ハッシュと比較します。デプロイ可能な変更が検出された場合、プロセスは継続します。検出されなければ、プロセスはそこで完了します。

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

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

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

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

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

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