CloudFormationテンプレートでAWSアカウントを作成する
CloudFormationでAWSアカウントを作成する
こんにちわ。
DevelopersIO BASECAMP一期の加藤です。
今回はCloudformationテンプレートを使ってAWSアカウントを作成してみます。
ドキュメントはこちら
テンプレート
パラメータ値:「AccountName」と「Email」はご自身の希望される値を、「ParentId」はorganizationに移動し「r-」から始まるIdを見つけて入力ください。
「RoleName」は希望がなければデフォルトが「OrganizationAccountAccessRole」です。
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