CloudFormation 템플릿 또는 AWS CLI를 사용하여 생성한 CloudWatch Events 규칙이 AWS Lambda를 호출할 수 없는 이유는 무엇입니까?

2분 분량
0

AWS CloudFormation(CloudFormation) 템플릿 또는 AWS Command Line Interface(AWS CLI)를 사용하여 Amazon CloudWatch Events(CloudWatch Events) 규칙을 생성했습니다. AWS Lambda 대상을 호출하려고 했지만 대상이 호출되지 않았습니다.

간략한 설명

CloudFormation 템플릿 또는 AWS CLI를 사용하여 생성한 CloudWatch Events 규칙은 Lambda 대상을 호출하려면 CloudWatch Events 규칙 권한을 명시적으로 부여해야 합니다.

해결 방법

Lambda 대상 호출에 필요한 CloudWatch Events 규칙 권한을 CloudFormation 템플릿 또는 AWS CLI에 추가할 수 있습니다.

참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.

옵션 1: CloudFormation 템플릿에 권한 추가

AWS::Lambda::Permission 리소스를 사용하여 Lambda 함수의 액세스 정책에 정책 설명을 추가합니다.

중요: CloudFormation 템플릿에서 다음을 확인합니다.

  • MyLambdaFunction을 Lambda 함수의 논리명으로 바꿉니다.
  • MyEventRule을 이벤트 규칙의 논리명으로 바꿉니다.

JSON

"LambdaInvokePermission":
{
  "Type": "AWS::Lambda::Permission",
  "Properties": {
    "FunctionName": {
      "Fn::GetAtt": [
        "MyLambdaFunction",
        "Arn"
      ]
    },
    "Action": "lambda:InvokeFunction",
    "Principal": "events.amazonaws.com",
    "SourceArn": {
      "Fn::GetAtt": [
        "EventRule",
        "Arn"
      ]
    }
  }
}

YAML

LambdaInvokePermission:
  Type: AWS::Lambda::Permission
  Properties:
    FunctionName:
      Fn::GetAtt:
        - MyLambdaFunction
        - Arn
    Action: "lambda:InvokeFunction"
    Principal: "events.amazonaws.com"
    SourceArn:
      Fn::GetAtt:
        - "EventRule"
        - "Arn"

옵션 2: AWS CLI를 사용하여 권한 추가

명령 프롬프트를 사용하여 다음을 입력합니다.

aws lambda add-permission
--statement-id "TrustCloudWatchToInvokeMyLambdaFunction" \
--action "lambda:InvokeFunction" \
--principal "events.amazonaws.com" \
--function-name "arn:aws:lambda:<region>:<account-id>:function:<function-name>"
\
--source-arn "arn:aws:events:<region>:<account-id>:rule/<rule-name>"

관련 정보

AWS CloudFormation와 함께 AWS Lambda 사용

AWS 공식
AWS 공식업데이트됨 일 년 전
댓글 없음

관련 콘텐츠