아마존 문제 해결 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 서비스에서 제공하는 이벤트 EventBridge 단원을 참조하십시오.

규칙이 실행될 때 내 규칙과 관련된 IAM 역할이 무시됩니다.

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

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

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

에 있는 대부분의 서비스는 Amazon Resource Names () 에서 콜론 (:) 또는 슬래시 (/ARNs) 를 동일한 문자로 AWS 취급하지만 이벤트 패턴 및 규칙에서는 정확히 일치하는 문자를 EventBridge 사용합니다. 이벤트 패턴을 생성할 때는 이벤트의 ARN 구문과 일치하도록 올바른 ARN 문자를 사용해야 합니다.

AWS APIcall events from 같은 일부 이벤트의 CloudTrail 경우 리소스 필드에 아무 것도 없습니다.

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

EventBridge 대상 리소스가 제한된 시나리오를 제외하고 최대 24시간 동안 대상에 이벤트를 전달하려고 시도합니다. 이벤트가 이벤트 스트림에 도착하는 즉시 첫 번째 시도가 이루어집니다. 대상 서비스에 문제가 있는 경우 다른 배달 일정을 EventBridge 자동으로 조정합니다. 이벤트 도착 후 24시간이 경과하면 이벤트 전송 시도를 EventBridge 중지하고 지표를 게시합니다. FailedInvocations CloudWatch 대상에 성공적으로 전달하지 못한 이벤트를 DLQ 저장하도록 를 설정하는 것이 좋습니다. 자세한 내용은 데드레터 대기열을 사용하여 전달되지 않은 이벤트를 처리할 수 있습니다. EventBridge 단원을 참조하세요.

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

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

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

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

무한 루프 방지

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

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

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

내 이벤트가 대상 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 주제에 대한 권한이 계속 있습니다.

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

어떤 IAM 조건 키와 함께 사용할 수 있나요 EventBridge?

EventBridge AWS-wide 조건 키 (IAM사용 설명서의 AWS STS 조건 컨텍스트 키 참조) IAM 와 에 나열된 키를 지원합니다. Amazon에서 IAM 정책 조건 사용 EventBridge

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

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

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

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

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

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

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

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

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

  8. [작업] 의 [이 경보 발생 시기] 에서 [상태:] 를 선택합니다ALARM.

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

  10. 이메일 목록의 경우, 알람 상태가 변경될 때 알림을 받을 이메일 주소를 쉼표로 구분한 목록을 입력합니다. ALARM

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