👥

CloudFormationテンプレートでAWSアカウントを作成する

2023/05/30に公開

CloudFormationでAWSアカウントを作成する

こんにちわ。

DevelopersIO BASECAMP一期の加藤です。

今回はCloudformationテンプレートを使ってAWSアカウントを作成してみます。

ドキュメントはこちら


テンプレート

パラメータ値:「AccountName」と「Email」はご自身の希望される値を、「ParentId」はorganizationに移動し「r-」から始まるIdを見つけて入力ください。
「RoleName」は希望がなければデフォルトが「OrganizationAccountAccessRole」です。

create_aws_account.yml
AWSTemplateFormatVersion: "2010-09-09"

Parameters: 

  AccountName: 
    Type: String

  Email: 
    Type: String

  ParentId: 
    Type: String
    Default: r-xxxx

  RoleName:
    Type: String
    Default: OrganizationAccountAccessRole

Resources: 
  # ------------------------------------------------------------#
  # Organizations
  # ------------------------------------------------------------#
  # Account
  Account:
    DeletionPolicy: Retain # Default 
    Type: AWS::Organizations::Account
    Properties: 
      AccountName: !Ref AccountName
      Email: !Ref Email
      ParentIds: 
        - !Ref ParentId
      RoleName: !Ref RoleName

結果

無事作成出来ました。


DeletionPolicyについて

DeletionPolicyはデフォルトでは「Retain」ですが、確認の為に「Delete」を選択してスタックを削除してみました。

「スタックの削除」→「閉鎖要求」が行われている事が確認出来ました。
(アカウントは90日間の猶予期間有)


複数アカウント作成について

単一のテンプレートに複数のアカウントを含める場合は、 DependsOnアカウントが順番に作成されるように、各アカウント リソース タイプで属性を使用する必要があります。複数のアカウントを同時に作成すると、組織はエラーを返し、スタック操作は失敗します。

と記載があります。

実際DependsOnで依存関係(作成順序)を付けず並列で作成させても問題は起きてくれませんでした。(本当はエラー文が欲しかったのですが、どういう条件でエラーが起きるかは拾えませんでした。)


物理ID=アカウントID

スタックの「リソース」タブを確認すると物理IDにはアカウントIDが表示されていました。


終わりに

私は経験がありませんが、一度に複数アカウントを作成して、不要になったら削除してをテンプレートで行えるのは便利かもしれません。

どこまでをテンプレートで作成するのが良いのかなど、機会があれば実際に運用されている方に伺ってみたいです。

短い内容ですが、お読みいただき有難うございました。

デベキャン

Discussion