아마존 문제 해결 EventBridge - 아마존 EventBridge

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

아마존 문제 해결 EventBridge

이 섹션의 단계를 사용하여 Amazon EventBridge 문제를 해결할 수 있습니다.

규칙이 실행되었지만 Lambda 함수가 간접 호출되지 않음

Lambda 함수가 실행되지 않는 한 가지 이유는 적절한 권한이 없는 경우입니다.

Lambda 함수에 대한 권한을 확인하려면
  1. AWS CLI를 사용하여 함수 및 AWS 지역과 함께 다음 명령을 실행합니다.

    aws lambda get-policy --function-name MyFunction --region us-east-1

    다음과 같이 출력되어야 합니다.

    { "Policy": "{\"Version\":\"2012-10-17\", \"Statement\":[ {\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:events:us-east-1:123456789012:rule/MyRule\"}}, \"Action\":\"lambda:InvokeFunction\", \"Resource\":\"arn:aws:lambda:us-east-1:123456789012:function:MyFunction\", \"Effect\":\"Allow\", \"Principal\":{\"Service\":\"events.amazonaws.com\"}, \"Sid\":\"MyId\"} ], \"Id\":\"default\"}" }
  2. 다음과 같은 메시지가 나타나는 경우

    A client error (ResourceNotFoundException) occurred when calling the GetPolicy operation: The resource you requested does not exist.

    또는 이러한 출력 화면은 나타났지만 정책에서 신뢰할 수 있는 개체로서 events.amazonaws.com의 위치를 찾을 수 없는 경우에는 다음 명령을 실행합니다.

    aws lambda add-permission \ --function-name MyFunction \ --statement-id MyId \ --action 'lambda:InvokeFunction' \ --principal events.amazonaws.com \ --source-arn arn:aws:events:us-east-1:123456789012:rule/MyRule
  3. 출력에 SourceAccount 필드가 포함되어 있으면 이를 제거해야 합니다. SourceAccount설정으로 EventBridge 인해 함수를 호출할 수 없습니다.

참고

정책이 잘못된 경우 규칙을 제거한 다음 다시 추가하여 EventBridge 콘솔에서 규칙을 편집할 수 있습니다. 그러면 EventBridge 콘솔이 대상에 대해 올바른 권한을 설정합니다.

특정한 Lambda 별칭 또는 버전을 사용하고 있는 경우 다음 명령과 같이 aws lambda get-policyaws lambda add-permission 명령에 --qualifier 파라미터를 추가합니다.

aws lambda add-permission \ --function-name MyFunction \ --statement-id MyId \ --action 'lambda:InvokeFunction' \ --principal events.amazonaws.com \ --source-arn arn:aws:events:us-east-1:123456789012:rule/MyRule --qualifier alias or version

방금 규칙을 생성 또는 수정했지만, 테스트 이벤트와 일치하지 않음

규칙이나 규칙의 대상을 변경한다고 수신 이벤트가 즉시 새로운 규칙이나 업데이트된 규칙에 대한 매칭을 시작 또는 중지하지는 않습니다. 변경 사항이 적용될 때까지 잠시 기다리세요.

잠시 후에도 이벤트가 일치하지 TriggeredRules Invocations 않으면 CloudWatch 측정항목 및 FailedInvocations 규칙을 확인하세요. 이러한 지표에 대한 자세한 내용은 Amazon 모니터링을 참조하십시오 EventBridge.

규칙이 AWS 서비스의 이벤트와 일치하도록 의도된 경우 다음 중 하나를 수행하십시오.

  • TestEventPattern 작업을 사용하여 규칙의 이벤트 패턴이 테스트 이벤트와 일치하는지 테스트합니다. 자세한 내용은 Amazon EventBridge API 레퍼런스를 참조하십시오 TestEventPattern.

  • EventBridge 콘솔에서 샌드박스를 사용하십시오.

ScheduleExpression에 지정한 시간에 내 규칙이 실행되지 않음

UTC+0 시간대에 규칙이 예약이 되어 있는지 확인합니다. ScheduleExpression이 올바르면 방금 규칙을 생성 또는 수정했지만, 테스트 이벤트와 일치하지 않음의 단계를 따릅니다.

내 규칙이 예상된 시간에 실행되지 않음

EventBridge 설정한 시작 시간으로부터 1분 이내에 규칙을 실행합니다. 규칙이 생성되는 즉시 런타임에 대한 카운트다운이 시작됩니다.

참고

예약된 규칙의 전송 유형은 guaranteed입니다. 즉, 예상 시간마다 이벤트가 한 번 이상 트리거됩니다.

cron 표현식을 사용하여 지정된 시간에 대상을 간접 호출할 수 있습니다. 4시간마다 0분에 실행되는 규칙을 만들려면 다음 중 하나를 수행합니다.

  • EventBridge 콘솔에서는 cron 표현식을 0 0/4 * * ? * 사용합니다.

  • AWS CLI를 사용하면 cron(0 0/4 * * ? *) 표현식을 사용합니다.

예를 들어, 를 사용하여 4시간마다 TestRule 실행되는 규칙을 만들려면 다음 명령을 사용합니다. AWS CLI

aws events put-rule --name TestRule --schedule-expression 'cron(0 0/4 * * ? *)'

5분마다 규칙을 실행하려면 다음 cron 표현식을 사용합니다.

aws events put-rule --name TestRule --schedule-expression 'cron(0/5 * * * ? *)'

cron 표현식을 사용하는 EventBridge 규칙의 가장 정확한 해결 방법은 1분입니다. 예약된 규칙은 지정한 시간(분) 이내에 실행되지만 정확한 초 단위로 실행되지는 않습니다.

대상 서비스가 분산되어 있기 때문에 EventBridge 스케줄링된 규칙이 실행되는 시간과 대상 서비스가 대상 리소스에서 작업을 수행하는 시간 사이에 몇 초의 지연이 있을 수 있습니다.

내 규칙은 AWS 글로벌 서비스 API 호출과 일치하지만 실행되지 않았습니다.

AWS IAM 및 Amazon Route 53과 같은 글로벌 서비스는 미국 동부 (버지니아 북부) 지역에서만 사용할 수 있으므로 글로벌 서비스의 AWS API 호출 이벤트는 해당 지역에서만 사용할 수 있습니다. 자세한 정보는 서비스의 이벤트 AWS을 참조하세요.

규칙이 실행될 때 내 규칙과 연관된 IAM 역할이 무시됨

EventBridge Kinesis 스트림으로 이벤트를 보내는 규칙에 IAM 역할만 사용합니다. Lambda 함수 또는 Amazon SNS 주제를 간접 호출하는 규칙에 대해 리소스 기반 권한을 제공해야 합니다.

제공한 IAM 역할을 수임할 때 리전 AWS STS 엔드포인트를 사용할 EventBridge 수 있도록 리전 엔드포인트가 활성화되어 있는지 확인하십시오. 자세한 내용은 IAM 사용 설명서의 AWS STSAWS 지역에서의 활성화 및 비활성화를 참조하십시오.

내 규칙에는 리소스와 일치해야 하는 이벤트 패턴이 있지만 일치하는 이벤트가 없음

에 있는 대부분의 서비스는 Amazon 리소스 이름 (ARN) 에서 콜론 (:) 또는 슬래시 (/) 를 동일한 문자로 AWS 취급하지만 이벤트 패턴 및 규칙에서 정확히 일치하는 문자를 EventBridge 사용합니다. 따라서 이벤트 패턴을 만들 때 일치시킬 이벤트에서 ARN 구문과 일치하도록 정확한 ARN 문자를 사용해야 합니다.

의 AWS API 호출 이벤트와 같은 일부 이벤트의 CloudTrail 경우 리소스 필드에 아무것도 없습니다.

내 이벤트를 대상에 전달할 때 지연됨

EventBridge 대상 리소스가 제한된 시나리오를 제외하고 최대 24시간 동안 대상에 이벤트를 전달하려고 시도합니다. 이벤트가 이벤트 스트림에 도착하는 즉시 첫 번째 시도가 이루어집니다. 대상 서비스에 문제가 있는 경우 다른 배달 일정을 EventBridge 자동으로 조정합니다. 이벤트 도착 후 24시간이 경과하면 이벤트 전송 시도를 EventBridge 중지하고 지표를 게시합니다. FailedInvocations CloudWatch 대상에 성공적으로 전달하지 못한 이벤트를 저장하려면 DLQ를 설정하는 것이 좋습니다. 자세한 정보는 이벤트 재시도 정책 및 DLQ(Dead Letter Queue) 사용 섹션을 참조하십시오.

일부 이벤트가 내 대상으로 전달되지 않음

EventBridge 규칙 대상이 장기간 제한되는 경우 전달을 재시도하지 EventBridge 않을 수 있습니다. 예를 들어 대상이 수신되는 이벤트 트래픽을 처리하도록 프로비저닝되지 않고 대상 서비스가 사용자를 대신하여 보내는 요청을 제한하고 있는 EventBridge 경우 전송을 재시도하지 않을 수 있습니다. EventBridge

한 개의 이벤트에 응답하기 위해 내 규칙이 한 번 이상 실행됨

드문 경우이지만, 단일 이벤트 또는 예약된 시간에서 동일한 규칙을 한 번 이상 실행하거나 트리거된 특정 규칙에서 동일한 대상을 한 번 이상 간접 호출할 수 있습니다.

무한 루프 방지

EventBridge에서는 규칙이 반복적으로 실행되는 무한 루프로 이어지는 규칙을 만들 수 있습니다. 무한 루프를 유발하는 규칙이 있는 경우 규칙을 수행하는 작업이 동일한 규칙과 일치하지 않도록 규칙을 다시 작성하세요.

예를 들어 Amazon S3 버킷에서 ACL이 변경되었음을 감지한 다음, 소프트웨어를 실행하여 ACL을 새 상태로 변경하는 규칙은 무한 루프를 유발합니다. 이 문제를 해결하는 한 가지 방법은 잘못된 상태에 있는 ACL과만 일치하도록 규칙을 다시 작성하는 것입니다.

무한 루프는 예상보다 높은 요금을 빠르게 야기할 수 있습니다. 따라서 요금이 지정한 한도를 초과할 경우 이를 알려줄 수 있는 예산 관리를 사용하는 것이 좋습니다. 자세한 내용은 예산을 통해 비용 관리 단원을 참조하세요.

내 이벤트가 대상 Amazon SQS 대기열에 전달되지 않음

Amazon SQS 대기열이 암호화된 경우 고객 관리형 KMS 키를 생성하고 KMS 키 정책에 다음 권한 섹션을 포함해야 합니다. 자세한 내용은 AWS KMS 권한 구성을 참조하십시오.

{ "Sid": "Allow EventBridge to use the key", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }

내 규칙이 실행되지만 내 Amazon SNS 주제에 어떤 메시지도 게시되지 않음

시나리오 1

Amazon SNS 주제에 메시지를 게시하려면 권한이 필요합니다. us-east-1을 해당 AWS CLI지역으로 바꾸고 주제 ARN을 사용하여 다음 명령을 사용합니다.

aws sns get-topic-attributes --region us-east-1 --topic-arn "arn:aws:sns:us-east-1:123456789012:MyTopic"

올바른 권한을 사용하려면 정책 속성이 다음과 유사해야 합니다.

"{\"Version\":\"2012-10-17\", \"Id\":\"__default_policy_ID\", \"Statement\":[{\"Sid\":\"__default_statement_ID\", \"Effect\":\"Allow\", \"Principal\":{\"AWS\":\"*\"}, \"Action\":[\"SNS:Subscribe\", \"SNS:ListSubscriptionsByTopic\", \"SNS:DeleteTopic\", \"SNS:GetTopicAttributes\", \"SNS:Publish\", \"SNS:RemovePermission\", \"SNS:AddPermission\", \"SNS:SetTopicAttributes\"], \"Resource\":\"arn:aws:sns:us-east-1:123456789012:MyTopic\", \"Condition\":{\"StringEquals\":{\"AWS:SourceOwner\":\"123456789012\"}}},{\"Sid\":\"Allow_Publish_Events\", \"Effect\":\"Allow\", \"Principal\":{\"Service\":\"events.amazonaws.com\"}, \"Action\":\"sns:Publish\", \"Resource\":\"arn:aws:sns:us-east-1:123456789012:MyTopic\"}]}"

정책에 Publish 권한이 있는 events.amazonaws.com이 표시되지 않는 경우 먼저 현재 정책을 복사하고 다음 문을 명령문 목록에 추가하세요.

{\"Sid\":\"Allow_Publish_Events\", \"Effect\":\"Allow\",\"Principal\":{\"Service\":\"events.amazonaws.com\"}, \"Action\":\"sns:Publish\", \"Resource\":\"arn:aws:sns:us-east-1:123456789012:MyTopic\"}

그런 다음 를 사용하여 주제 속성을 설정하고 다음 명령을 AWS CLI사용하십시오.

aws sns set-topic-attributes --region us-east-1 --topic-arn "arn:aws:sns:us-east-1:123456789012:MyTopic" --attribute-name Policy --attribute-value NEW_POLICY_STRING
참고

정책이 잘못된 경우 규칙을 제거한 후 다시 추가하여 EventBridge 콘솔에서 규칙을 편집할 수도 있습니다. EventBridge 대상에 올바른 권한을 설정합니다.

시나리오 2

SNS 주제가 암호화된 경우 KMS 키 정책에 다음 섹션을 포함해야 합니다.

{ "Sid": "Allow EventBridge to use the key", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }

Amazon SNS 주제와 관련된 규칙을 삭제한 EventBridge 후에도 Amazon SNS 주제에 대한 권한이 계속 남아 있습니다.

Amazon SNS를 대상으로 하는 규칙을 생성하면 사용자를 대신하여 Amazon SNS 주제에 권한을 EventBridge 추가합니다. 규칙을 생성한 직후 규칙을 삭제하면 Amazon SNS 주제에서 권한이 제거되지 EventBridge 않을 수 있습니다. 이 경우 aws sns set-topic-attributes 명령을 사용하여 주제에서 권한을 제거할 수 있습니다. 이벤트 전송을 위한 리소스 기반 권한에 대한 자세한 내용은 Amazon EventBridge에 리소스 기반 정책 사용 섹션을 참조하세요.

어떤 IAM 조건 키와 함께 EventBridge 사용할 수 있습니까?

EventBridge AWS-wide 조건 키 (IAM 사용 설명서의 IAM 및 AWS STS 조건 컨텍스트 키 참조) 와 에 나열된 키를 지원합니다. IAM 정책 조건을 사용하여 세분화된 액세스 제어 구현

EventBridge 규칙이 언제 위반되었는지 어떻게 알 수 있나요?

EventBridge 규칙 위반 시 다음 경보를 사용하여 알림을 받을 수 있습니다.

규칙 위반 시 이를 알리기 위해 경보를 생성하려면
  1. https://console.aws.amazon.com/cloudwatch/ 에서 CloudWatch 콘솔을 엽니다.

  2. 경보 생성을 선택합니다. 범주별 CloudWatch 지표 창에서 이벤트 지표를 선택합니다.

  3. 지표 목록에서 을 선택합니다 FailedInvocations.

  4. 그래프 위에서 통계, 합계를 선택합니다.

  5. 기간으로 5분 등의 값을 선택합니다. 다음을 선택합니다.

  6. 예를 들어, 경보 임계값에서 이름에 경보의 고유한 이름을 입력합니다 myFailedRules. 설명에는 규칙이 대상에 이벤트를 전달하지 않음 등의 경보 설명을 입력합니다.

  7. 조건에 대해 >=1을 선택합니다. 기간에는 10을 입력합니다.

  8. 작업이 경보가 발생할 경우 항상에서 상태가 ALARM입니다를 선택합니다.

  9. 알림 보내기에 대해 기존 Amazon SNS 주제를 선택하거나 새로 만듭니다. 주제를 새로 생성하려면 새 목록을 선택합니다. 새 Amazon SNS 주제의 이름을 입력합니다 (예:) myFailedRules.

  10. 이메일 목록에서, 경보가 ALARM 상태로 변경될 때 알림을 보낼 이메일 주소 목록을 쉼표로 구분하여 입력합니다.

  11. 경보 생성을 선택합니다.