🖥

AWS Terraform のエラー - CloudWatch のサブスクリプションにLambda実行権限を与える

2023/10/07に公開

エラー

Error: putting CloudWatch Logs Subscription Filter (****):
InvalidParameterException: Could not execute the lambda function. Make sure you have given CloudWatch Logs permission to execute your function.

解決

aws_lambda_permissionの指定で、ソースとなるCloudWatchのログのARNは、以下のようにワイルドカード指定が必要だったみたいだ

Terraform公式より

resource "aws_lambda_permission" "logging" {
  action        = "lambda:InvokeFunction"
  function_name = aws_lambda_function.logging.function_name
  principal     = "logs.<REGION>.amazonaws.com"
  source_arn    = "${aws_cloudwatch_log_group.default.arn}:*"
}

確認手段

AWSマネージメントコンソールで、CloudWatchのログを選んでサブスクリプション登録・Lambdaへの関連付けをおこなうと、Lambdaの画面でリソースベースの許可状態を見られる

Lambda関数 > 設定 > リソースベースのポリシーステートメント

この設定をTerraformでも踏襲した

参考

Lambda でのリソースベースのポリシーの使用
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/access-control-resource-based.html

Terraform公式

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_permission

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2023-10-03

Discussion