セルフマネージド許可を持つ CloudFormation StackSets を作成する - AWS CloudFormation

セルフマネージド許可を持つ CloudFormation StackSets を作成する

self-managed 型のアクセス許可を使用すると、特定のリージョンで特定の AWS アカウント にスタックインスタンスをデプロイできます。これを行うには、まず必要な IAM ロールを作成して、スタックセットの管理元アカウントとスタックインスタンスのデプロイ先のアカウントとの間に信頼関係を確立する必要があります。詳細については、「セルフマネージド型のアクセス許可を付与する」を参照してください。

注記

以下の手順のいずれかを完了する前に、IAM ロール AWSCloudFormationStackSetExecutionRoleAWSCloudFormationStackSetAdministrationRole が管理者アカウントに存在することを確認します。管理者アカウント以外のアカウントでスタックを起動するには、IAM ロール AWSCloudFormationStackSetExecutionRole がターゲットアカウントに存在することを確認します。

このトピックで参照されるテンプレートは、米国西部 (オレゴン) リージョン (us-west-2) および米国東部 (バージニア北部) リージョン (us-east-1) 内のターゲットアカウント内の AWS Config を有効にします。[AWS Config を有効化] テンプレートは、次の S3 バケットにあります: https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/EnableAWSConfig.yml。StackSets コンソールのこのサンプルテンプレートを選択することもできます。

セルフマネージド型のアクセス許可を持つスタックセットの作成 (コンソール)

  1. AWS Management Console にサインインし、AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation) を開きます。

  2. 画面の上部のナビゲーションバーで、スタックを管理する AWS リージョン を選択します。

  3. ナビゲーションペインから [StackSets] を選択します。

  4. [StackSets] ページの上部から [StackSets の作成] を選択します。

  5. 以前に作成した AWSCloudFormationStackSetExecutionRole および AWSCloudFormationStackSetAdministrationRole という名前の IAM ロールを使用するには、アクセス許可をスキップします。

  6. [Prerequisite - Prepare template (前提条件 - テンプレートの準備)] で [Use a sample template (サンプルテンプレートの使用)] を選択します。

  7. [サンプルテンプレートの選択] で、ドロップダウンメニューから [AWS Config の有効化] テンプレートを選択します。[次へ] を選択します。

  8. [StackSets の詳細を指定] ページの [StackSet name の名前] で、スタックセットの名前を入力します。スタックセット名はアルファベット文字で始まり、文字、数字、ハイフンのみを含める必要があります。このウォークスルーでは、my-awsconfig-stackset という名前を使用します。

  9. [StackSet の説明] には、スタックセットの説明を入力します。

  10. パラメータ については、AWS Config で使用されるテンプレートパラメータを確認します。

    注記

    このチュートリアルでは、このセクションのデフォルト設定を使用できます。

    1. レコーダー設定では、デフォルト値を確認します。これらのパラメータに関する詳細については、「AWS Config デベロッパーガイド」の「コンソールによる AWS Config の設定」を参照してください。

    2. (オプション) 配信チャネル設定では、更新と通知について配信チャネルのデフォルト値を確認します。AWS Config の配信チャネルでの詳細については、「AWS Config デベロッパーガイド」の「Managing the delivery channel」(配信チャネルの管理) を参照してください。

    3. (オプション) 配信通知については、Amazon Simple Notification Service (SNS) 通知のデフォルト設定を確認してください。

  11. [次へ] を選択して続行します。

  12. [Configure StackSet options (StackSet オプションの設定)] ページで、キーと値のペアを指定してタグを追加します。このウォークスルーでは、[Test] (テスト) の値を持つ [Stage] (ステージ) というタグを作成します スタックセットに適用するタグは、スタックに作成されるすべてのリソースに適用されます。AWS でのタグの使用方法に関する詳細については、AWS Billing and Cost Management ユーザーガイドの「AWS コスト配分タグを使用してコストを整理および追跡する」を参照してください。

  13. [Execution configuration(実行構成)] の場合、StackSets が競合しないオペレーションを同時に実行し、競合するオペレーションをキューに入れるように、[Active (アクティブ)] を選択します。競合するオペレーションが終了すると、StackSets はキューに入っているオペレーションをリクエスト順に開始します。

    注記

    既に実行中のオペレーションまたはキューに入っているオペレーションがある場合、StackSets はオペレーションが競合しない場合でもすべての受信オペレーションをキューに入れます。

    そのスタックセットに実行中のオペレーションまたはキューに入っているオペレーションがある間は、スタックセットの実行構成を変更することはできません。

  14. テンプレートに IAM リソースが含まれる場合は、[機能] で[I acknowledge that this template may create IAM resources (このテンプレートが IAM リソースを作成する可能性を認識しています)] を選択して、テンプレート内の IAM リソースを使用することを指定します。詳細については、「CloudFormation テンプレートでの IAM リソースの承認」を参照してください。

  15. [Next] を選択します。

  16. [デプロイオプションの設定] ページの [スタックをスタックセットに追加] では、[新しいスタックをデプロイ] オプションを選択します。

  17. [アカウント] で [Deploy stacks in accounts (スタックをアカウントにデプロイ)] を選択します。ターゲット AWS アカウント 番号をテキストボックスに貼り付け、複数の数字をカンマで区切ります。

  18. [Specify regions (リージョンの指定)] で [米国東部 (バージニア北部) リージョン] を選択します。[米国西部 (オレゴン) リージョン] も同様に選択します。米国西部 (オレゴン) リージョン の横にある上矢印を選択して、リストの最初の項目になるように移動します。[Specify regions (リージョンの指定)] のリージョンの順序に従って、デプロイの順序が決まります。

    デフォルトでは、CloudFormation は、リージョンのデプロイ失敗が指定された障害耐性を超えない限り、最初のリージョン内の指定されたアカウントにスタックをデプロイし、次のリージョンに移行し、それが繰り返されます。

  19. [Deployment options (デプロイメントオプション)] で次のようにします。

    • [Maximum concurrent accounts (同時アカウントの最大数)] については、デフォルト値の [数値]1 をそのまま使用します。

      つまり、CloudFormation は一度に 1 つのアカウントのみでスタックをデプロイします。

    • [Failure tolerance (障害耐性)] については、デフォルトの [数値] と [0] をそのまま使用します。

      つまり、CloudFormation が現在のリージョンでデプロイを停止し、残りのリージョンでのデプロイをキャンセルする前に、最大で 1 つのスタックデプロイが、指定されたリージョンの 1 つで失敗できるということを意味します。

    • [リージョンの同時実行] では、[Sequential (順次)] または [Parallel (並列)] を選択して、指定したリージョンの StackSets デプロイ順を決めます。デフォルトでは、[Sequential (順次)] が選択されています。

    • 同時実行モードでは、必要に応じて同時実行モードを更新するか、次のステップに進みます。

  20. [次へ] を選択します。

  21. [確認] ページで選択内容を確認します。変更するには、関連セクションで [編集] をクリックします。

  22. スタックセットを作成する準備ができたら、[送信] を選択します。

    CloudFormation がスタックセットの作成を開始します。スタックセット内のスタック作成の進捗と状況は、[送信] を選択した際に開くスタックセット詳細ページで確認できます。

セルフマネージド型のアクセス許可を持つスタックセットの作成 (AWS CLI)

AWS CLI コマンドを使用してスタックセットを作成する場合は、2 つの異なるコマンドを実行します。create-stack-set でテンプレートをアップロードしてスタックセットコンテナを作成し、create-stack-instances でスタックセット内にスタックを作成します。

  1. まず、次の create-stack-set コマンドを実行して、AWS Config を有効にするサンプルテンプレートをアップロードします。--template-url オプションには、テンプレートがある Amazon S3 バケットの URL を指定します。この例では、my-awsconfig-stackset--stack-set-name オプションの値として使用します。

    aws cloudformation create-stack-set \ --stack-set-name my-awsconfig-stackset \ --template-url https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/EnableAWSConfig.yml
    注記

    既に実行中のオペレーションまたはキューに入っているオペレーションがある場合、StackSets はオペレーションが競合しない場合でもすべての受信オペレーションをキューに入れます。

    そのスタックセットに実行中のオペレーションまたはキューに入っているオペレーションがある間は、スタックセットの実行構成を変更することはできません。

  2. create-stack-set コマンドが完了したあと、list-stack-sets コマンドを実行してスタックセットが作成されたことを確認します。新しいスタックセットが表示結果で確認できます。

    aws cloudformation list-stack-sets
  3. create-stack-instances コマンドを使用して、スタックセットにスタックインスタンスを追加します。このチュートリアルでは、--regions オプションの値として us-west-2 および us-east-1 を使用します。

    aws cloudformation create-stack-instances \ --stack-set-name my-awsconfig-stackset \ --accounts '["account_ID_1","account_ID_2"]' \ --regions '["us-west-2","us-east-1"]'

    CloudFormation がこのスタックセット操作を実行する方法の設定を指定するには、次の例のように --operation-preferences プションを指定します。この例では、割合ではなくカウントを使用します。代わりに割合を適用するには、FailureTolerancePercentage または MaxConcurrentPercentage を使用します。

    --operation-preferences FailureToleranceCount=0,MaxConcurrentCount=1
    注記

    MaxConcurrentCount の値は、FailureToleranceCount の値に依存します。MaxConcurrentCount は、最大で FailureToleranceCount より 1 だけ多くなります。

    重要

    別のオペレーションを開始する前に、オペレーションが終了するのを待ってください。一度に 1 つのオペレーションのみを実行できます。

  4. create-stack-instances 出力の一部として返された operation-id を使用して、次の describe-stack-set-operation コマンドを使用して、スタックインスタンスが正常に作成されたことを確認します。

    aws cloudformation describe-stack-set-operation \ --stack-set-name my-awsconfig-stackset \ --operation-id operation_ID