アカウントのカスタマイズ - AWS Control Tower

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

アカウントのカスタマイズ

AFT は、プロビジョニングされたアカウントに標準の設定またはカスタマイズされた設定をデプロイできます。AFT 管理アカウントでは、AFT はアカウントごとに 1 つのパイプラインを提供します。このパイプラインを使用すると、すべてのアカウント、一組のアカウント、または個々のアカウントにカスタマイズを実装できます。Python スクリプト、bash スクリプト、および Terraform 設定を実行したり、アカウントカスタマイズステージの一部として AWS CLI を操作したりできます。

概要

選択した git リポジトリでカスタマイズを指定した後、グローバルカスタマイズを保存する場所またはアカウントカスタマイズを保存する場所のいずれかで、アカウントカスタマイズステージが AFT パイプラインによって自動的に完了します。アカウントを遡及的にカスタマイズするには、「カスタマイズの再呼び出し」を参照してください。

グローバルカスタマイズ (オプション)

AFT によってプロビジョニングされているすべてのアカウントに特定のカスタマイズを適用することもできます。例えば、特定の IAM ロールを作成する必要がある場合やすべてのアカウントにカスタムコントロールをデプロイする必要がある場合、AFT パイプラインのグローバルカスタマイズステージでその操作を自動的に行うことができます。

アカウントカスタマイズ (オプション)

AFT でプロビジョニングされた他のアカウントとは異なる個別のアカウント、または一組のアカウントをカスタマイズするには、AFT パイプラインのアカウントカスタマイズ部分を使用して、アカウント固有の設定を実装します。例えば、特定のアカウントでのみ、インターネットゲートウェイへのアクセスが必要になる場合があります。

カスタマイズの前提条件

アカウントのカスタマイズを開始する前に、次の前提条件が満たされていることを確認してください。

  • AFT が完全にデプロイされていること。デプロイ方法については、「AWS Control Tower Account Factory for Terraform を設定して起動する」を参照してください。

  • 環境内のグローバルカスタマイズおよびアカウントカスタマイズ用の git リポジトリに必要な情報が事前入力されていること。詳細については、「デプロイ後のステップ」の「ステップ 3: (必須) 各リポジトリを設定する」を参照してください。

グローバルカスタマイズの適用

グローバルカスタマイズを適用するには、選択したリポジトリに特定のフォルダ構造をプッシュする必要があります。

  • カスタム設定が Python プログラムまたはスクリプトの形式である場合は、それらをリポジトリ内の [api_helpers/python] フォルダに配置します。

  • カスタム設定が Bash スクリプトの形式である場合は、それらをリポジトリ内の [api_helpers] フォルダに配置します。

  • カスタム設定が Terraform の形式である場合は、それらをリポジトリ内の [terraform] フォルダに配置します。

  • カスタム設定の作成の詳細については、グローバルカスタマイズの README ファイルを参照してください。

注記

グローバルカスタマイズは、AFT パイプラインの AFT アカウントプロビジョニングフレームワークステージの後で自動的に適用されます。

アカウントカスタマイズの適用

選択したリポジトリに特定のフォルダ構造をプッシュすると、アカウントカスタマイズを適用できます。アカウントカスタマイズは、AFT パイプラインのグローバルカスタマイズステージの後で自動的に適用されます。アカウントカスタマイズリポジトリに、さまざまなアカウントカスタマイズを含む複数のフォルダーを作成することもできます。必要なアカウントカスタマイズの実装ごとに、以下のステップを使用します。

アカウントカスタマイズを適用するには
  1. ステップ 1: アカウントカスタマイズ用のフォルダを作成する

    選択したリポジトリで、AFT が提供する ACCOUNT_TEMPLATE フォルダーを新しいフォルダーにコピーします。新しいフォルダの名前は、アカウントリクエストで指定した account_customizations_name と一致する必要があります。

  2. 特定のアカウントカスタマイズフォルダの設定を追加する

    設定の形式に基づいて、アカウントカスタマイズフォルダーに設定を追加できます。

    • カスタム設定が Python プログラムまたはスクリプトの形式である場合は、リポジトリ内にある [account_customizations_name]/api_helpers/python フォルダに配置します。

    • カスタム設定が Bash スクリプトの形式である場合は、それらをリポジトリ内にある [account_customizations_name]/api_helpers フォルダに配置します。

    • カスタム設定が Terraform の形式である場合は、それらをリポジトリ内の [account_customizations_name]/terraform フォルダに配置します。

    カスタム設定の作成の詳細については、アカウントカスタマイズの README ファイルを参照してください。

  3. アカウントリクエストファイルの特定の account_customizations_name パラメータを参照する

    AFT アカウントリクエストファイルには、入力パラメータ account_customizations_name が含まれています。このパラメータの値として、アカウントカスタマイズの名前を入力します。

注記

環境内のアカウントに対して複数のアカウントリクエストを送信できます。異なるまたは類似のアカウントカスタマイズを適用する場合は、アカウントリクエストの account_customizations_name 入力パラメータを使用してアカウントのカスタマイズを指定します。詳細については、「複数のアカウントリクエストを送信する」を参照してください。

カスタマイズの再呼び出し

AFT には、AFT パイプラインでカスタマイズを再呼び出しする方法が用意されています。この方法は、新しいカスタマイズステップを追加した場合や、既存のカスタマイズを変更する場合に便利です。再呼び出しすると、AFT によってカスタマイズパイプラインが開始されて、AFT でプロビジョニングされたアカウントに変更が加えられます。 event-source-based 再呼び出しにより、個々のアカウント、すべてのアカウント、OU に応じたアカウント、またはタグに従って選択されたアカウントにカスタマイズを適用できます。

AFT でプロビジョニングされたアカウントのカスタマイズを再呼び出しするには、次の 3 つのステップに従います。

ステップ 1: グローバルカスタマイズまたはアカウントカスタマイズの git リポジトリに変更をプッシュする

必要に応じてグローバルカスタマイズおよびアカウントカスタマイズを更新し、変更を git リポジトリに再度プッシュします。この時点では何も起こりません。次の 2 つのステップで説明するように、イベントソースによってカスタマイズパイプラインを呼び出す必要があります。

ステップ 2: カスタマイズを再呼び出しするための AWS Step Functions の実行を開始する

AFT では、AFT 管理アカウントに aft-invoke-customizations という AWS Step Functions が用意されています。この関数の目的は、AFT でプロビジョニングされたアカウントのカスタマイズパイプラインを再呼び出しすることです。

次に、aft-invoke-customizations AWS Step Functions に入力を渡すために作成できるイベントスキーマ (JSON 形式) の例を示します。

{ "include": [ { "type": "all" }, { "type": "ous", "target_value": [ "ou1","ou2"] }, { "type": "tags", "target_value": [ {"key1": "value1"}, {"key2": "value2"}] }, { "type": "accounts", "target_value": [ "acc1_ID","acc2_ID"] } ], "exclude": [ { "type": "ous", "target_value": [ "ou1","ou2"] }, { "type": "tags", "target_value": [ {"key1": "value1"}, {"key2": "value2"}] }, { "type": "accounts", "target_value": [ "acc1_ID","acc2_ID"] } ] }

このイベントスキーマの例に示すように、再呼び出しプロセスに対して含めたり除外したりするアカウントを選択できます。組織単位 (OU)、アカウントタグ、およびアカウント ID でフィルタリングできます。フィルターを適用せず、ステートメント "type":"all" を含めた場合は、AFT でプロビジョニングされたすべてのアカウントのカスタマイズが再呼び出しされます。

注記

AWS Control Tower のバージョンが 1.6.5 以降の場合は、ネストされた OU を構文 OU Name (ou-id-1234) を使用してターゲットにできます。詳細については、 に関する以下のトピックを参照してくださいGitHub

イベントパラメータを入力すると、Step Functions が実行され、対応するカスタマイズが呼び出されます。AFT では、一度に最大 5 つのカスタマイズを呼び出すことができます。Step Functions は、イベント条件に一致するすべてのアカウントが完了するまで待機してループします。

ステップ 3: AWS Step Function 出力をモニタリングし、AWS CodePipeline の実行を監視する

  • Step Functions で生成される出力には、Step Functions 入力イベントソースと一致するアカウント ID が含まれています。

  • デベロッパーツール CodePipeline で AWS に移動し、アカウント ID に対応するカスタマイズパイプラインを表示します。

AFT アカウントカスタマイズリクエストの追跡によるトラブルシューティング

AWS Lambda に基づいてアカウントカスタマイズワークフローが出力するログには、ターゲットアカウント ID とカスタマイズリクエスト ID が含まれます。AFT では、カスタマイズリクエストに関連する CloudWatch ログをターゲットアカウントまたはカスタマイズリクエスト ID でフィルタリングするために使用できる CloudWatch Logs Insights クエリを提供することで、Amazon CloudWatch Logs でカスタマイズリクエストを追跡およびトラブルシューティングできます。詳細については、「Amazon CloudWatch Logs ユーザーガイド」の「Amazon Logs を使用したログデータの分析 CloudWatch 」を参照してください。

AFT に CloudWatch Logs Insights を使用するには
  1. https://console.aws.amazon.com/cloudwatch/ で CloudWatch コンソールを開きます。

  2. ナビゲーションペインで、[ログ][ログのインサイト] の順に選択します。

  3. [クエリ] を選択します。

  4. [サンプルクエリ][Account Factory for Terraform] を選択し、次のクエリのいずれかを選択します。

    • アカウント ID 別のカスタマイズログ

      注記

      必ず "YOUR-ACCOUNT-ID" をターゲットアカウント ID に置き換えてください。

      fields @timestamp, log_message.account_id as target_account_id, log_message.customization_request_id as customization_request_id, log_message.detail as detail, @logStream | sort @timestamp desc | filter log_message.account_id == "YOUR-ACCOUNT-ID" and @message like /customization_request_id/
    • カスタマイズリクエスト ID 別のカスタマイズログ

      注記

      必ず "YOUR-CUSTOMIZATION-REQUEST-ID" をカスタマイズリクエスト ID に置き換えてください。カスタマイズリクエスト ID は、AFT アカウントプロビジョニングフレームワーク AWS Step Functions ステートマシンの出力で確認できます。AFT アカウントプロビジョニングフレームワークの詳細については、「AFT アカウントプロビジョニングパイプライン」を参照してください。

      fields @timestamp, log_message.account_id as target_account_id, log_message.customization_request_id as customization_request_id, log_message.detail as detail, @logStream | sort @timestamp desc | filter log_message.customization_request_id == "YOUR-CUSTOMIZATION-REQUEST-ID"
  5. クエリを選択したら、必ず時間間隔を選択し、[クエリの実行] を選択します。