ヤマムギ

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認定クラウドプラクティショナー 改訂第3版」という本を書きました。

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

「AWS教科書 AWS認定デベロッパーアソシエイト テキスト&問題集 」という本を書きました。

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

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

 - AWS

  関連記事

AWS ControlTowerで既存アカウントをまとめて追加

AWS Organizationsに新たに招待したアカウントをAWS Contr …

Organizations対応のAWS CloudTrailのAthenaテーブルでPartition Projectionを使用しました

パーティション向けのAlterテーブルの定期実行が面倒だと思っていたら、Part …

Amazon RDS MySQLでCSVをload data するときに「Access denied」発生

超小ネタです。 AWSのデータベースサービスの Amazon RDSのMySQL …

Transit GatewayポリシーテーブルでCloud WANのコアネットワークに接続しました

「ポリシーテーブルってなんですか?」のご質問をいただいたので設定してみました。 …

Amazon WorkSpaces Web Accessを有効化する

仕事がら、Amazon WorkSpacesをディレクトリも含めて一時的にセット …

ヤマムギ vol.7 AWSアカウント作成 & 最初の設定ハンズオン 手順

ヤマムギとは from Mitsuhiro Yamashita 「AWSではじめ …

AWS Service Catalogポートフォリオを他のアカウントと共有する

AWS Service Catalogチュートリアルで作成したポートフォリオの他 …

EKS「現在の IAM プリンシパルは、このクラスター上の Kubernetes オブジェクトにアクセスできません」

マネジメントコンソールでクラスターのオブジェクトを見ようと、リソースの名前空間や …

AWS OrganizationsでAWSアカウントを25作りたいのでPythonで作った

AWSアカウントを25作る必要があったので、Lambda Python 3.7で …

Route 53サブドメインホストゾーンを作成したら、元のホストゾーンにNSレコードを作成する自動化

ハンズオン環境でRoute 53のホストゾーンを触ってほしい際に、サブドメインを …