Amazon EventBridge 규칙 관련 문제를 해결하려면 어떻게 해야 하나요?
Amazon EventBridge 규칙이 예상대로 대상을 트리거하거나 간접적으로 호출하지 않은 이유를 해결하고 싶습니다.
간략한 설명
문제를 격리하려면 다음 검증 워크플로를 사용합니다.
- 관련 이벤트가 발생했는지 확인합니다(예: AWS CloudTrail API 호출 또는 Simple Storage Service(Amazon S3) 객체 업로드).
- 이벤트가 규칙 이벤트 패턴과 일치하는지 확인합니다.
- 대상이 이벤트를 성공적으로 처리했는지 확인합니다(예: 이벤트가 AWS Lambda 함수를 간접 호출함).
해결 방법
Amazon EventBridge 규칙과 관련된 문제를 해결하려면 다음 단계를 사용합니다.
수신 이벤트 검증
다음 방법 중 하나 이상을 사용하여 수신 이벤트를 검증합니다.
- AWS CloudTrail이 이벤트를 캡처한 경우 CloudTrail 로그를 분석합니다. API 호출이 예상 시간에 발생했고 이벤트 패턴의 모든 필드와 일치하는지 확인합니다.
참고: 일부 AWS 서비스는 us-east-1 리전에서만 사용할 수 있습니다. 예를 들어 AWS Identity and Access Management(IAM) API 호출은 us-east-1 리전에만 게시됩니다. IAM 이벤트와 일치하는 규칙이 다른 리전에서 생성된 경우 이러한 이벤트는 EventBridge로 전달되지 않습니다. 결과적으로 규칙은 이러한 이벤트에 의해 트리거되지 않습니다. - Amazon EventBridge 콘솔은 예제 AWS 및 파트너 이벤트가 포함된 EventBridge 도구 샌드박스를 제공합니다. 도구를 사용하여 제안된 이벤트 패턴을 AWS, 파트너 및 사용자 지정 이벤트와 일치시킵니다. 또는 TestEventPattern API를 사용하여 이벤트 패턴과 이벤트 간의 일치를 확인합니다.
- EventBridge는 TriggeredRules 지표를 제공하여 성공적으로 일치된 이벤트에 대한 규칙을 보고합니다. TriggeredRules 데이터포인트의 타임스탬프는 이벤트가 발생한 시기를 보여줍니다.
CloudWatch 지표 검토
Amazon EventBridge 규칙에 대한 CloudWatch 지표를 검토하려면 다음 단계를 따릅니다.
- CloudWatch 콘솔을 엽니다.
- 모든 지표를 선택합니다.
- AWS/Events 네임스페이스를 선택합니다.
- 해당 규칙에 대한 TriggerRules, Invocations 및 FailedInvocations(사용 가능한 경우) 지표를 선택합니다. SUM 통계를 통해 이러한 지표를 볼 수 있습니다.
이벤트 패턴 검증
이벤트를 일치시키려면 이벤트 패턴의 모든 필드가 일치해야 합니다. 샌드박스 도구를 사용하여 몇 개의 필드가 있는 이벤트 패턴에 대해 원하는 이벤트를 테스트합니다. 예를 들어, 여기에 나열된 것과 같은 간단한 이벤트 패턴을 사용합니다.
{ "source": ["aws.s3"] }
성공적으로 일치하는 경우 이벤트 패턴의 복잡성이 증가합니다. 이벤트 패턴에 추가하는 각 필드는 일치하는 이벤트를 필터링하고 포커스를 줄입니다.
다음은 이벤트 패턴의 예입니다. 패턴은 두 문자열(feature1 및 feature2) 중 하나로 시작하는 객체의 특정 버킷에 대한 Amazon S3 API 호출 목록과 일치합니다.
{ "source": [ "aws.s3" ], "detail-type": [ "AWS API Call via CloudTrail" ], "detail": { "eventName": [ "PutObject", "DeleteObject", "DeleteObjects" ], "requestParameters": { "bucketName": [ "123456789012-prod-app1" ], "key": [ { "prefix": "feature1/" }, { "prefix": "feature2/" } ] } } }
원하는 이벤트와 일치하지 않는 필드를 격리하려면 필드를 점진적으로 추가합니다.
대상 검증
-
Invocations 지표는 규칙이 이벤트를 대상에 전달할 때 데이터 포인트를 게시합니다. 이는 간접 호출의 성공 및 실패를 나타냅니다.
-
Amazon EventBridge는 대상을 간접적으로 호출하는 데 영구적으로 실패할 때 FailedInvocations 데이터포인트를 발행합니다. FailedInvocations는 대상 구성에 문제가 있거나 부적절한 권한으로 인해 발생하는 문제를 나타냅니다.
-
대상을 간접적으로 호출하려면 Amazon EventBridge에 적절한 권한을 부여해야 합니다. 대상에 따라 AWS Identity and Access Management(IAM) 역할 또는 리소스 정책이 권한을 부여합니다.
-
Amazon EventBridge 콘솔을 사용하여 규칙을 생성하면 콘솔이 관련 리소스에 필요한 권한을 자동으로 추가합니다.
참고: AWS SDK, AWS Command Line Interface(AWS CLI) 또는 AWS CloudFormation을 사용하여 규칙을 배포하는 경우 권한을 명시적으로 구성하세요. -
FailedInvocations 데이터포인트가 없으면 Amazon EventBridge가 대상에 이벤트를 성공적으로 전달한 것입니다. 그러나 대상이 올바르게 작동하지 않을 수 있습니다. 예를 들어, AWS Lambda 대상은 실행 중이나 제한 중에 오류가 발생할 수 있습니다. 자세한 내용을 보려면 대상의 Amazon CloudWatch 지표 및 관련 로그를 검토하세요.
-
Amazon Simple Queue Service(Amazon SQS) DLQ(Dead Letter Queue)를 대상과 연결합니다. 대상에 전달되지 않은 이벤트는 DLQ(Dead Letter Queue)로 전송됩니다. 이 방법을 사용하면 실패한 이벤트에 대한 더 자세한 정보를 얻을 수 있습니다. 실패한 이벤트에 대해 DLQ에서 검색된 메시지의 다음 코드 조각을 검토합니다.
"MessageAttributes": { "ERROR_CODE": { "StringValue": "NO_PERMISSIONS", "DataType": "String" }, "ERROR_MESSAGE": { "StringValue": "User: events.amazonaws.com is not authorized to perform: lambda:InvokeFunction on resource: arn:aws:lambda:us-east-1:123456789012:function:Hello_World because no resource-based policy allows the lambda:InvokeFunction action (Service: AWSLambdaInternal; Status Code: 403; Error Code: AccessDeniedException; Request ID: 6635c4c4-9c54-416e-bc40-ef25bad0aca5; Proxy: null)", "DataType": "String" },
이 메시지는 Amazon EventBridge 서비스에 Lambda 대상을 간접적으로 호출하는 데 필요한 권한이 없음을 보여줍니다.
-
Amazon EventBridge 규칙은 최대 5개의 대상을 지원합니다. 임시로 Amazon CloudWatch Logs 그룹 대상 또는 Amazon Simple Notification Service(SNS) 주제를 연결합니다. 이 작업은 대상으로 전달된 이벤트를 캡처하거나 대상의 잘못된 구성을 격리합니다. 로그 또는 주제는 다음 서비스를 제공합니다.
-
대상에서 파싱하고 처리해야 하는 이벤트 본문과 특정 필드를 확인합니다.
-
이벤트가 대상에 전달되었는지 확인합니다.
-
입력 변환기가 올바르게 구성되었는지 확인합니다.
관련 정보
관련 콘텐츠
- 질문됨 2년 전lg...
- AWS 공식업데이트됨 3년 전
- AWS 공식업데이트됨 3년 전
- AWS 공식업데이트됨 한 달 전