Amazon EventBridge 규칙 관련 문제를 해결하려면 어떻게 해야 하나요?

4분 분량
0

Amazon EventBridge 규칙이 예상대로 대상을 트리거하거나 간접적으로 호출하지 않은 이유를 해결하고 싶습니다.

간략한 설명

문제를 격리하려면 다음 검증 워크플로를 사용합니다.

  1. 관련 이벤트가 발생했는지 확인합니다(예: AWS CloudTrail API 호출 또는 Simple Storage Service(Amazon S3) 객체 업로드).
  2. 이벤트가 규칙 이벤트 패턴과 일치하는지 확인합니다.
  3. 대상이 이벤트를 성공적으로 처리했는지 확인합니다(예: 이벤트가 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 지표를 검토하려면 다음 단계를 따릅니다.

  1. CloudWatch 콘솔을 엽니다.
  2. 모든 지표를 선택합니다.
  3. AWS/Events 네임스페이스를 선택합니다.
  4. 해당 규칙에 대한 TriggerRules, InvocationsFailedInvocations(사용 가능한 경우) 지표를 선택합니다. 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) 주제를 연결합니다. 이 작업은 대상으로 전달된 이벤트를 캡처하거나 대상의 잘못된 구성을 격리합니다. 로그 또는 주제는 다음 서비스를 제공합니다.

  • 대상에서 파싱하고 처리해야 하는 이벤트 본문과 특정 필드를 확인합니다.

  • 이벤트가 대상에 전달되었는지 확인합니다.

  • 입력 변환기가 올바르게 구성되었는지 확인합니다.

관련 정보

Amazon EventBridge 문제 해결

CloudWatch Events 규칙에 의해 Lambda 함수가 트리거되지 않은 이유는 무엇인가요?

Amazon EventBridge 스케줄러의 오류를 해결하려면 어떻게 해야 하나요?

AWS 공식
AWS 공식업데이트됨 8달 전