0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS組織アカウント下でHands-On用の子アカウントを大量に作る

Last updated at Posted at 2023-04-26

社内でAWSトレーニングやるから、AWS組織アカウント下で参加者が使える
子アカウントを大量に作れるようにしとけ、というお達しをいただきましたので
備忘録ついでに記事にしました。
以下手順を淡々と..

親(Payer)アカウントにて下ごしらえ

① Payerアカウントにスクリプト実行用のIAMuserアカウント/アクセスキーを作成します。コンソールは使わないので利用権限OFFでOK。

PayerアカウントのEC2とかでスクリプト実行するならアクセスキーなんぞ使わずRoleアタッチとかでOKですし
Cloudshell で後述のスクリプトを実行でももちろんOK

② ①で作成したアクセスキーをスクリプト実行PCに新規プロファイル設定

$ cat ~/.aws/config
[profile demoaccount]
region = ap-northeast-1

$ cat ~/.aws/credentials
[demoaccount]
aws_access_key_id = AKIxxxxxxxxxxxxJO2
aws_secret_access_key = jOoxxxxxxxxxxxxxxxxxxxxxt4xBU0

子アカウント作成してみる

③スクリプト作成

アカウント作成用スクリプトはこちら。お好みでbash でも pythonでも修正してどうぞ。

$ cat CreateDemoAccount.sh
#!/bin/csh
set PROFILE=demoaccount
set NUMBER=001
set REGION=ap-northeast-1
set EMAIL_ADDRESS=aws_demo+${NUMBER}@xxx.co.jp
set ACCOUNT_NAME="aws_demo_${NUMBER}"
set ROLE_NAME="DemoAccountRole"
 organizations create-account \
   --profile ${PROFILE}\
   --region ${REGION}\
   --email ${EMAIL_ADDRESS} \
   --account-name ${ACCOUNT_NAME} \
   --role-name ${ROLE_NAME}

メールアドレスは実際使わないのでダミーでもいいですけど、本作業用のものを用意するのをお薦めします。

④ 実行

実行すると、IN_PROGRESS ステータスで新規アカウントが発行されているのが確認できます。

$ ./CreateDemoAccount.sh
{
   "CreateAccountStatus": {
       "Id": "car-3d6431xxxxxxxxxxxxxxd66e24cb",
       "AccountName": "aws_demo_001",
       "State": "IN_PROGRESS",
       "RequestedTimestamp": "2023-04-26T16:09:09.781000+09:00"
   }
}

出来上がり確認。
image.png

たくさん作る時には③のスクリプトで $NUMBER を通番ループで回してやればOK

親アカウントにSwitchRole用のIAMuser(参加者用ID)を作ろう

作成したアカウントにはIAMuserはいないのでSwitchRoleするためのIAMuserを
親アカウント側に用意しなければなりません。

⑤IAMグループHandsOnUsersを作成します
さらにInlineRule にてAssumeRole をアタッチします。
image.png

⑥ IAMuser demouser01を作成, グループ HandsOnUsers に追加
※これも大量に作る際はスクリプトで行えますがここでは説明を割愛

⑦ demouser01 で改めてAWSコンソールにログインし直し、④で確認したAWS account 番号でSwitchRole 実行
image.png

⑧ SwitchRole成功を確認
image.png
これで参加者にHands-on用Sandboxを提供できます!

補足など

アカウント削除をCLIでやるなら以下の通り

% aws organizations close-account --profile demoaccount --account-id <対象アカウント>

実行すると何も応答無しで終了しますが、コンソール上で見ると
image.png
うーん怖いw

誤操作の可能性を考えるとかなり怖いので、都度アカウント閉じるなら
可能な限り本番利用とは別にトレーニング用Payerアカウントを用意して運用すべきでしょう。

ただ、コマンドラインヘルプ見ると気になる記載がある。
image.png
毎月2-30アカウント作ってHands-on後にごっそり削除ってのは通常ではできないのかもしれない。
こっちはサポートに相談かな..

追記:AWSサポートに確認したところ最低10アカウント/月までは削除できるそうです

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?