Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
EventBridge 규칙의 사용자 지정 이벤트 패턴을 생성하려면 어떻게 해야 합니까?
Amazon EventBridge 규칙을 사용하여 AWS 서비스의 이벤트를 캡처하려고 합니다. 하지만 이벤트와 일치하는 사용자 지정 이벤트 패턴을 만들 수 없습니다.
해결 방법
참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
EventBridge는 AWS 서비스의 이벤트, EventBridge 파트너의 이벤트 및 사용자 지정 이벤트를 수락합니다. 이 문서에서는 AWS 서비스에서 발생하는 JSON 이벤트에 대해 설명합니다. 이벤트 패턴을 사용하여 EventBridge 규칙을 생성하면 수신 이벤트를 필터링할 수 있습니다. 이렇게 하면 EventBridge 규칙이 원하는 이벤트만 일치시켜 해당 이벤트를 대상에 전달합니다.
수신 이벤트의 JSON 형식 확인
수신 이벤트의 JSON 형식을 확인하는 데 사용되는 세 가지 방법이 있습니다.
EventBridge가 수신하는 AWS 서비스의 이 샘플 이벤트 목록을 참조하십시오.
EventBridge는 사용자가 이벤트 패턴을 생성하고 검증하는 데 도움이 되는 EventBridge 샌드박스 도구를 제공합니다. 예를 들어 EC2 인스턴스 상태 변경 이벤트를 생성하려면 다음 단계를 완료하십시오.
- EventBridge 콘솔을 엽니다.
- 탐색 창에서 개발자 리소스를 확장한 다음, 샌드박스를 선택합니다.
- 이벤트 패턴 탭의 샘플 이벤트 섹션에서 AWS 이벤트를 선택합니다.
- 샘플 이벤트 필드에서 EC2 인스턴스 상태 변경 알림을 선택합니다. 그러면 창이 첫 번째 샘플 이벤트로 채워집니다. 지정된 이벤트 유형에 대해 여러 샘플을 사용할 수 있습니다.
- 생성 방법 섹션에서 이벤트 패턴을 테스트하도록 선택합니다.
- 지정된 AWS 서비스의 모든 이벤트와 일치하는 간단한 이벤트 패턴으로 EventBridge 규칙을 생성합니다. 예를 들어 이 이벤트 패턴은 모든 Amazon Elastic Compute Cloud(Amazon EC2) 이벤트와 일치합니다.
참고: 이벤트 패턴에는 빈 이벤트가 허용되지 않습니다.<{ "source": [ "aws.ec2" ] }
다음으로, SNS 또는 CloudWatch 로그 그룹 대상을 규칙과 연결하여 인바운드 이벤트를 캡처합니다. 서비스에서 내보낸 JSON이 올바르게 수신되도록 대상에는 대상 입력 구성 옵션이 일치하는 이벤트로 설정되어 있어야 합니다.
수신 이벤트와 동일한 JSON 형식으로 이벤트 패턴 생성
사전 요구 사항:
- 이벤트 패턴에서 지정하지 않은 모든 필드를 자동으로 일치시킵니다. 예를 들어 이벤트 패턴에 세부 정보가 지정되지 않은 경우 이벤트 패턴은 모든 이벤트를 세부 정보와 일치시킵니다.
- JSON 구조에서 한 단계 아래에 있는 필드를 일치시키려면 **중괄호 { }**를 사용합니다. 대규모 이벤트 구조를 찾고 있다면 JSON 뷰어가 유용할 수 있습니다.
- JSON 이벤트에서 일치시킬 문자열은 대괄호 [ ] 안에 있어야 합니다. 대괄호 안에 여러 값을 포함시켜 수신 이벤트에 값 중 하나가 있을 때 이벤트가 호출되도록 할 수 있습니다. 예를 들어 Amazon EC2 또는 Amazon DynamoDB에서 전송한 모든 이벤트를 기반으로 이벤트를 호출하려면 다음 명령을 사용하십시오.
{ "source": [ "aws.ec2", "aws.dynamodb" ] }
SNS 또는 CloudWatch 대상을 사용하여 수신 이벤트 가져오기
이 예에서는 EventBridge로 내보낸 Route 53 이벤트를 보여줍니다. ChangeResourceRecordSets API 호출은 Amazon Route 53 호스팅 영역에서 A 레코드 생성을 나타냅니다. Amazon Simple Notification Service(Amazon SNS) 주제 또는 Amazon CloudWatch 로그 그룹 대상은 다음 이벤트를 캡처합니다.
{ "version": "0", "id": "d857ae5c-cc83-3742-ab88-d825311ee4e9", "detail-type": "AWS API Call via CloudTrail", "source": "aws.route53", "account": "123456789012", "time": "2019-12-05T16:50:53Z", "region": "us-east-1", "resources": [], "detail": { "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AROAABCDEFGHIJKLMNOPQ:Admin", "arn": "arn:aws:sts::123456789012:assumed-role/Admin", "accountId": "123456789012", "accessKeyId": "ASIAABCDEFGH12345678", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAABCDEFGHIJKLMNOPQ", "arn": "arn:aws:iam::123456789012:role/Admin", "accountId": "123456789012", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "mfaAuthenticated": "false", "creationDate": "2019-12-05T16:28:27Z" } } }, "eventTime": "2019-12-05T16:50:53Z", "eventSource": "route53.amazonaws.com", "eventName": "ChangeResourceRecordSets", "awsRegion": "us-east-1", "sourceIPAddress": "12.34.56.78", "userAgent": "console.amazonaws.com", "requestParameters": { "hostedZoneId": "Z1RP12345WXRQD", "changeBatch": { "changes": [ { "action": "CREATE", "resourceRecordSet": { "type": "A", "tTL": 300, "resourceRecords": [ { "value": "4.4.4.4" } ], "name": "test.example.us." } } ] } }, "responseElements": { "changeInfo": { "status": "PENDING", "id": "/change/C271P4WIKN511J", "submittedAt": "Dec 5, 2019 4:50:53 PM" } }, "additionalEventData": { "Note": "Do not use to reconstruct hosted zone" }, "requestID": "bbbf9847-96cb-45ef-b617-d535b9fe83d8", "eventID": "74e2d2c8-7497-4292-94d0-348272dbc4f7", "eventType": "AwsApiCall", "apiVersion": "2013-04-01" } }
해당 이벤트 패턴 생성
이 예제 이벤트 패턴은 여러 필드를 필터링합니다. eventName, hostedZoneld, action 및 type을 예로 들 수 있습니다. 일치하는 이벤트는 모든 필드와 해당 값을 포함해야 합니다. 패턴은 특정 호스팅 영역에 대해 생성된 A 레코드를 격리합니다.
{ "source": [ "aws.route53" ], "detail": { "eventSource": [ "route53.amazonaws.com" ], "eventName": [ "ChangeResourceRecordSets" ], "requestParameters": { "hostedZoneId": [ "Z1RP12345WXRQD" ], "changeBatch": { "changes": { "action": [ "CREATE" ], "resourceRecordSet": { "type": [ "A" ] } } } } } }
이벤트 패턴 테스트
EventBridge 콘솔을 사용하여 이벤트 패턴 테스트
EventBridge 샌드박스를 활용하려면 다음 단계를 완료하십시오.
- 샘플 이벤트 섹션에서 샘플 이벤트를 선택하거나 입력합니다.
- 이벤트 패턴 섹션에 이벤트 패턴을 입력합니다. 이벤트 패턴 양식의 메뉴를 사용하여 이벤트 패턴을 만들 수 있습니다. 또는 **사용자 지정 패턴(JSON 편집기)**을 사용하여 사용자 지정 이벤트 패턴을 입력할 수 있습니다.
- 두 섹션이 모두 채워지면 테스트 패턴을 선택하여 이벤트 패턴이 지정된 샘플 이벤트와 일치하는지 확인합니다.
AWS CLI를 사용하여 이벤트 패턴 테스트
AWS CLI에서 test-event-pattern 명령을 실행합니다. 이벤트 패턴이 일치하는지 확인하려면 결과가 true인지 확인하십시오. AWS 서비스에서 전송한 JSON 이벤트를 식별하고 사용자 지정 이벤트 패턴이 특정 이벤트를 캡처하도록 지원할 수 있습니다.
관련 정보
자습서: CloudTrail을 사용하여 AWS API 호출에 반응하는 EventBridge 규칙 생성
YouTube 웹사이트의 Amazon EventBridge - CloudWatch 이벤트와 EventBridge의 차이점은 무엇입니까?
- 언어
- 한국어

