Lambda 호출 권한 설정 오류

이벤트 소스의 함수 호출에 맞는 액션을 허용하세요.

설명

S3 같은 이벤트 소스가 Lambda 함수를 실행하려면 lambda:InvokeFunction 권한이 필요합니다. lambda:GetFunction처럼 다른 목적의 액션은 함수 호출을 허용하지 않습니다.

잠재적 영향

호출 권한이 맞지 않으면 이벤트 연동이 실패할 수 있습니다.

해결 방법

일반 함수 호출을 허용하는 AWS::Lambda::Permission에는 Action: lambda:InvokeFunction을 사용하고 Principal, SourceArn, SourceAccount를 실제 호출 범위로 제한하세요. 이벤트 연결도 별도로 구성하고 확인하세요.

예시

같은 S3 호출 주체에서 액션만 바꾸는 발췌입니다. function, bucket과 이벤트 설정은 별도로 준비해야 합니다.

변경 전

yaml
Resources:
  s3Permission:
    Type: AWS::Lambda::Permission
    Properties:
      FunctionName: !GetAtt function.Arn
      Action: lambda:GetFunction
      Principal: s3.amazonaws.com
      SourceAccount: !Ref 'AWS::AccountId'
      SourceArn: !GetAtt bucket.Arn

변경 후

yaml
Resources:
  s3Permission:
    Type: AWS::Lambda::Permission
    Properties:
      FunctionName: !GetAtt function.Arn
      Action: lambda:InvokeFunction
      Principal: s3.amazonaws.com
      SourceAccount: !Ref 'AWS::AccountId'
      SourceArn: !GetAtt bucket.Arn

참조