🎉
AWS CDKでやらかした & AI Codingの反省
先日AWS CDKでやらかしました。Geminiを使っての開発です。
やらかし経緯
- 本業プロジェクトでCDKコードが完成し、AWSへデプロイを試みる。
- Geminiから「cdk bootstrapが必要」と指摘される。
- これまでcdk deployだけで済んでいたため理由を質問 → 「S3などのアップロード先作成のため」と聞いて納得し、実行。
- 作業用アカウントでは権限不足で失敗。
- Switch Roleで権限を切り替えて再実行するも、同じく失敗。
- Stack ... is in UPDATE_ROLLBACK_FAILED state...というエラーが出て、Geminiから「CDKToolkitを手動削除」するよう提案される。
- 言われた通りにManagement ConsoleでCDKToolkitを削除。しかしbootstrap権限もないため、その後の操作はすべて失敗。
- 翌日、「既にbootstrap済みだった場合どうなるか」をGeminiに確認し、ようやく状況を理解。自分のミスを認識。
要点をまとめると:
「権限不足のままbootstrapを実行 → rollback失敗 → Toolkitを消して状況悪化 → 後からbootstrap済みだったと判明」
分析
ローカルコードをcdk deploy
する際にはbootstrapしてCDKToolkit
の作成が必要なのですが、企業アカウントだとbootstrapは大抵既に実行済みです。
自分にはこの知識が欠けていて、提案通りにcdk bootstrap
を実行するのですが、もちろん失敗します。権限はしっかり管理されていてますし、なんならCDKToolkit
はすでに存在しています。
さらに酷いのは、一回cdk bootstrap
を実行したおかげで、既存のCDKToolKit
も自分が作成したものだと勘違いしてしまったことです。もしもリソース作成日を確認して、明らかに自分が作成したものではないと気づくことができれば、一歩踏みとどまることができたかもしれません。
反省
- リソース削除の際は要注意。きちんと自分が作成したものだと判断することが必要。なるべくSeniorの監視の元で行う。
- 権限不足エラーが出たときは、むやみに再実行する前に「組織的な制約」かどうかを確認する。
- Geminiの提案をそのまま実行した点については、「AIの指示が間違っていた」というよりも、「AIはそのアカウントの既存状態を把握できない」ことが本質。
- AIの提案は便利だが、環境情報がないため必ず自己判断と他者確認を挟む。
Discussion