スタックセットの作成 - AWS CloudFormation

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

スタックセットの作成

スタックセットを作成するには、AWS Management Console を使用するか AWS CLI の AWS CloudFormation コマンドを使用します。self-managed 型または service-managed 型のアクセス許可を持つスタックセットを作成できます。

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

service-managed 型のアクセス許可を使用すると、特定のリージョンで AWS Organizations によって管理されているアカウントにスタックインスタンスをデプロイできます。このモデルでは、必要な IAM ロールを作成する必要はありません。ユーザーに代わって IAM StackSets ロールを作成します。今後ターゲット組織または組織単位 (OU) に追加されるアカウントへの自動デプロイを有効にすることもできます。自動デプロイを有効にすると、ターゲット組織または OU からスタックインスタンスが削除された場合、StackSetsアカウントからスタックインスタンスを自動的に削除します。

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

AWS Management Console を使用してセルフマネージド型のアクセス許可を持つスタックセットを作成する

  1. AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation) を開きます。

  2. ナビゲーションペインで、[StackSets] を選択します。

  3. StackSetsページの上部にある [作成] を選択しますStackSet。

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

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

    
                                StackSetsAWS Configサンプル有効化テンプレート
  6. StackSet詳細を指定」ページで、次の情報を入力します。

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

    2. プロンプトが表示され、AWS Config に使用されるパラメータの値を指定します。これらのパラメータに関する詳細については、「AWS Config デベロッパーガイド」の「コンソールによる AWS Config の設定」を参照してください。このウォークスルーでは、すべての AWS Config パラメータをデフォルト設定のままにしておきます。

    3. TopicARN とパラメータを使用して、ログの内容に基づいて Amazon Simple Notification Service (SNS) の更新をメールで設定できます。NotificationEmailこのウォークスルーでは、Amazon SNS の更新は設定しません。

    4. および頻度パラメータを使用してDeliveryChannelNameアップデートと通知の配信チャネルを設定できます。AWS Config の配信チャネルでの詳細については、「AWS Config デベロッパーガイド」の「Managing the delivery channel」(配信チャネルの管理) を参照してください。このウォークスルーでは、この領域はデフォルト設定のままにします。

  7. AWS Config のパラメータの指定が完了したら、[次へ] を選択します。

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

    [Permissions] (アクセス許可) は指定しないでください。

  9. 実行設定」で「アクティブ」を選択すると、StackSets競合しない操作は同時に実行され、競合する操作はキューに入れられます。StackSets競合する操作が終了すると、キューに入っている操作を要求順に開始します。

    注記

    実行中またはキューに入っている操作が既に存在する場合、入力された操作が競合していなくても、StackSetsすべての入力操作をキューに入れます。

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

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

  11. [Set deployment options (デプロイオプションの設定)] ページで、スタックセットのスタックをデプロイしたいアカウントおよびリージョンを提供してください。

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

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

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

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

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

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

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

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

    4. リージョンの同時実行:

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

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

    
                                [Set Deployment Options (デプロイオプションの設定)] ページ
  12. [確認] ページで、設定とスタックセットのプロパティを確認します。変更するには、プロパティを変更する領域で [編集] を選択します。スタックセットを作成する前に、[CAPABILITY] 領域のチェックボックスをオンにし、スタックセットで作成しているリソースの一部が新しい IAM リソースやアクセス権限を必要とする場合があることを認識します。必要になる可能性のある権限の詳細については、本ガイドの「AWSCloudFormationテンプレート内の IAM リソースの確認」を参照してください。スタックセットを作成する準備ができたら、[Submit] (送信) を選択します。

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

    
                                StackSets詳細ページの「操作」タブ

AWS CLI を使用してセルフマネージド型のアクセス許可を持つスタックセットを作成する

AWS CLI コマンドを使用してスタックセットを作成する場合は、2 つの異なるコマンドを実行します。create-stack-set でテンプレートをアップロードしてスタックセットコンテナを作成し、create-stack-instances でスタックセット内にスタックを作成します。まず AWS CLI コマンド create-stack-set を実行し、AWS Config を有効にする AWS CloudFormation テンプレートのサンプルをアップロードし、それからスタックセット作成を開始します。

  1. AWS CLI を開きます。

  2. 以下のコマンドを実行します。

    --template-url パラメータには、テンプレートを保存する Amazon S3 バケットの URL を入力します。このウォークスルーでは、my-awsconfig-stackset パラメータの値として --stack-set-name を使用します。また、StackSets競合しない操作を同時に実行し、--managed-execution競合する操作をキューに入れるようにもアクティブ化します。StackSets競合する操作が終了すると、キューに入っている操作を要求順に開始します。

    注記

    実行中またはキューに入っている操作が既に存在する場合、入力された操作が競合していなくても、StackSetsすべての入力操作をキューに入れます。

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

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

    aws cloudformation list-stack-sets
  4. create-stack-instances AWS CLI コマンドを実行して、スタックセットにスタックインスタンスを追加します。このウォークスルーでは、us-west-2 パラメータの値として us-east-1 および --regions を使用します。

    次の例で示している通り、FailureToleranceCount パラメータで 0MaxConcurrentCount に、1--operation-preferences に設定することで、障害耐性および同時アカウントの最大数を設定します。代わりに割合を適用するには、FailureTolerancePercentage または MaxConcurrentPercentage を使用します。このウォークスルーでは、割合ではなくカウントを使用します。

    注記

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

    aws cloudformation create-stack-instances \ --stack-set-name my-awsconfig-stackset \ --accounts '["account_ID_1","account_ID_2"]' \ --regions '["region_1","region_2"]' \ --operation-preferences FailureToleranceCount=0,MaxConcurrentCount=1
    注記

    StackSetオペレーションにおけるインスタンス・デプロイメントの同時実行性は、FailureToleranceCount-MaxConcurrentCountの値に依存し、最大でも1つ多いほどです。FailureToleranceCount

    重要

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

  5. スタックイスタンスが正常に作成されたことを確認します。DescribeStackSetOperation を、ステップ 4 の出力の一部として返される operation-id と実行します。

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

サービスマネージド型のアクセス許可を持つスタックセットの作成

サービスマネージド型のアクセス許可を持つスタックセットを作成する際の考慮事項

サービスマネージド型のアクセス許可を持つスタックセットを作成する前に、次の点を考慮してください。

  • サービスマネージド型のアクセス許可を持つスタックセットは、委任された管理者によって作成されたスタックセットを含む、管理アカウントに作成されます。

  • スタックセットは、組織全体または指定した組織単位 (OU) をターゲットにすることができます。スタックセットが組織をターゲットにする場合、組織内のすべての OU のすべてのアカウントもターゲットとなります。スタックセットが指定した OU をターゲットにする場合、その OU 内のすべてのアカウントもターゲットとなります。

  • スタックセットが親 OU をターゲットにする場合、スタックセットは子 OU もターゲットにします。

  • 複数のスタックセットで同じ組織または OU をターゲットにすることができます。

  • スタックセットは組織外のアカウントをターゲットにすることはできません。

  • スタックセットはネストされたスタックをデプロイできません。

  • StackSets管理アカウントが組織内または組織内の OU にある場合でも、スタックインスタンスを組織の管理アカウントにデプロイしません。

  • 自動デプロイはスタックセットレベルで設定されます。OU、アカウント、リージョンを選択して自動デプロイを調整することはできません。

  • 管理アカウントへのサインインに使用する IAM プリンシパルエンティティ (ユーザー、ロール、またはグループ) の権限によって、デプロイを許可されているかどうかが決まります。StackSets組織にデプロイするアクセス許可を付与する IAM ポリシーの例については、「サービスマネージド型のスタックセットのアクセス許可を付与するサンプルポリシー」を参照してください。

  • 委任された管理者は、組織内のアカウントにデプロイするための完全なアクセス許可を持っています。管理アカウントでは、特定の OU にデプロイしたり、特定のスタックセットの操作を実行したりする、委任された管理者のアクセス許可を制限することはできません。

AWS CloudFormation コンソールを使用してサービスマネージド型のアクセス許可を持つスタックセットを作成する

  1. AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation) を開きます。

  2. ナビゲーションペインで、[StackSets] を選択します。

  3. StackSetsページの上部にある [作成] を選択しますStackSet。

  4. [Prepare template (テンプレートの準備)] の [Template is ready (テンプレートの準備ができています)] を選択します。

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

  6. [StackSet詳細の指定] ページで、スタックセットの名前を入力し、任意のパラメータを指定して、[次へ] を選択します。

  7. StackSet設定オプションページのタグ」で、スタック内のリソースに適用するタグを指定します。

  8. [アクセス権限] で、[Service-managed permissions (サービスマネージド型のアクセス許可)] を選択します。

    AWS Organizations との信頼されたアクセスが無効になっている場合は、バナーが表示されます。サービスマネージド型のアクセス許可を持つスタックセットを作成または更新するには、信頼されたアクセスが必要です。組織の管理アカウントの管理者だけが権限を持っていますで信頼できるアクセスを有効にする AWS Organizations

    
                                トラステッドアクセスバナーを有効にします。
  9. 実行設定」で「アクティブ」を選択すると、StackSets競合しない操作は同時に実行され、競合する操作はキューに入れられます。StackSets競合する操作が終了すると、キューに入っている操作を要求順に開始します。

    注記

    実行中またはキューに入っている操作が既に存在する場合、入力された操作が競合していなくても、StackSetsすべての入力操作をキューに入れます。

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

  10. [次へ] を選択して続行し、まだ有効になっていない場合はトラステッドアクセスを有効にします。

  11. [Set deployment options (デプロイオプションの設定)] ページの [ Deployment targets (デプロイターゲット)] で、デプロイ先の組織内のアカウントを選択します。

    • 組織内のすべてのアカウントにデプロイするには、[Deploy to organization (組織にデプロイ)] を選択します。

      
                                        組織内のすべてのアカウントにスタックインスタンスをデプロイします。
    • 特定の OU のすべてのアカウントにデプロイするには、[Deploy to organizational units (OUs) (組織単位 (OU) にデプロイ)] を選択します。[Add an OU (OU の追加)] を選択し、テキストボックスにターゲット OU ID を貼り付けます。新しいターゲット OU ごとに繰り返します。

      
                                        組織の一部の OU 内のすべてのアカウントにスタックインスタンスをデプロイします。
  12. [自動展開] で、今後対象組織または OU StackSets に追加されるアカウントに自動的に展開するかどうかを選択します。

    
                                サービスマネージド型のアクセス許可を持つスタックセットの自動デプロイ設定。
  13. 自動デプロイを有効にした場合、[Account removal behavior (アカウントの削除の動作)] で、ターゲットの組織または OU からアカウントを削除するときに、スタックリソースを保持するか削除するかを選択します。

    
                                サービスマネージド型のアクセス許可を持つスタックセットのアカウントの削除の動作設定。
    注記

    [Retain stacks (スタックの保持)] を選択すると、スタックインスタンスはスタックセットから削除されますが、スタックとそれに関連付けられたリソースは保持されます。リソースは現在の状態のままですが、スタックセットには含まれなくなります。

  14. [Deployment Region (デプロイリージョン)] で、スタックインスタンスをデプロイするリージョンを選択します。[Next] (次へ) を選択します。

  15. レビューページで、StackSetsそれが正しいリージョンの正しいアカウントにデプロイされることを確認してから、「作成」を選択しますStackSet。

StackSet詳細ページが開きます。スタックセット内のスタックの作成の進行状況とステータスを表示できます。

AWS CLI を使用してサービスマネージド型のアクセス許可を持つスタックセットを作成する

AWS CLI を使用してスタックセットを作成する場合、2 つの個別のコマンドを実行します。create-stack-set では、テンプレートをアップロードし、スタックセットコンテナを作成し、自動デプロイを管理します。create-stack-instances では、特定のターゲットアカウントにスタックインスタンスを作成します。

委任された管理者として行動する場合は、StackSets コマンドを実行するたびに --call-as パラメータを DELEGATED_ADMIN に設定する必要があります。

--call-as DELEGATED_ADMIN

委任された管理者によって作成されたスタックセットは、組織の管理アカウントに作成されます。

  1. AWS CLI を開きます。

  2. create-stack-set コマンドを実行します。

    次の例では、自動デプロイを有効にして、今後ターゲットの組織または OU に追加されるアカウントに StackSets が自動デプロイを行えるようにします。アカウントがターゲットの組織または OU から削除された場合、スタックリソースは保持されます。また、StackSets競合しない操作を同時に実行し、--managed-execution競合する操作をキューに入れるようにもアクティブ化します。StackSets競合する操作が終了すると、キューに入っている操作を要求順に開始します。

    注記

    実行中またはキューに入っている操作が既に存在する場合、入力された操作が競合していなくても、StackSetsすべての入力操作をキューに入れます。

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

    aws cloudformation create-stack-set \ --stack-set-name StackSet_myApp \ --template-url https://s3.us-west-2.amazonaws.com/cloudformation-templates-us-west-2/MyApp.template \ --permission-model SERVICE_MANAGED \ --auto-deployment Enabled=true,RetainStacksOnAccountRemoval=true
  3. create-stack-set コマンドが完了したら、list-stack-sets コマンドを実行してスタックセットが作成されたことを確認します。新しいスタックセットが結果に表示されます。

    aws cloudformation list-stack-sets
    • メンバーアカウントへのサインイン時に --call-as パラメータを DELEGATED_ADMIN に設定した場合、list-stack-sets は組織の 管理アカウント にサービスマネージド型のアクセス許可を持つすべてのスタックセットを返します。

    • AWS アカウントにサインインしているときに --call-as パラメータを SELF に設定した場合、list-stack-sets は AWS アカウント内のすべてのセルフマネージド型のスタックセットを返します。

    • 組織の 管理アカウント へのサインイン時に --call-as パラメータを SELF に設定した場合、list-stack-sets は組織の 管理アカウント にすべてのスタックセットを返します。

  4. create-stack-instances コマンドを実行して、スタックセットにスタックインスタンスを追加します。--deployment-targets パラメータには、組織内のすべてのアカウントにデプロイする組織のルート ID を指定するか、組織の OU 内のすべてのアカウントにデプロイする OU ID を指定します。この例では、ou-rcuk-1x5j1lwo および ou-rcuk-slr5lh0a ID で OU を指定します。

    aws cloudformation create-stack-instances --stack-set-name StackSet_myApp --deployment-targets OrganizationalUnitIds='["ou-rcuk-1x5j1lwo", "ou-rcuk-slr5lh0a"]' --regions '["eu-west-1"]'
    重要

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

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