CFnで実装されていないリソースの制御ができるのでカスタムリソースには助けられていますが、エラーを分かりやすく出力してくれないのが困ったところ。
カスタムリソースが作成できない
カスタムリソースの利用目的
- Lambda関数の起動
現象
- カスタムリソースが作成できない
- CloudWatchのログを見ろとエラー文には書かれているが、見にいってもなにも出力されていない
Failed to create resource. See the details in CloudWatch Log Stream
原因
- Lambdaからcfn-responseでカスタムリソースの応答オブジェクトを正常に返せていなかった
解決方法
- try/exceptなど例外処理をしっかり行い応答オブジェクトを返すことがないパターンをなくす
- 公式で紹介されているcfs-responseモジュールを利用する
- Lambda関数を
CloudFormation Create Resource
イベントのテストなどでcfnresponse.send以外のエラーが出ないことを確認する
カスタムリソースがCREATE_IN_PROGRESSのまま終わらない
カスタムリソースの利用目的
- Lambda関数の起動
現象
- スタックのカスタムリソースの項目が
CREATE_IN_PROGRESS
のまま終わらない - 作成中なのでスタックを削除することはできない
やってみたこと
- スタックを停止させるとカスタムリソースが
DELETE_IN_PROGRESS
に変わるが、これも終わらない - スタック自体のステータスも
DELETE_IN_PROGRESS
になるがスタックの削除はできない
原因
- Lambdaからcfn-responseでカスタムリソースの応答オブジェクトを正常に返せていなかった
解決方法
- スタックを削除できるようにするには待つしかない(
DELETE_IN_PROGRESS
になってから1時間ほど) - Lambda関数を
CloudFormation Create Resource
イベントのテストなどでcfnresponse.send以外のエラーが出ないことを確認する