LoginSignup
3
0

More than 3 years have passed since last update.

【AWS】CloudFormation スタックを別アカウントで利用する方法

Posted at

CloudFormationのスタック共有

あるAWSアカウントで作成したスタックを別のアカウントに共有したくなった場合の手順です。
スタックセットで共有する事で、別アカウントにも自動でスタックが作成されます。
※親でスタックセットを作成したら、すぐに、子でスタックの作成が始まります。

設定の流れ

  1. スタックセットの共有を行えるように設定
  2. スタックセットの作成

スタックセットを共有する側の設定

スタックを共有(提供)する側の設定を行います。
下記のyamlファイルを作成します。
ファイル名はAWSCloudFormationStackSetAdministrationRole.ymlとします。

AWSCloudFormationStackSetAdministrationRole.yml
AWSTemplateFormatVersion: 2010-09-09
Description: Configure the AWSCloudFormationStackSetAdministrationRole to enable use of AWS CloudFormation StackSets.

Resources:
  AdministrationRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: AWSCloudFormationStackSetAdministrationRole
      AssumeRolePolicyDocument:
        Version: 2012-10-17
        Statement:
          - Effect: Allow
            Principal:
              Service: cloudformation.amazonaws.com
            Action:
              - sts:AssumeRole
      Path: /
      Policies:
        - PolicyName: AssumeRole-AWSCloudFormationStackSetExecutionRole
          PolicyDocument:
            Version: 2012-10-17
            Statement:
              - Effect: Allow
                Action:
                  - sts:AssumeRole
                Resource:
                  - "arn:aws:iam::*:role/AWSCloudFormationStackSetExecutionRole"

上記のyamlを利用して、スタックの作成を行うと、IAMロールが作成されます。

スタックを受け取る側の設定

スタックを受け取る側の設定のために、下記のymalファイルを作成します。
ファイル名は、AWSCloudFormationStackSetExecutionRole.yml

AWSCloudFormationStackSetExecutionRole.yml
AWSTemplateFormatVersion: 2010-09-09
Description: Configure the AWSCloudFormationStackSetExecutionRole to enable use of your account as a target account in AWS CloudFormation StackSets.

Parameters:
  AdministratorAccountId:
    Type: String
    Description: AWS Account Id of the administrator account (the account in which StackSets will be created).
    MaxLength: 12
    MinLength: 12

Resources:
  ExecutionRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: AWSCloudFormationStackSetExecutionRole
      AssumeRolePolicyDocument:
        Version: 2012-10-17
        Statement:
          - Effect: Allow
            Principal:
              AWS:
                - !Ref AdministratorAccountId
            Action:
              - sts:AssumeRole
      Path: /
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/AdministratorAccess

スタックの作成を行うと、パラメータの欄で、AdministratorAccountIdを聞かれるので、先ほど、共有設定を行ったアカウントのIDを選択します。

スタックセットを作成

CloudFormationの左のメニューからStackSetsを選択します。

設定項目を進んでいくと、デプロイのオプションページにたどり着きます。
そこで、「アカウント」の欄があるので、スタックをアカウントにデプロイを選択します。
アカウントが大量にある場合は、.csvを選択する事が可能です。
また、リージョンを選択する事も可能です。
※複数リージョンでも利用できるようにテンプレートを作成する必要があります。

確認

スタックセットを作成したら、共有指定したアカウントで、スタックがすぐに作成されます。

まとめ

スタックセットを利用する事で、複数アカウントで簡単に共有する事ができるので、複数アカウントがある場合は、積極的に利用していくべき機能だと思いました。
ますます、CloudFormationが好きになってしまいました!!

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0