Lambda リソースポリシーの許可操作の確認

実際の呼び出し方式に必要な操作を許可し、呼び出し元とソースを制限してください。

説明

Lambda リソースポリシーの action は許可する操作を指定します。S3 などのサービスによる通常の関数呼び出しには lambda:InvokeFunction が必要です。別の目的の操作を指定すると、必要な呼び出し権限を与えられなかったり、不要な操作を許可したりする場合があります。

他の action が常に誤りというわけではありません。関数 URL など実際のアクセス方式に必要な権限を確認してください。

想定される影響

  • イベントソースから関数を呼び出せず、処理が遅れたり失敗したりする場合があります。
  • 必要以上に広い操作や主体を許可すると、関数へのアクセス範囲が広がるおそれがあります。

対処方法

  • 通常の関数呼び出しには action: lambda:InvokeFunction を使い、その方式に必要な操作だけを許可してください。
  • principal を必要な呼び出し元に限定し、AWS サービスからの要求は対応する source_arn と source_account の条件で制限してください。ポリシーとイベントソースの設定を合わせて確認し、実際の呼び出しを試してください。

例

関数と Dev エイリアスがすでに存在する例です。バケット名とアカウント ID を実際の値に置き換え、S3 通知のリージョンと送信先も設定してください。ポリシーの追加だけで S3 通知は作成されません。

変更前

yaml
- name: Lambda ポリシーを設定する
  community.aws.lambda_policy:
    state: present
    function_name: functionName
    alias: Dev
    statement_id: lambda-s3-myBucket-create-data-log
    action: lambda:CreateFunction
    principal: s3.amazonaws.com
    source_arn: arn:aws:s3:::example-bucket
    source_account: "123456789012"

変更後

yaml
- name: Lambda ポリシーを設定する
  community.aws.lambda_policy:
    state: present
    function_name: functionName
    alias: Dev
    statement_id: lambda-s3-myBucket-create-data-log
    action: lambda:InvokeFunction
    principal: s3.amazonaws.com
    source_arn: arn:aws:s3:::example-bucket
    source_account: "123456789012"

補足:

  • 変更前: lambda:CreateFunction は、S3 が既存の関数を呼び出すための許可ではありません。
  • 変更後: lambda:InvokeFunction で指定したバケットとアカウントからの S3 呼び出しを許可します。実際のイベント接続も必要です。

参考資料