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