概要
- CloudWatch AlarmからLambdaを起動したいが動作しない
- Lambda単体のテストでは動作しているため、CloudWatch Alarmからの起動が失敗している可能性が考えられる
解決方法
この場合に落とし穴になりやすいのが、CloudWatch Alarmからの操作をLambdaが受け付けるようにポリシーを設定していないという点です。具体的には以下の手順で設定を行います。
- AWSコンソールで設定したいLambdaを選択する
- Configurationタブ > PermissionsメニューからResource-based policy statementsにpermissionを追加する
- Edit policy statementで以下の内容で登録する
- AWS accountを選択
- Statement ID : 任意の値を設定する
- Principal : lambda.alarms.cloudwatch.amazonaws.com
- Action : lambda:InvokeFunction
以上の設定を行えば無事CloudWatch AlarmからLambdaが起動されるようになります。なお、Lambdaに関する以下のような記事も公開していますので、必要に応じてご参考にしてみてください。