Route 53 ホストゾーンレコードが変更されたときに通知を受けるにはどうすればよいですか?

最終更新日: 2020 年 4 月 10 日

Amazon Route 53 でリソースレコードセットを作成または削除したときに、カスタム通知を含む E メールレスポンスを受け取るにはどうすればよいですか?

簡単な説明

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] を選択します。

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> によって変更されました。イベント履歴で直接イベントを表示し、これらの変更を確認するには、次のリンクを使用してください。イベントがイベント履歴 (https://console.aws.amazon.com/cloudtrail/home?region=us-east-1#/events?EventId=<eventID>) に表示されるまでに最大 15 分かかることがあります。」

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 イベント

1.    CloudWatch コンソールを開きます。

2.    ナビゲーションペインで [Rules] を選択し、続いて [Create rule] を選択します。

3.    [サービス名] ドロップダウンメニューで [Route 53] を選択します。

4.    [Event Type] ドロップダウンメニューで [AWS API Call via CloudTrail] を選択します。

5.    特定の API 呼び出しのルールをトリガーするには、[特定の操作] をクリックします。

6.    テキストボックスに [ChangeResourceRecordSets] と入力します。

7.    [Targets] で、[Add target] を選択します。

8.    [Select Target] で [SNS topic] を選択します。

9.    [Targets] ドロップダウンメニューで [SNS topic] を選択します。

10.    [Topic] ドロップダウンメニューで [SNS トピック] を選択します。

11.    [入力を設定] を展開し、[トランスフォーマーを入力] をクリックします。

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> によって変更されました。イベント履歴で直接イベントを表示し、これらの変更を確認するには、次のリンクを使用してください。イベントがイベント履歴 (https://console.aws.amazon.com/cloudtrail/home?region=us-east-1#/events?EventId=<eventID>) に表示されるまでに最大 15 分かかることがあります。」

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> に設定されました。イベント履歴で直接イベントを表示し、これらの変更を確認するには、次のリンクを使用してください。イベントがイベント履歴 (https://console.aws.amazon.com/cloudtrail/home?region=us-east-1#/events?EventId=<eventID>) に表示されるまでに最大 15 分かかることがあります。」

通知の例:

"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 関数ターゲットに渡して、アクション、レコードタイプ、レコード名、値のデータ配列を解析できます。