サービスマネージド許可を持つ CloudFormation StackSets を作成する - AWS CloudFormation

サービスマネージド許可を持つ CloudFormation StackSets を作成する

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

考慮事項

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    注記

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

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

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

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

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

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

    注記

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

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

  11. [次へ] を選択して続行し、信頼されたアクセスがまだアクティブ化になっていない場合はアクティブ化します。

  12. [デプロイオプションの設定]ページの[デプロイターゲット] で、次のいずれかを実行します。

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

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

  13. [Automatic deployment (自動デプロイ)] で、今後ターゲットの組織または OU に追加されるアカウントに StackSet が自動デプロイを行うかどうかを選択します。

  14. 自動デプロイを有効にした場合、[Account removal behavior (アカウントの削除の動作)] で、ターゲットの組織または OU からアカウントを削除するときに、スタックリソースを保持するか削除するかを選択します。

    注記

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

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

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

    • 最大同時アカウント の場合、必要に応じて最大同時アカウントを設定します。

    • 障害耐性 の場合、必要に応じて障害耐性を設定します。

    • リージョンの同時実行 では、必要に応じてリージョンの同時実行を選択します。

    • 同時実行モード では、必要に応じて同時実行モードを選択します。

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

  18. [Review (確認)] ページで、StackSets が正しいリージョンに正しいアカウントをデプロイすることを確認し、[StackSet の作成] を選択します。

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

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

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

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

--call-as DELEGATED_ADMIN

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

  1. create-stack-set CLI コマンドを使用します。

    次の例では、自動デプロイを有効にして、今後ターゲットの組織または OU に追加されるアカウントに StackSets が自動デプロイを行えるようにします。アカウントがターゲットの組織または OU から削除された場合、スタックリソースは保持されます。

    aws cloudformation create-stack-set \ --stack-set-name my-stackset \ --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
    注記

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

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

  2. 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 は組織の管理アカウントにすべてのスタックセットを返します。

  3. 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 my-stackset \ --deployment-targets OrganizationalUnitIds='["ou-rcuk-1x5j1lwo", "ou-rcuk-slr5lh0a"]' \ --regions '["us-west-2","us-east-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