CloudFormationのLambda-backedカスタムリソース

eksworkshop.comなどのハンズオンで、よく最初にCloud9を払い出して、Cloud9にAdministratorAccessを持つIAMロールを付与する手順がある。この手順をCloudFormationで自動化しようとして、Lambda-backedカスタムリソースの使い方を覚えたのでそのメモ。さらに、Cloud9上であらかじめeksctlでクラスターの作成も実行したかったが、その場合、Systems ManagerのRun Commandをカスタムリソースで行うのがよさそうである。

テンプレート作成

コードはGitHub参照。

  • Type: Custom::hogehogeでカスタムリソースを定義して、ServiceTokenで実行するLambdaを指定する
  • Lambda関数はテンプレート内に書いた方が楽で、その場合はcfnresponseを使って結果を返すことができる
  • RequestTypeに応じて処理を書く必要があり、削除時の処理を書いておかないと、リソースを削除したときにCloudFormationが長時間ハングアップする

スタック作成

スタックを作成する。

aws cloudformation deploy \
  --stack-name sample \
  --template-file ekshandson-with-ssm.yaml \
  --capabilities CAPABILITY_IAM

参考資料