Lambda 権限の action 設定の確認

Lambda リソースポリシーの action は、権限を付与する目的に合わせてください。

説明

aws_lambda_permission の action が目的と異なると、必要な呼び出しが失敗したり、不要な権限を与えたりする可能性があります。関数の呼び出しには lambda:InvokeFunction が必要ですが、Lambda リソースポリシーでは lambda:GetFunction など他の対応する操作も許可できます。

想定される影響

  • イベントソースが関数を呼び出せず、処理が遅延または失敗する可能性があります。
  • 不要な操作権限が加わると、ポリシー管理とアクセス制御が複雑になります。

対処方法

関数を呼び出す目的では action を lambda:InvokeFunction に設定してください。他の操作は必要性とサービスの対応状況を確認し、principal と source_arn も必要な範囲に限定してください。デプロイ後に意図した連携をテストしてください。

例

CloudWatch Logs に関数の呼び出しを許可する抜粋です。参照する関数とロググループは別途構成してください。

変更前

hcl
resource "aws_lambda_permission" "example" {
  action        = "lambda:DeleteFunction"
  function_name = aws_lambda_function.logging.function_name
  principal     = "logs.eu-west-1.amazonaws.com"
  source_arn    = "${aws_cloudwatch_log_group.default.arn}:*"
}

変更後

hcl
resource "aws_lambda_permission" "example" {
  action        = "lambda:InvokeFunction"
  function_name = aws_lambda_function.logging.function_name
  principal     = "logs.eu-west-1.amazonaws.com"
  source_arn    = "${aws_cloudwatch_log_group.default.arn}:*"
}

lambda:DeleteFunction は、このログ配信に必要な呼び出し権限ではありません。変更後は同じプリンシパルとロググループに関数の呼び出しを許可します。

参考資料