설명
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