Lambda のトリガーに設定した情報が Lambda コンソール上に表示されない原因を教えてください
困っていた内容
CloudWatch Logs ロググループのサブスクリプションフィルターなどから Lambda 関数を起動するために Lambda にリソースベースのポリシーを追加しました。
しかし、Lambda コンソール上には Lambda のトリガーとして表示されていません。
Lambda のトリガーに設定した情報が Lambda コンソール上に表示されない原因を教えてください。
どう対応すればいいの?
リソースベースのポリシーにワイルドカードを含むトリガーは、Lambda コンソールに表示されない場合があります。
Lambda リソースベースのポリシーサイズ制限エラーの解決 | AWS re:Post
リソースベースのポリシーにワイルドカードを含むトリガーは、Lambda コンソールに表示されない場合があります。
サポートエンジニアがよく見る AWS Lambda についてのお悩み事 - builders.flash☆ - 変化を求めるデベロッパーを応援するウェブマガジン | AWS
なお、上記のワイルドカードを使用したリソースベースポリシーの設定を行った場合には、対象を一意に把握することができないためトリガーは表示されなくなりますが「トリガーの動作そのものに影響はない」という点も知っておくと、なお良いと思います!
上記 AWS 公式資料にも記載されている通りトリガーの動作に影響はないため、コンソール上の仕様であるとご認識ください。
やってみた
Lambda 関数に以下のようにワイルドカードでロググループを指定したリソースベースのポリシーを追加した場合、Lambda コンソール上にはトリガーとして表示されないことを確認できました。
{
"Version": "2012-10-17",
"Id": "default",
"Statement": [
{
"Sid": "test",
"Effect": "Allow",
"Principal": {
"Service": "logs.ap-northeast-1.amazonaws.com"
},
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:ap-northeast-1:012345678901:function:test",
"Condition": {
"ArnLike": {
"AWS:SourceArn": "arn:aws:logs:ap-northeast-1:012345678901:log-group:*"
}
}
}
]
}
一方、以下のようにロググループを特定できるリソースベースのポリシーであれば、Lambda コンソール上にはトリガーとして表示されることを確認できました。
{
"Version": "2012-10-17",
"Id": "default",
"Statement": [
{
"Sid": "test",
"Effect": "Allow",
"Principal": {
"Service": "logs.ap-northeast-1.amazonaws.com"
},
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:ap-northeast-1:012345678901:function:test",
"Condition": {
"ArnLike": {
"AWS:SourceArn": "arn:aws:logs:ap-northeast-1:012345678901:log-group:/aws/lambda/TranslateText:*"
}
}
}
]
}