この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
CloudFormationでOrganizationsリソースが管理できるようになるアップデートがあったのでAWSアカウントを作成してみました。
CloudFormationで出来るようになったこと
今回のアップデートで以下の3点ができるようになりました。
- AWS::Organizations::Account
- AWS::Organizations::AccountではCreateAccount APIを使用してアカウントの作成を行うことができます。
- AWS::Organizations::OrganizationalUnit
- AWS::Organizations::OrganizationalUnitではOUの作成を行うことができます。
- AWS::Organizations::Policy
- AWS::Organizations::PolicyではOrganizationsポリシー(SCPやバックアップポリシーなど)の作成を行うことができます。
CloudFormationでアカウントを作成してみた
構文は以下のようになっています。
AWS::Organizations::Account
Type: AWS::Organizations::Account
Properties:
AccountName: String
Email: String
ParentIds:
- String
RoleName: String
Tags:
- Tag
指定できるパラメータは以下になります。
パラメータ | 必須有無 | 説明 |
---|---|---|
AccountName | 必須 | AWSアカウント作成時に付けられる名前 |
必須 | AWSアカウントに紐づくメールアドレス | |
ParentIds | オプション | AWSアカウントを配置するOUのID 指定しない場合はルートOUに配置されます |
RoleName | オプション | OrganizationsでAWSアカウントを作成した際に自動で作成されるIAMロールの名前 指定しない場合は「OrganizationAccountAccessRole」という名前で作成されます |
Tags | オプション | AWSアカウントに付けるタグ |
今回作成したテンプレートは以下になります。
AWS::Organizations::AccountのDeletionPolicyはデフォルトだとRetainなのでDeleteを指定してスタック削除時に解約するようにします。
※今回は検証のためにDeleteにしています。
解約しても90日以内でしたら普及可能です。
解約した AWS アカウントを再開することはできますか?
AWSTemplateFormatVersion: "2010-09-09"
Description: Organizations Stack
Parameters:
# ------------------------------------------------------------#
# Parameters
# ------------------------------------------------------------#
AccountName:
Type: String
Email:
Type: String
ParentIds:
Type: String
Resources:
# ------------------------------------------------------------#
# Create Account
# ------------------------------------------------------------#
Account:
Type: AWS::Organizations::Account
DeletionPolicy: Delete
Properties:
AccountName: !Ref AccountName
Email: !Ref Email
ParentIds:
- !Ref ParentIds
Outputs:
# ------------------------------------------------------------#
# Outputs
# ------------------------------------------------------------#
AccountID:
Value: !Ref Account
Export:
Name: AccountID
CloudFormationの実行はAWS CLIで行いました。
以下のコマンドで実行します。
aws cloudformation create-stack --stack-name CloudFormationスタック名 --template-body file://CloudFormationテンプレートファイル名 --parameters ParameterKey=AccountName,ParameterValue=AWSアカウント名 ParameterKey=Email,ParameterValue=メールアドレス ParameterKey=ParentIds,ParameterValue=配置するOUのID
スタックの作成が完了したら以下のコマンドでAWSアカウントが作成されているか確認します。
aws organizations list-accounts
作成したアカウントのStatusがACTIVEになっていれば利用可能です。
さいごに
検証用AWSアカウントの作成はAWS CLIでスクリプトを作成しようと思っていましたが、今回のアップデートで不要になったのでかなりありがたいです。