ヤマムギ

growing hard days.

*

AWS複数アカウントのリソースをLambda(Python)から一括操作したくて

      2020/01/16

AWSの複数アカウント(30ちょい)のリソースをまとめて自動処理したくて。
とりあえず、上記のようなアーキテクチャにしました。

操作をする人は、少なくとも次のような人の予定なので問題ないはず。
* マネジメントコンソールにログインして、StepFunctionsステートマシンの実行ができる。
* Jsonを嫌がらない。

AWS StepFunctionsの動的並列処理が可能になってましたので、使いました。
超便利じゃないですか。

StepFunctions ステートマシン

TypeはMapにするとのこと。
InputPathでこのステートに渡す情報、というのは他のステートと同じですね。
配列処理するの対象がItemsPathですね。
Iteratorに配列処理をするStatesを書いていきます。
他に使ってませんが、MaxConcurrencyというのがあって、この配列処理の同時実行数を制御できます。
今回は最大でも30そこそこなので、一気にやってもらいます。

ステートマシン開始時の入力には、アカウントの配列を渡します。

出来ました。

Lambda関数

こちら[Lambdaでクロスアカウント] Lambda 関数で AssumeRole して他の AWS アカウントのリソースにアクセスするでやりたいことがそのまま過不足なく実現できましたので、参考というよりそのまま使わせていただきました。

  • ランタイム : Python 3.8

IAMロールのポリシーはstsのAssumeRoleを許可してます。
対象のアカウントは変動するかもなのでワイルドカードにしています。
これと、いつものAWS管理ポリシーの「AWSLambdaBasicExecutionRole」もCloudWatchLogsにログを出力するためにアタッチしています。

対象のアカウントのロール側の信頼ポリシーでは、Lamda関数を実行するアカウントを許可しています。

ソースコード
繰り返しますが、[Lambdaでクロスアカウント] Lambda 関数で AssumeRole して他の AWS アカウントのリソースにアクセスするをそのまま使っております。

スイッチロールした結果として、そのアカウントの1つ目のバケット名を返すようにしています。

出来ました〜!
さて、これで各アカウントでやりたい処理をやりたい放題です!


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

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

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

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

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

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

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

 - AWS , , , , ,

  関連記事

Amazon Q Developer for CLIでAWS Diagram MCP Serverを使ってAWSアイコンを使った図を書いてもらいました

MacにインストールしているAmazon Q Developer for CLI …

AWS Lambdaで「Process exited before completing request」

AWS lambdaで「Process exited before comple …

AWS認定SAPの執筆開始にあたって環境を構築しました

AWS認定ソリューションアーキテクトプロフェッショナル対策本の執筆開始にあたりま …

AWS Code Commitをプライベートリポジトリとして使う

GitHubでもいいんですが、アクセスキーとかパスワードとかコンフィグ系で書いて …

CodeGuru ProfilerでLambda関数(Python 3.9)のパフォーマンスを確認した

CodeGuru ProfilerでPython 3.9のLambda関数の推奨 …

Systems Manager デフォルトのホスト管理設定(Default Host Management Configuration)を確認しました

2023/2/17のアップデートAWS Systems Manager をアカウ …

Amazon API GatewayをLambda(Python)で削除する

やりたいこと 特定のAWSアカウント、特定のリージョン内のAPI Gateway …

Amazon S3アクセスポイント経由からアクション可能なポリシー

S3アクセスポイントを使うことで、複雑で長いバケットポリシーを避け、アクセスポイ …

Redmineの添付ファイルをS3に同期する

RedmineをAWS上で構築するデザインを考えていて、せっかくなので冗長化しよ …

Amazon EC2 Auto Scalingのライフサイクルフック

EC2 Auto Scalingにライフサイクルフックという機能があります。 ス …