メニュー
AWS CloudFormation
ユーザーガイド (API Version 2010-05-15)

前提条件

AWS CloudFormation StackSets の使用を開始するには、AWS CloudFormation がどのように機能するかを理解し、AWS CloudFormation テンプレートやスタックでの作業に多少の経験があることが望ましいです。

最初のスタックセットの作成を開始する前に、AWS アカウントで次のリソースおよびアクセス権限を作成している必要があります。

  • どの AWS アカウントが管理者アカウントであるかを判断します。スタックセットはこのアカウントで作成されます。ターゲットアカウントは、スタックセットに属する個別のスタックを作成するアカウントです。

  • このセクションの手順に従って、適切な管理者とターゲットアカウントの信頼関係をセットアップするロールを作成します。ターゲットアカウントで作成したロール (ステップ 2) が、AWS CloudFormation がテンプレートで定義したリソースを使用するアクセス権限を持っていることを確認してください。

アカウントのセットアップ

開始するには、アカウント間の信頼関係を作るよう設定されたサービスロールを管理者アカウントとターゲットアカウントが持ち、テンプレートで記述されたリソースを作成および管理するためのアクセス権限をターゲットアカウントに付与する必要があります。

必要なサービスロールのセットアップ

  1. 管理者アカウントで、AWSCloudFormationStackSetAdministrationRole という名前の IAM ロールを作成します。そのためには、以下の AWS CloudFormation テンプレートからスタックを作成します。このテンプレートは https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/AWSCloudFormationStackSetAdministrationRole.yml でオンラインで入手できます。このテンプレートで作成されたロールは、管理者アカウントで次のポリシーを有効にします。

    Copy
    { "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::*:role/AWSCloudFormationStackSetExecutionRole" ], "Effect": "Allow" } ] }

    次の信頼関係は、前のテンプレートによって作成されています。

    Copy
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudformation.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. 各ターゲットアカウントで、管理者アカウントを信頼する AWSCloudFormationStackSetExecutionRole という名前のサービスロールを作成します。そのためには、以下の AWS CloudFormation テンプレートからスタックを作成します。このテンプレートは https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/AWSCloudFormationStackSetExecutionRole.yml でオンラインで入手できます。このテンプレートを使用すると、ターゲットアカウントと信頼関係を持っている必要がある管理者アカウントの名前を指定するよう求められます。

    重要

    このテンプレートは管理者アクセス権を付与することに注意してください。テンプレートを使用してターゲットアカウントの実行ロールを作成した後は、ポリシーステートメントのアクセス許可を、StackSets を使用して作成中のリソースのタイプに絞り込む必要があります。

    ターゲットアカウントサービスロールは、AWS CloudFormation テンプレートで指定されたすべてのオペレーションを実行するアクセス権限を必要とします。たとえば、テンプレートが S3 バケットを作成している場合、S3 の新しいオブジェクトを作成するためのアクセス権限が必要です。ターゲットアカウントは常に完全な AWS CloudFormation アクセス権限を必要とします。これには、スタックを作成、更新、削除、および記述するためのアクセス権限が含まれます。このテンプレートで作成されたロールは、ターゲットアカウントで次のポリシーを有効にします。

    Copy
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "*", "Resource": "*" } ] }

    以下の例に、StackSets が機能するための最低限のアクセス許可を持つポリシーステートメントを示します。AWS CloudFormation 以外のサービスのリソースを使用するターゲットアカウントでスタックを作成するには、それらのサービスアクションおよびリソースを、各ターゲットアカウントの AWSCloudFormationStackSetExecutionRole ポリシーステートメントに追加する必要があります。

    Copy
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:*", "s3:*", "sns:*" ], "Resource": "*" } ] }

    次の信頼関係は、テンプレートによって作成されています。管理者アカウントの ID は、admin_account_id をして表示されます。

    Copy
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::admin_account_id:root" }, "Action": "sts:AssumeRole" } ] }

    既存のターゲットアカウントの実行ロールの信頼関係を設定して、管理者アカウントで特定のロールを信頼できます。管理者アカウントでロールを削除し、代わりとなる新しいロールを作成する場合、新しい管理者アカウントロールでターゲットアカウントの信頼関係を設定する必要があります。これは、前の例の admin_account_id によって表されます。

このページの内容: