セルフマネージド型のアクセス許可を持つ AWS CloudFormation StackSets の作成 - AWS CloudFormation

セルフマネージド型のアクセス許可を持つ AWS CloudFormation StackSets の作成

このトピックでは、AWS アカウント およびリージョンにスタックをデプロイするためのセルフマネージド型のアクセス許可を持つ StackSets を作成する方法について説明します。

注記

続行する前に、StackSets に必要な IAM サービスロールを作成して、StackSet の管理元アカウントとスタックのデプロイ先のアカウントとの間に信頼関係を確立します。詳細については、「セルフマネージド型のアクセス許可を付与する」を参照してください。

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

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

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

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

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

  5. [アクセス許可] で、[セルフサービスのアクセス許可] を選択し、作成した IAM ロールを選択します。

  6. [前提条件 − テンプレートの準備] で、[テンプレートの準備完了] を選択します。

  7. [Specify template (テンプレートの指定)] で、スタックテンプレートを含む S3 バケットの URL を指定するか、スタックテンプレートファイルをアップロードするかを選択します。[次へ] を選択します。

  8. [StackSet の詳細を指定] ページで、StackSet の名前を指定し、パラメータを指定して、[次へ] を選択します。

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

  10. [StackSet オプションの設定] ページの [タグ] で、スタックのリソースに適用するタグを指定します。AWS でのタグの使用方法に関する詳細については、AWS Billing and Cost Management ユーザーガイドの「AWS コスト配分タグを使用してコストを整理および追跡する」を参照してください。

  11. [実行設定] で、[アクティブ] を選択して CloudFormation の最適化されたオペレーション処理を有効にします。

    • 競合しないオペレーションは、デプロイ時間を短縮するために同時に実行されます。

    • 競合するオペレーションは自動的にキューに入れられ、リクエストされた順序で処理されます。

    オペレーションが実行中またはキューに入れられている間、CloudFormation ではオペレーションが競合しない場合でもすべての受信オペレーションがキューに入ります。この間は実行設定を変更できません。

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

  13. [Next] (次へ) を選択します。

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

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

    注記

    管理者アカウントにもスタックをデプロイする場合は、管理者アカウント ID を含めることができます。

  16. [リージョンの指定] で、スタックをデプロイするリージョンを選択します。

  17. [デプロイオプション] で、次の操作を行います。

    • [同時アカウントの最大数] で、同時に処理されるアカウントの数を指定します。

    • [障害耐性] には、リージョンごとに許可されるアカウント障害の最大数を指定します。この制限に達すると、オペレーションは停止し、他のリージョンには進みません。

    • [リージョンの同時実行] で、リージョンの処理方法を選択します。[順次] (一度に 1 つのリージョン) または [並列] (複数のリージョンを同時に) を選択できます。

    • [同時実行モード] で、オペレーションの実行中に同時実行がどのように動作するかを選択します。

      • [厳格な耐障害性] – 障害発生時の同時実行レベルを下げ、[障害耐性] の値を +1 の範囲内にとどめます。

      • [ソフトな障害耐性] – 障害に関係なく、指定された同時実行レベル ([同時アカウントの最大数] の値) を維持します。

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

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

  20. StackSet を作成する準備ができたら、[送信] を選択します。

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

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

このセクションの手順に従い、AWS CLI を使用して次の操作を実行します。

  • StackSet コンテナを作成します。

  • スタックインスタンスをデプロイします。

StackSet を作成するには
  1. create-stack-set コマンドを使用して、my-stackset という名前の新しい StackSet を作成します。次の例では、S3 バケットに保存されているテンプレートを使用し、値 TestKeyKeyPairName を設定するパラメータが含まれています。

    aws cloudformation create-stack-set \ --stack-set-name my-stackset \ --template-url https://s3.region-code.amazonaws.com/amzn-s3-demo-bucket/MyApp.template \ --parameters ParameterKey=KeyPairName,ParameterValue=TestKey
  2. create-stack-set コマンドが完了した後、list-stack-sets コマンドを実行して StackSet が作成されたことを確認します。新しい StackSet が表示結果で確認できます。

    aws cloudformation list-stack-sets
  3. create-stack-instances コマンドを使用して、StackSet 内にスタックをデプロイします。次の例では、2 つのリージョン (us-west-2us-east-1) にわたって 2 つの AWS アカウント (account_ID_1account_ID_2) にスタックをデプロイします。

    --operation-preferences オプションを使用して、同時アカウント処理およびその他のデプロイ設定を設定します。この例では、カウントベースの設定を使用します。MaxConcurrentCountFailureToleranceCount + 1 を超えることはできません。パーセンテージベースの設定の場合は、代わりに FailureTolerancePercentage または MaxConcurrentPercentage を使用します。

    aws cloudformation create-stack-instances \ --stack-set-name my-stackset \ --accounts account_ID_1 account_ID_2 \ --regions us-west-2 us-east-1 \ --operation-preferences MaxConcurrentCount=1,FailureToleranceCount=0

    詳細については、「AWS CloudFormation API リファレンス」の「CreateStackInstances」を参照してください。

  4. describe-stack-set-operation コマンドを使用して、スタックが正常に作成されたことを確認します。--operation-id オプションで、create-stack-instances 出力の一部として返されたオペレーション ID を指定します。

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