Amazon EventBridge를 사용하여 SES 이벤트 모니터링 - Amazon Simple Email Service

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

Amazon EventBridge를 사용하여 SES 이벤트 모니터링

EventBridge는 이벤트를 사용하여 애플리케이션 구성 요소를 서로 연결하는 서버리스 서비스로, 확장 가능한 이벤트 기반 애플리케이션을 더 쉽게 구축할 수 있습니다. 이벤트 기반 아키텍처는 이벤트를 내보내고 이에 응답하여 함께 작동하는 느슨하게 결합된 소프트웨어 시스템을 구축하는 스타일입니다. 이벤트는 일반적으로 리소스나 환경의 변경 또는 기타 관리 이벤트를 나타내는 JSON 형식의 메시지입니다.

특정 SES 특성은 이벤트 대상을 만들 때 정의하는 이벤트를 생성하고 EventBridge 기본 이벤트 버스로 전송합니다. 이벤트 버스는 이벤트를 수신하여 0개 이상의 목적지 또는 대상에 전달하는 라우터입니다. 이벤트 버스와 연결한 규칙은 이벤트가 도착할 때 이벤트를 평가합니다. 각 규칙은 이벤트가 규칙의 패턴과 일치하는지 확인합니다. 이벤트가 일치하면 EventBridge는 이벤트를 지정된 대상으로 보냅니다.

특성에 상태 변경 또는 상태 업데이트가 있으면 SES가 EventBridge로 이벤트를 전송합니다. EventBridge 규칙을 사용하여 이벤트를 정의된 대상으로 라우팅할 수 있습니다. 이러한 이벤트는 최선의 방식으로 전달되며 순서가 맞지 않게 전달될 수 있습니다.

SES 이벤트

다음 이벤트는 SES 특성에 의해 생성되어 EventBridge의 기본 이벤트 버스로 전송됩니다. 각 이벤트 유형의 세부 정보 데이터를 포함한 자세한 내용은 SES 이벤트 스키마 참조에서 확인하세요.

Virtual Deliverability Manager 어드바이저 이벤트
이벤트 유형 설명

어드바이저 권장 사항 상태 개시

Virtual Deliverability Manager 어드바이저에서 새 권장 사항이 개시될 때마다 생성되는 이벤트입니다.

어드바이저 권장 사항 상태 해결

Virtual Deliverability Manager 어드바이저에서 권장 사항이 해결될 때마다 생성되는 이벤트입니다.

SES 이메일 전송 이벤트
이벤트 유형 설명

이메일 반송됨

하드 바운스 – 수신자의 메일 서버가 이메일을 영구적으로 거부합니다. (소프트 바운스는 SES가 일정 시간 동안 재시도한 후 이메일을 전송하는 데 실패한 경우에만 포함됩니다.)

이메일 클릭함

수신자가 이메일에서 하나 이상의 링크를 클릭했습니다.

이메일 수신 거부 접수됨

이메일이 수신자의 메일 서버로 성공적으로 전송되었지만 수신자가 이를 스팸으로 표시했습니다.

이메일 배달됨

SES가 이메일을 수신자의 메일 서버로 성공적으로 전송했습니다.

이메일 전송 지연됨

일시적인 문제가 발생하여 수신자의 메일 서버로 이메일을 전송할 수 없습니다. 예를 들어 수신자의 받은 편지함이 가득 찼거나 이메일 수신 서버에 일시적인 문제가 발생했을 때 전송 지연이 발생할 수 있습니다.

이메일 열림

수신자가 메시지를 수신하여 자신의 이메일 클라이언트에서 열었습니다.

이메일 거부됨

SES가 이메일을 수락했으나 이메일에 바이러스가 포함된 것으로 판단되어 수신자의 메일 서버로 전송하려고 시도하지 않았습니다.

이메일 렌더링 실패

템플릿 렌더링 문제로 인해 이메일이 전송되지 않았습니다. 이 이벤트 유형은 템플릿 데이터가 누락되었을 때 또는 템플릿 파라미터와 데이터 사이에 불일치가 있을 때 발생할 수 있습니다. (이 이벤트 유형은 SendTemplatedEmail 또는 SendBulkTemplatedEmail API 작업을 사용하는 이메일을 전송할 때만 발생합니다.)

이메일 전송됨

전송 요청이 성공했으며 SES는 메시지를 수신자의 메일 서버로 전송합니다. (계정 수준 또는 전역 금지를 사용하는 경우 SES가 여전히 전송으로 계산하지만 배달은 금지합니다.)

이메일 구독함

이메일이 성공적으로 전송되었지만 수신자가 이메일 헤더에서 List-Unsubscribe를 클릭하거나, 바닥글에서 Unsubscribe 링크를 선택하여 구독 기본 설정을 업데이트했습니다.

SES 이벤트 스키마 참조

AWS 서비스의 모든 이벤트에는 이벤트의 소스인 AWS 서비스, 이벤트가 생성된 시간, 이벤트가 발생한 계정 및 리전 등 이벤트에 대한 메타데이터가 포함된 공통 필드 세트가 있습니다. 이러한 일반 필드에 대한 정의는 EventBridge 사용 설명서이벤트 구조 참조를 참조하세요.

또한 각 이벤트에는 해당 특정 이벤트와 관련된 데이터를 포함하는 detail 필드가 있습니다. 다음 참조는 다양한 SES 이벤트에 대한 세부 정보 필드를 정의합니다.

EventBridge를 사용하여 SES 이벤트를 선택하고 관리할 때는 다음 사항을 염두에 두는 것이 유용합니다.

  • SES의 모든 이벤트 source 필드는 aws.ses로 설정됩니다.

  • detail-type 필드는 이벤트 유형을 지정합니다. SES 이벤트의 이벤트 유형 테이블을 참조하세요.

  • detail 필드는 해당 특정 이벤트와 관련된 데이터를 포함합니다.

    Virtual Deliverability Manager와 같은 일부 이벤트 유형의 경우 세부 정보 필드는 한정된 정적 값 집합으로 채워지는 다소 단순한 데이터 문자열입니다. 반면에 이메일 전송 이벤트의 세부 정보 필드는 이메일이 전송된 시점의 타임스탬프, 수신자 주소 및 기타 여러 이메일 속성 등 정적 값과 동적 값이 모두 포함된 다수의 세부 정보 하위 필드로 구성될 수 있으므로 더 복잡합니다.

Virtual Deliverability Manager 어드바이저 상태 스키마

다음 스키마 참조는 Virtual Deliverability Manager 어드바이저 상태 이벤트와 관련된 필드를 정의합니다.

모든 이벤트 스키마(예:version, id, account 등)에 나타나는 일반 필드에 대한 정의는 EventBridge 사용 설명서이벤트 구조 참조에서 찾을 수 있습니다. sourcedetail-type 필드는 SES 이벤트에 대한 SES 관련 값을 포함하므로 다음 참조에 포함됩니다.

source

이벤트를 생성한 서비스를 식별합니다. SES 이벤트의 경우 이 값은 aws.ses입니다.

detail-type

이벤트의 유형을 식별합니다.

이 필드의 값은 SES 이벤트Virtual Deliverability Manager 어드바이저 이벤트 테이블에 나열되어 있습니다.

detail

이벤트에 대한 정보를 포함하는 JSON 객체입니다. 이벤트를 생성하는 서비스에 따라 이 필드의 내용이 결정됩니다.

이 필드의 값은 다음과 같을 수 있습니다.

  • DKIM verification is not enabled.

  • DKIM verification has failed.

  • DKIM signing key length is below 2048 bits.

  • DMARC configuration was not found.

  • DMARC configuration could not be parsed.

  • DKIM record was not found.

  • DKIM record is not aligned.

  • MAIL FROM record is not aligned.

  • SPF record was not found.

  • SPF record for Amazon SES was not found.

  • SPF all qualifier is missing.

  • An SPF configuration issue was found.

  • BIMI record not found or configured without default selector.

  • BIMI has malformed TXT record.

예: Virtual Deliverability Manager 어드바이저 상태 이벤트

다음은 이벤트 유형이 Advisor Recommendation Status Open인 경우 Virtual Deliverability Manager 어드바이저 상태 이벤트의 예입니다. 이 예의 세부 이벤트 값은 SPF record was not found.입니다.

{ "version": "0", "id": "abcd9999-ef33-0123-90ab-abcdef666666", "detail-type": "Advisor Recommendation Status Open", "source": "aws.ses", "account": "012345678901", "time": "2023-11-15T17:00:59Z", "region": "us-east-1", "resources": [ "arn:aws:ses:us-east-1:012345678901:identity/vdm.events-publishing.cajun.syster-games.example.com" ], "detail": { "version": "1.0.0", "data": "SPF record was not found." } }

SES 이메일 전송 상태 스키마

다음 스키마 참조는 SES 이메일 전송 상태 이벤트와 관련된 필드를 정의합니다.

모든 이벤트 스키마(예:version, id, account 등)에 나타나는 일반 필드에 대한 정의는 EventBridge 사용 설명서이벤트 구조 참조에서 찾을 수 있습니다. sourcedetail-type 필드는 SES 이벤트에 대한 SES 관련 값을 포함하므로 다음 참조에 포함됩니다.

source

이벤트를 생성한 서비스를 식별합니다. SES 이벤트의 경우 이 값은 aws.ses입니다.

detail-type

이벤트의 유형을 식별합니다.

이 필드의 값은 SES 이벤트SES 이메일 전송 이벤트 테이블에 나열되어 있습니다.

detail

이벤트에 대한 정보를 포함하는 JSON 객체입니다. 이벤트를 생성하는 서비스에 따라 이 필드의 내용이 결정됩니다.

이 필드에 들어갈 수 있는 모든 값은 특정 시점에 전송되는 각 고유 이메일에 의해 생성되는 정적 및 동적 값으로 구성되므로 여기에 나열되지 않습니다. 그러나 제공되는 예를 통해 이 필드에 포함할 수 있는 유형 데이터를 이해할 수 있습니다. EventBridge 샌드박스를 사용하여 모든 이메일 전송 이벤트 유형에 대한 세부 정보 데이터 예시를 찾아볼 수 있습니다. EventBridge에서 샘플 이벤트 지정의 내용을 참조하세요.

SES 이메일 전송 이벤트 Email Rendering Failed에 대해 생성된 세부 정보 데이터의 예:

..., "detail": { "eventType": "Rendering Failure", "mail": { "timestamp": "2018-01-22T18:43:06.197Z", "source": "sender@example.com", "sourceArn": "arn:aws:ses:us-east-1:123456789012:identity/sender@example.com", "sendingAccountId": "123456789012", "messageId": "EXAMPLE7c191be45-e9aedb9a-02f9-4d12-a87d-dd0099a07f8a-000000", "destination": ["recipient@example.com"], "headersTruncated": false, "tags": { "ses:configuration-set": ["ConfigSet"] } }, "failure": { "errorMessage": "Attribute 'attributeName' is not present in the rendering data.", "templateName": "MyTemplate" } }
예: 이메일 전송 상태 이벤트

다음은 이벤트 유형 Email Rendering Failed에 대한 전체 이메일 전송 상태 이벤트의 예입니다. 이 예의 세부 이벤트 값은 특정 이메일에 대한 이메일 전송 이벤트를 기반으로 하는 정적 및 동적 값의 조합입니다.

{ "version": "0", "id": "12a18625-3328-fafd-2809-a5e16004f112", "detail-type": "Email Rendering Failed", "source": "aws.ses", "account": "123456789012", "time": "2023-07-17T16:48:05Z", "region": "us-east-1", "resources": ["arn:aws:ses:us-east-1:123456789012:identity/example.com"], "detail": { "eventType": "Rendering Failure", "mail": { "timestamp": "2018-01-22T18:43:06.197Z", "source": "sender@example.com", "sourceArn": "arn:aws:ses:us-east-1:123456789012:identity/sender@example.com", "sendingAccountId": "123456789012", "messageId": "EXAMPLE7c191be45-e9aedb9a-02f9-4d12-a87d-dd0099a07f8a-000000", "destination": ["recipient@example.com"], "headersTruncated": false, "tags": { "ses:configuration-set": ["ConfigSet"] } }, "failure": { "errorMessage": "Attribute 'attributeName' is not present in the rendering data.", "templateName": "MyTemplate" } } }

SES 이벤트에 EventBridge 사용

기본적으로 SES는 EventBridge 기본 이벤트 버스로 이벤트를 보냅니다. 기본 이벤트 버스에 규칙을 만들어 EventBridge가 하나 이상의 지정된 대상으로 보낼 특정 이벤트를 식별할 수 있습니다. 각 규칙에는 이벤트가 이벤트 버스에 도착할 때 EventBridge가 이벤트를 일치시키는 데 사용하는 이벤트 패턴이 포함되어 있습니다. 이벤트가 지정된 규칙의 이벤트 패턴과 일치하면 EventBridge는 이벤트를 규칙에 지정된 대상으로 보냅니다.

EventBridge에서 이벤트 패턴을 정의하는 작업은 일반적으로 새 규칙을 만들거나 기존 규칙을 편집하는 대규모 프로세스의 일부입니다. EventBridge 규칙을 만드는 방법에 대한 자세한 정보는 EventBridge 사용 설명서이벤트에 대응하는 Amazon EventBridge 규칙 만들기를 참조하세요.

EventBridge의 샌드박스 특성을 사용하면 먼저 규칙을 만들거나 편집할 필요 없이 이벤트 패턴을 빠르게 정의하고 샘플 이벤트를 사용하여 패턴이 원하는 이벤트와 일치하는지 확인할 수 있습니다. 샌드박스 사용에 대한 자세한 지침은 EventBridge 사용 설명서EventBridge 샌드박스를 사용하여 이벤트 패턴 테스트를 참조하세요.

EventBridge 샌드박스에서 SES 샘플 이벤트 지정

SES 이벤트의 샘플 이벤트를 선택하여 생성한 이벤트 패턴을 테스트하는 데 사용할 수 있습니다.

EventBridge 샌드박스에서 SES 샘플 이벤트를 지정하려면
  1. Amazon EventBridge 콘솔(https://console.aws.amazon.com/events/)을 엽니다.

  2. 탐색 창에서 개발자 리소스를 선택한 다음, 샌드박스를 선택하고 샌드박스 페이지에서 이벤트 패턴 탭을 선택합니다.

  3. 이벤트 소스에서 AWS 이벤트 또는 EventBridge 파트너 이벤트를 선택합니다.

  4. 샘플 이벤트 섹션의 샘플 이벤트 유형에서 AWS 이벤트를 선택합니다.

  5. 샘플 이벤트에서 SES까지 아래로 스크롤한 다음 원하는 SES 이벤트를 선택합니다.

    EventBridge는 이벤트 유형에 대한 모든 세부 정보 데이터와 함께 샘플 이벤트를 표시합니다.

    이 이벤트를 사용하여 이벤트 패턴 섹션에서 생성한 이벤트 패턴을 테스트하거나 패턴 테스트용 샘플 이벤트를 직접 생성하기 위한 기반으로 사용할 수 있습니다(이 내용은 다음 섹션에서 다룸).

SES 이벤트의 이벤트 패턴 생성 및 테스트

이전 섹션에서 설명했듯이 샘플 이벤트를 선택한 후에는 이벤트 패턴을 생성하고 샘플 이벤트를 사용하여 이벤트와 원하는 대로 일치하는지 확인할 수 있습니다.

EventBridge 샌드박스에서 SES 이벤트와 일치하는 이벤트 패턴을 생성하고 테스트하려면
  1. Amazon EventBridge 콘솔(https://console.aws.amazon.com/events/)을 엽니다.

  2. 탐색 창에서 개발자 리소스를 선택한 다음, 샌드박스를 선택하고 샌드박스 페이지에서 이벤트 패턴 탭을 선택합니다.

  3. 이벤트 소스AWS 이벤트 또는 EventBridge 파트너 이벤트를 선택하고 이전 섹션에 설명된 대로 테스트할 샘플 이벤트를 선택합니다.

  4. 생성 방법까지 아래로 스크롤하고 패턴 양식 사용을 선택합니다.

  5. 이벤트 패턴 섹션의 이벤트 소스에서 AWS 서비스를 선택합니다.

  6. AWS 서비스에서 SES를 선택합니다.

  7. 이벤트 유형에서 일치시키려는 SES 이벤트 유형을 선택합니다.

    EventBridge는 선택한 SES 이벤트와 일치하는 sourcedetail-type 필드로 구성된 최소 이벤트 패턴을 표시합니다.

    두 예에서 첫 번째 이벤트 패턴은 모든 Advisor Recommendation Status Resolved 이벤트와 일치하고, 두 번째 이벤트 패턴은 모든 Email Bounced 이벤트와 일치합니다.

    { "source": ["aws.ses"], "detail-type": ["Advisor Recommendation Status Resolved"] }
    { "source": ["aws.ses"], "detail-type": ["Email Bounced"] }
  8. 이벤트 패턴을 변경하려면 패턴 편집을 선택하고 JSON 편집기에서 변경합니다.

    하나 이상의 세부 정보 데이터 필드에 있는 값을 일치시킬 수도 있습니다. 여기에는 필드 값에 가능한 여러 값을 지정하는 것도 포함됩니다.

    다음 예에서는 동일한 세부 정보 값을 가진 모든 Virtual Deliverability Manager 어드바이저 이벤트를 찾기 위해 data 필드 값이 DKIM record was not found로 지정되어 있는 생성된 최소 이벤트 패턴에 세부 정보 필드가 추가되었습니다.

    { "source": ["aws.ses"], "detail-type": ["Advisor Recommendation Status Resolved"], "detail": { "data": ["DKIM record was not found."] } }

    이 예에서는 2024-08-05noreply@example.com에서 전송되고 반송된 모든 이메일에서 생성된 이벤트를 보고하기 위해 세부 정보 하위 필드가 추가되었습니다. (여기에는 콘텐츠 필터링의 일부로 접두사 일치가 사용됩니다.)

    { "source": ["aws.ses"], "detail-type": ["Email Bounced"], "detail": { "mail": { "timestamp": [{ "prefix": "2024-08-05" }], "source": ["noreply@example.com"] } } }

    EventBridge 사용 설명서이벤트 패턴을 꼭 읽으시기 바랍니다. JSON 편집기에 입력하는 이벤트 패턴 값은 배열로 간주되므로 대괄호 [...]로 묶어야 한다는 내용이 설명되어 있습니다. 이 정보와 함께 고급 이벤트 패턴을 구성하는 방법에 관한 추가 정보도 제공됩니다.

  9. 이벤트 패턴이 위의 샘플 이벤트 창에서 지정한 샘플 이벤트와 일치하는지 테스트하려면 패턴 테스트를 선택합니다. 일치하면 JSON 편집기 하단의 녹색 배너에 "이벤트 패턴과 일치하는 샘플 이벤트"라고 표시됩니다.

  10. 패턴 테스트를 선택한 후 오류 해결하기:

    • JSON 관련 오류가 있는 경우 이유를 알려주는 메시지가 표시됩니다. 예: "이벤트 패턴이 유효하지 않습니다. 이유: "데이터"는 5행, 14열의 객체 또는 배열이어야 합니다. 이 문제를 해결하려면 5행의 값을 대괄호 [...]로 묶어야 합니다.

    • 샘플 이벤트의 값과 이벤트 패턴의 값 사이에 불일치가 있는 경우 "샘플 이벤트가 이벤트 패턴과 일치하지 않음" 메시지가 표시됩니다. 이는 테스트하려는 하나 이상의 값이 샘플 이벤트 생성기에서 생성된 예제 값과 다름을 의미합니다. 이 문제를 해결하려면 나머지 단계를 계속 진행합니다.

  11. 이벤트 패턴을 성공적으로 테스트하기 위해 샘플 이벤트의 샘플 값을 변경하려면 샘플 이벤트 창에서 JSON 편집기 아래의 복사를 선택합니다.

  12. 편집기 위의 샘플 이벤트 유형에서 내 이름 입력 옆의 라디오 버튼을 선택합니다.

  13. 샘플 이벤트를 JSON 편집기에 붙여넣고 이벤트 패턴에 사용 중인 모든 필드에 대해 이벤트 패턴에 지정한 값과 일치하도록 동일한 필드의 값을 바꿉니다.

  14. 아래로 스크롤하여 이벤트 패턴 창으로 이동하고 패턴 테스트를 다시 선택합니다. 모든 값이 올바르게 입력되고 일치하는 경우 JSON 편집기 하단의 녹색 배너에 "이벤트 패턴과 일치하는 샘플 이벤트"라고 표시됩니다.

추가 EventBridge 리소스

EventBridge를 사용하여 이벤트를 처리하고 관리하는 방법에 대한 자세한 내용은 Amazon EventBridge 사용 설명서의 다음 주제를 참조하세요.

  • 이벤트 버스의 작동 방식에 대한 자세한 내용은 Amazon EventBridge 이벤트 버스를 참조하세요.

  • 이벤트 구조에 대한 자세한 내용은 이벤트를 참조하세요.

  • 이벤트를 규칙과 일치시킬 때 EventBridge가 사용할 이벤트 패턴을 구성하는 방법에 대한 자세한 내용은 이벤트 패턴을 참조하세요.

  • EventBridge에서 처리하는 이벤트를 지정하는 규칙을 만드는 방법에 대한 자세한 내용은 규칙을 참조하세요.

  • EventBridge가 일치하는 이벤트를 보낼 서비스나 기타 대상을 지정하는 방법에 대한 자세한 내용은 대상을 참조하세요.