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

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

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

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

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

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

SES 이벤트

다음 이벤트는 SES 기능에 의해 생성되어 기본 이벤트 버스로 전송됩니다 EventBridge. 각 이벤트 유형에 대한 세부 데이터를 비롯한 자세한 내용은 을 참조하십시오SES 이벤트 스키마 참조.

가상 딜리버리티 매니저 어드바이저 이벤트
이벤트 유형 설명

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

가상 배달 가능성 관리자 어드바이저에서 새 권장 사항이 개시될 때마다 생성되는 이벤트입니다.

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

가상 배달 가능성 관리자 어드바이저에서 권장 사항이 해결될 때마다 생성되는 이벤트입니다.

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 어드바이저 상태 이벤트와 관련된 필드를 정의합니다.

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

source

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

detail-type

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

이 필드의 값은 의 가상 배달 관리자 관리자 이벤트 테이블에 나열되어 있습니다. SES 이벤트

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.

예: 가상 배달 가능성 관리자 어드바이저 상태 이벤트

다음은 이벤트 유형이 Advisor Recommendation Status Open인 경우 가상 배달 가능성 관리자 어드바이저 상태 이벤트의 예입니다. 이 예제의 세부 이벤트 값은 입니다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, idaccount, 등) 에 나타나는 일반 필드에 대한 정의는 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

샌드박스에서 SES 샘플 이벤트를 지정하십시오. EventBridge

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

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

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

  3. 이벤트 소스의 경우 AWS 이벤트 또는 EventBridge 파트너 이벤트를 선택합니다.

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

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

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

    그런 다음 이 이벤트를 사용하여 이벤트 패턴 섹션에서 만든 이벤트 패턴을 테스트하거나 다음 섹션에서 다루는 패턴 테스트용 샘플 이벤트를 직접 만드는 기준으로 사용할 수 있습니다.

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

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

EventBridge 샌드박스의 SES 이벤트와 일치하는 이벤트 패턴을 만들고 테스트하려면
  1. https://console.aws.amazon.com/events/ 에서 아마존 EventBridge 콘솔을 엽니다.

  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 어드바이저 이벤트를 찾기 위해 생성된 최소 이벤트 DKIM record was not found 패턴에 세부 정보 data 필드를 필드 값과 같이 지정하여 추가했습니다.

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

    이 예시에서는 2024-08-05에 noreply@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. 편집기 위의 샘플 이벤트 유형에서 Enter my own 옆의 라디오 버튼을 선택합니다.

  13. 샘플 이벤트를 JSON 편집기에 붙여넣고 이벤트 패턴에서 사용 중인 모든 필드의 값을 이벤트 패턴에서 지정한 값과 일치하도록 바꾸십시오.

  14. 다시 아래로 스크롤하여 이벤트 패턴 패널로 이동한 다음 테스트 패턴을 다시 선택합니다. 모든 값을 올바르게 입력하고 일치하면 JSON 편집기 하단에 “샘플 이벤트가 이벤트 패턴과 일치함”이라는 녹색 배너가 표시됩니다.

추가 리소스 EventBridge

이벤트를 처리하고 관리하는 EventBridge 데 사용하는 방법에 대한 자세한 내용은 Amazon EventBridge User Guide의 다음 주제를 참조하십시오.