ヤマムギ

growing hard days.

*

AWS Organizationsでアカウントを50作って指定したOUに移動するスクリプト

   

AWS Organizationsでアカウントを50個作る必要がありましたので、Pythonスクリプトで実行しました。
OUに移動するまでを自動化しました。

CLIで実行した場合の課題

アカウント作成の同時実行数が5ですので、作成完了を待たずに6以上になるとリクエスト拒否になります。
OUへの移動もしたいので、作成完了を待つ必要がありましたので、Python SDKのboto3で作成して実行しました。
GitHubにも置いてます。

Pythonのコード

create_accountの後に、move_account してOUに移動したいのですが、create_account直後はまだアカウントIDもないし、作成も完了してないのでmove_accountできません。

そこでOrganizationsのWaiterを探します。
Organizationsには、Clientにget_waiterはありますが、そこで指定するWaiterのクラスはありません。

Waiterが用意されている場合は次のコードでも確認できるのですが、結果の配列は空でした。

検索してたら、create-account.pyに辿り着きまして、カスタムでWaiterを作成されてたので、そのまま使わせていただきました。
こうやってWaiterを作るのですね。

waiter_configでポーリング間隔や確認回数を指定して、CreateAccountStatus.StateがSUCCEEDEDになったらsuccessで、IN_PROGRESSの場合はretry、FAILEDはfailureとしてます。
waiter_configでモデルを定義して、create_waiter_with_clientでOrganizations Clientに関連付けてます。

create_accountレスポンスのCreateAccountStatusのリクエストIDに対してWaiterがポーリングして、successになるまで2秒ごとの再試行を20回繰り返して待ってくれました。

次にアカウントIDの取得ですが、ステータスが更新されたCreateAccountStatusをdescribe_create_account_statusにより現時点の情報を参照して取得しました。
これで無事OUにmove_accountできました。


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第2版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - AWS

ad

ad

  関連記事

AWS Lambda(Python3.7)でPandocを実行する際にCSSもLayerから読み込む

Pandocで必要そうなオプションを確認しておく 先日の「AWS Lambda( …

AWS Lambda Layersのアーカイブファイルをダウンロードする

Cloud9にLambda Layersをダウンロードしたかったので検索してみた …

Amazon Aurora Serverless 課金確認

Amazon Aurora Serverlessを使い始めてみましたの記事で書い …

Amazon Timestreamのサンプルデータベースを起動しました

マネジメントコンソールTimestreamにアクセスして、[データベースを作成] …

百聞は一見にしかず!AWSセルフペースラボの無料ラボ!

※2019年5月12日現在に試してみた記録です。 AWSセルフペースラボとは A …

Amazon Linux2のPHPを7.2から7.3へアップデートしました

WordPressのサイトヘルスの推奨に従って使っていないテーマを削除したの推奨 …

ブログのアーキテクチャをコストベースで見直しました

当ブログはAWSで構築しています。 アーキテクチャをコストを最重視して見直しまし …

php-fpm で Out of memoryが発生した際にメール通知する(AWS CloudWatch , Amazon SNS)

AWS CloudWatch LogsエージェントでAmazon EC2上のNg …

Rocket.ChatをAmazon EC2 Ubuntuサーバーで起動

こちらRocket.Chatを1行でAWS上に導入を参照させていただきました。 …

Mountpoint for Amazon S3を試しました

このブログでは、画像などの配信にS3を使用しています。 WordPressのプラ …