Route 53 호스팅 영역 레코드가 변경되면 어떻게 알림을 받을 수 있습니까?

최종 업데이트 날짜: 2020년 4월 10일

Amazon Route 53에서 리소스 레코드 세트가 생성되거나 삭제될 때 사용자 지정 알림과 함께 이메일 응답을 받으려면 어떻게 해야 합니까?

간략한 설명

ChangeResourceRecordSets API 활동이 AWS CloudTrail에 기록될 때 트리거되는 Amazon EventBridge 또는 Amazon CloudWatch Events 규칙과 함께 사용자 지정 이벤트 패턴을 사용합니다. 그런 다음 응답을 Amazon Simple Notification Service(Amazon SNS) 주제로 라우팅합니다.

해결 방법

Amazon SNS 주제를 아직 생성하지 않은 경우 Amazon SNS 시작하기에 대한 지침을 따르십시오.

참고: Amazon SNS 주제는 미국 동부(버지니아 북부) 리전에 있어야 합니다. 자세한 내용은 CloudTrail을 사용하여 Route 53 API 호출 로깅을 참조하십시오.

Amazon EventBridge를 사용하여 이메일 알림 트리거

1.    EventBridge 콘솔을 엽니다.

2.    탐색 창에서 [Rules]를 선택하고 [Create rule]을 선택합니다.

3.    [Name and description(이름 및 설명)]에 규칙의 이름과 설명을 입력합니다.

4.    [패턴 정의]에서 [이벤트 패턴]을 선택한 다음 [서비스 기준으로 사전 정의된 패턴]을 선택합니다.

5.    [Service provider(서비스 제공자)] 드롭다운 메뉴에서 AWS를 선택합니다.

6.    [서비스 이름] 드롭다운 메뉴에서 Route 53를 선택합니다.

7.    [Event type(이벤트 유형)] 드롭다운 메뉴에서 [AWS PLI Call via CloudTrail(CloudTrail을 통한 AWS PLI 호출)]을 선택합니다.

8.    특정 API 호출에 대해 규칙을 트리거하려면 [특정 작업]을 선택합니다.

9.    텍스트 상자에 ChangeResourceRecordSets를 입력합니다.

10.    [대상] 드롭다운 메뉴에서 [SNS 주제]를 선택합니다.

11.    [Topic(주제)] 드롭다운 메뉴에서 SNS 주제를 선택합니다.

12.    [입력 구성]을 확장한 후 [변환기 입력]을 선택합니다.

13.    다음 입력 경로를 복사합니다. 그런 다음 [Input Path(경로 입력)]에 붙여 넣습니다.

{
"eventTime":"$.detail.eventTime",
"hostedZone":"$.detail.requestParameters.hostedZoneId",
"userName": "$.detail.userIdentity.sessionContext.sessionIssuer.userName",
"eventID":"$.detail.eventID"
}

14.    다음 입력 템플릿을 복사합니다. 그런 다음 [입력 템플릿]에 붙여 넣습니다.

“<eventTime>에 호스팅 영역 <hostedZone>에 하나 이상의 Route 53 레코드가 사용자 <userName>에 의해 수정되었습니다. 이벤트 기록에서 이벤트를 직접 보고 이러한 변경 사항을 검토하려면 다음 링크를 사용하십시오. 이벤트 기록에서 이벤트를 사용할 수 있을 때까지 최대 15분이 걸릴 수 있습니다. https://console.aws.amazon.com/cloudtrail/home?region=us-east-1#/events?EventId=<eventID>"

15.    [Create(생성)]를 선택합니다.

16.    이벤트 유형이 트리거되면 다음과 유사한 이벤트 기록에 대한 콘솔 링크가 포함된 14단계의 사용자 지정 필드가 채워진 SNS 이메일 알림을 받게 됩니다.

"At 2020-01-08T17:34:13Z, one or more Route53 records within Hosted Zone
 Z2QQOQ12345678 were modified by user exampleuser. To view the event 
directly in your Event History and review these changes, use the 
following link. Note that the event may take up to 15 minutes to 
be available in your Event History: 
https://console.aws.amazon.com/cloudtrail/home?region=us-east-1#/events?EventId=18c12bff-c379-1234-993f-41d3312342f99"

이메일 알림을 트리거하는 CloudWatch Events

1.    CloudWatch 콘솔을 엽니다.

2.    탐색 창에서 [Rules]를 선택하고 [Create rule]을 선택합니다.

3.    [Service Name(서비스 이름)] 드롭다운 메뉴에서 Route 53를 선택합니다.

4.    [Event type(이벤트 유형)] 드롭다운 메뉴에서 [AWS PLI Call via CloudTrail(CloudTrail을 통한 AWS PLI 호출)]을 선택합니다.

5.    특정 API 호출에 대해 규칙을 트리거하려면 [특정 작업]을 선택합니다.

6.    텍스트 상자에 ChangeResourceRecordSets를 입력합니다.

7.    [Targets]에서 [Add target]을 선택합니다.

8.    [Select Target(대상 선택)]에서 [SNS topic(SNS 주제)]을 선택합니다.

9.    [Targets(대상)] 드롭다운 메뉴에서 [SNS topic(SNS 주제)]을 선택합니다.

10.    [Topic(주제)] 드롭다운 메뉴에서 SNS 주제를 선택합니다.

11.    [Configure input]을 확장한 후 [Input Transformer]를 선택합니다.

12.    다음 입력 경로를 복사합니다. 그런 다음 [Input Path(경로 입력)]에 붙여 넣습니다.

{
"eventTime":"$.detail.eventTime",
"hostedZone":"$.detail.requestParameters.hostedZoneId",
"userName": "$.detail.userIdentity.sessionContext.sessionIssuer.userName",
"eventID":"$.detail.eventID"
}

13.    다음 입력 템플릿을 복사합니다. 그런 다음 [입력 템플릿]에 붙여 넣습니다.

“<eventTime>에 호스팅 영역 <hostedZone>에 하나 이상의 Route 53 레코드가 사용자 <userName>에 의해 수정되었습니다. 이벤트 기록에서 이벤트를 직접 보고 이러한 변경 사항을 검토하려면 다음 링크를 사용하십시오. 이벤트 기록에서 이벤트를 사용할 수 있을 때까지 최대 15분이 걸릴 수 있습니다. https://console.aws.amazon.com/cloudtrail/home?region=us-east-1#/events?EventId=<eventID>"

14.    [Configure details]를 선택합니다.

15.    [Configure rule details(규칙 세부 정보 구성)]에서 규칙의 이름 및 설명을 입력한 후 [Create rule(규칙 생성)]을 선택합니다.

16.    이벤트 유형이 트리거되면 다음과 비슷한 13단계에서 채워진 사용자 지정 필드가 포함된 SNS 이메일 알림을 받게 됩니다.

"At 2020-01-08T17:34:13Z, one or more Route 53 records within Hosted Zone Z2QQOQ12345678 were modified by user exampleuser. To view the event directly in your Event History and review these changes, use the following link. Note that the event may take up to 15 minutes to be available in your Event History: https://console.aws.amazon.com/cloudtrail/home?region=us-east-1#/events?EventId=18c12bff-c379-4d5f-993f-41d3312342f99"

출력 구문 분석

SNS 주제 알림을 사용하여 ChangeResourceRecordSets API 호출의 일부로 전달된 특정 변경 작업, 레코드 이름, 레코드 유형 및 값을 표시할 수 있습니다. 하지만 다음 예제에서는 여러 변경 사항이 있는 배치에 대한 출력을 구문 분석하기 어려울 수 있습니다.

예제 입력 경로:

{
"eventTime":"$.detail.eventTime",
"hostedZone":"$.detail.requestParameters.hostedZoneId",
"userName": "$.detail.userIdentity.sessionContext.sessionIssuer.userName",
"eventID":"$.detail.eventID",
"action":"$.detail.requestParameters.changeBatch.changes[*].action",
"recordType":"$.detail.requestParameters.changeBatch.changes[*].resourceRecordSet.type",
"recordName":"$.detail.requestParameters.changeBatch.changes[*].resourceRecordSet.name",
"value":"$.detail.requestParameters.changeBatch.changes[*].resourceRecordSet.resourceRecords[*].value"
}

예제 입력 템플릿:

“<eventTime>에 호스팅 영역 <hostedZone>에 레코드 유형 <recordType>의 Route 53 레코드 <recordName>이 사용자 <userName>에 의해 수정되었습니다. 레코드 값은 <value>로 구성되었습니다. 이벤트 기록에서 이벤트를 직접 보고 이러한 변경 사항을 검토하려면 다음 링크를 사용하십시오. 이벤트 기록에서 이벤트를 사용할 수 있을 때까지 최대 15분이 걸릴 수 있습니다. https://console.aws.amazon.com/cloudtrail/home?region=us-east-1#/events?EventId=<eventID>"

알림 예:

"At 2020-01-08T18:38:25Z, Route 53 record(s) 
[eventtest1.example.com,eventtest2.example.com,eventtest3.example.com] 
of record type(s) [A,A,A] within Hosted Zone Z2QQOQG4PLKFJ3 were 
modified by user testuser. The record values were configured to 
[1.1.1.1,2.2.2.2,3.3.3.3,4.4.4.4,5.5.5.5,6.6.6.6,10.10.10.10,15.15.15.15,20.20.20.20].
 To view the event directly in your Event History and review these 
changes, use the following link. Note that the event may 
take up to 15 minutes to be available in your Event History: 
https://console.aws.amazon.com/cloudtrail/home?region=us-east-1#/events?EventId=6ce46abc-12345678-a286-090aded68b29"

SNS 주제 알림을 통해 변경 사항에 대한 모든 세부 정보를 수신하고 더 읽기 쉬운 형식으로 표시하려면 AWS Lambda를 사용하는 것이 좋습니다. 예를 들어 작업, 레코드 유형, 레코드 이름 및 값에 대한 데이터 어레이를 구문 분석하기 위해 전체 JSON 이벤트를 Lambda 함수 대상에 전달할 수 있습니다.