ヤマムギ

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つ目のバケット名を返すようにしています。

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


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

【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。

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

i

【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。

 - AWS , , , , ,

ad

ad

  関連記事

AWS Toolkit for Eclipseをセットアップ(2021年版)

AWS Toolkit for Eclipseをセットアップするで6年前に書いて …

T3.nanoで仮想メモリ割当をユーザーデータで実行する

T3.nanoはメモリがだいたい500MBです。 実行する処理によってはメモリエ …

Selenium, Headless ChromeとAWS Lambdaで夜な夜なスクレイピング

このようなアーキテクチャで、Alexaスキルの開発を進めていまして、元となる情報 …

slackのbotにWikipediaを調べてもらう(Python on AWS Lambda + API Gateway)

slackのbotに少しでも役に立ってもらおうと、Wikipediaを調べてもら …

ads.txtをS3に配置してCloudFrontで設定する

ads.txtのダウンロード ads.txt設置してねってメールが来てました。 …

5分でAlexaスキルを作る

「JAWS-UG Osaka 第22回勉強会 東西の中の人が語る!!! Micr …

TwilioからのリクエストをAPI Gateway+LambdaでTwimlを返して処理する

Twilioで着信した時のリクエスト先としてTwimlをWebサーバやS3で用意 …

AWS LambdaでChrome HeadlessドライバをAWS Lambda Layersから使う

この記事はSelenium/Appium Advent Calendar 201 …

AWS DeepLens開封の儀

去年(2019年)7月にamazon.co.jpでDeepLens買えますやんっ …

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

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