

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Resolver 查询日志记录
<a name="resolver-query-logs"></a>

您可以记录以下 DNS 查询：
+ 源自您指定的 Amazon Virtual Pri VPCs vate Cloud 的查询，以及对这些 DNS 查询的响应。
+ 来自使用入站 Resolver 端点的本地部署资源的查询。
+ 使用出站 Resolver 端点进行递归 DNS 解析的查询。
+ 使用 Resolver DNS 防火墙规则阻止、允许或监控域列表的查询。

VPC 解析器查询日志包含以下值：
+ 创建 VPC 的 AWS 区域
+ 查询源自的 VPC 的 ID
+ 查询源自的实例的 IP 地址
+ 查询源自的资源的实例 ID
+ 首次进行查询的日期和时间
+ 请求的 DNS 名称（例如 prod.example.com）
+ DNS 记录类型 (如 A 或 AAAA)
+ DNS 响应代码，如 `NoError` 或 `ServFail`
+ DNS 响应数据，如在对 DNS 查询做出的响应中返回的 IP 地址
+ 对 DNS Firewall 规则操作的响应

有关记录的所有值的详细列表以及示例，请参阅 [VPC 解析器查询日志中显示的值](resolver-query-logs-format.md)。

**注意**  
按照 DNS 解析器的标准配置，解析器将 DNS 查询缓存一段时间长度由解析器的 time-to-live (TTL) 决定。Route 53 VPC 解析器会缓存源自您的查询 VPCs，并尽可能从缓存中做出响应以加快响应速度。VPC Resolver 查询日志仅记录唯一查询，而不记录 VPC 解析器能够从缓存中响应的查询。  
例如，假设查询日志配置正在记录查询的其中一个 EC2 实例提交了 VPCs 对 accounting.example.com 的请求。VPC 解析器会缓存对该查询的响应，并记录查询。如果同一实例的弹性网络接口在 VPC 解析器缓存的 TTL 内查询 accounting.example.com，则 VPC 解析器会响应来自缓存的查询。未记录第二个查询。

您可以将日志发送到以下 AWS 资源之一：
+ Amazon CloudWatch 日CloudWatch 志（日志）日志组
+ Amazon S3 (S3) 存储桶
+ Firehose 传输流

有关更多信息，请参阅 [AWS 您可以向其发送 VPC 解析器查询日志的资源](resolver-query-logs-choosing-target-resource.md)。

**Topics**
+ [AWS 您可以向其发送 VPC 解析器查询日志的资源](resolver-query-logs-choosing-target-resource.md)
+ [管理 Resolver 查询日志记录配置](resolver-query-logging-configurations-managing.md)

# AWS 您可以向其发送 VPC 解析器查询日志的资源
<a name="resolver-query-logs-choosing-target-resource"></a>

**注意**  
如果您希望记录具有较高每秒查询 (QPS) 的工作负载的查询，则应使用 Amazon S3 确保您的查询日志在写入目标时不会受到节流限制。如果您使用 Amazon CloudWatch，则可以提高该`PutLogEvents`操作的每秒请求次数上限。要了解有关提高 CloudWatch 限制的更多信息，请参阅 *Amazon CloudWatch 用户指南*中的[CloudWatch 日志配额](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch_limits_cwl.html)。

您可以将 VPC 解析器查询日志发送到以下 AWS 资源：

**亚马逊 CloudWatch 日志（亚马逊 CloudWatch 日志）日志组**  
您可以使用 Logs Insights 来分析日志并创建指标与告警。  
有关更多信息，请参阅 [Amazon CloudWatch 日志用户指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/)。

**Amazon S3 (S3) 存储桶**  
S3 存储桶对于长期日志归档来说非常经济。延迟通常较高。  
支持所有 S3 服务器端加密选项。有关更多信息，请参阅《Amazon S3 用户指南》**中的[使用服务器端加密保护数据](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)。  
如果您选择使用 AWS KMS 密钥进行服务器端加密 (SSE-KMS)，则必须更新客户托管密钥的密钥策略，以便日志传输账户可以写入您的 Amazon S3 存储桶。*有关与 SSE-KMS 一起使用的所需密钥策略的更多信息，请参阅[亚马逊用户指南中的 Amazon S3 存储桶服务器端加密](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-infrastructure-V2-S3.html#AWS-logs-SSE-KMS-S3-V2)。 CloudWatch *  
如果 S3 存储桶位于您拥有的账户中，则所需的权限会自动添加到您的存储桶策略中。如果要将日志发送到不属于您的账户中的 S3 存储桶，则 S3 存储桶的拥有者必须在其存储桶策略中为您的账户添加权限。例如：    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "CrossAccountAccess",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "delivery.logs.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::your_bucket_name/AWSLogs/your_caller_account/*"
        },
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "delivery.logs.amazonaws.com"
            },
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::your_bucket_name"
        },
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "iam_user_arn_or_account_number_for_root"
            },
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::your_bucket_name"
        }
    ]
}
```
 如果要将日志存储在组织的中央 S3 存储桶中，我们建议您从集中账户（具有写入中央存储桶的必要权限）设置查询日志记录配置，并使用 [RAM](query-logging-configurations-managing-sharing.md) 以跨账户共享配置。
有关更多信息，请参阅 [Amazon Simple Storage Service 用户指南](https://docs.aws.amazon.com/AmazonS3/latest/userguide/)。

**Firehose 传输流**  
您可以将日志实时流式传输到亚马逊 OpenSearch 服务、Amazon Redshift 或其他应用程序。  
有关更多信息，请参阅[《Amazon Data Firehose 开发人员指南》](https://docs.aws.amazon.com/firehose/latest/dev/)。

有关 Resolver 查询日志的定价信息，请参阅 [Amazon CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing/)。

CloudWatch 使用 VPC 解析器日志时，即使日志直接发布到 Amazon S3，也会收取销售日志费用。有关更多信息，请参阅按照 [Amazon *定价的日志* CloudWatch 定价](https://aws.amazon.com//cloudwatch/pricing/#Vended_Logs)。

# 管理 Resolver 查询日志记录配置
<a name="resolver-query-logging-configurations-managing"></a>

## 配置（VPC 解析器查询日志）
<a name="resolver-query-logs-configuring"></a>

您可以通过两种方式配置 VPC 解析器查询日志：
+ **直接 VPC 关联**- VPCs 直接关联到查询日志配置。
+ 配置@@ **文件关联**-将查询日志配置关联到 Route 53 配置文件，这会将日志记录应用于与该配置文件 VPCs关联的所有配置。有关更多信息，请参阅 [将 VPC 解析器查询日志配置关联到 Route 53 配置文件](profile-associate-query-logging.md)。

要开始记录源自您的 DNS 查询 VPCs，请在 Amazon Route 53 控制台中执行以下任务：<a name="resolver-query-logs-configuring-procedure"></a>

**要配置 Resolver 查询日志记录**

1. 登录 AWS 管理控制台 并打开 Route 53 控制台，网址为[https://console.aws.amazon.com/route53/](https://console.aws.amazon.com/route53/)。

1. 展开 Route 53 控制台菜单。在控制台的左上角，选择三个水平条 (![\[Menu icon\]](http://docs.aws.amazon.com/zh_cn/Route53/latest/DeveloperGuide/images/menu-icon.png)) 图标。

1. 在 Resolver 菜单中，选择 **Query logging**（查询日志记录）。

1. 在区域选择器中，选择要在其中创建查询日志配置的 AWS 区域。该区域必须与您创建要记录 DNS 查询的区域相同。 VPCs 如果您有 VPCs 多个区域，则必须为每个区域创建至少一个查询日志配置。

1. 选择 **Configure query logging**（配置查询日志记录）。

1. 指定以下值：  
**查询日志记录配置名称**  
为查询日志记录配置输入名称。名称会显示在控制台的查询日志配置列表中。输入名称将有助于以后查找此配置。  
**查询日志的目标保存位置**  
选择您希望 VPC 解析器向其发送查询日志的 AWS 资源类型。有关如何在选项（CloudWatch 日志组、S3 存储桶和 Firehose 传输流）中进行选择的信息，请参阅。[AWS 您可以向其发送 VPC 解析器查询日志的资源](resolver-query-logs-choosing-target-resource.md)  
选择资源类型后，您可以创建该类型的另一个资源，也可以选择由当前 AWS 账户创建的现有资源。  
您只能选择在步骤 4 选择的 AWS 区域中创建的资源，也即您创建查询日志记录配置的区域。如果您选择创建新资源，则该资源将在同一区域创建。  
**VPCs 记录对的查询**  
此查询日志配置将记录源自您选择的 DNS 查询。 VPCs 选中当前区域中您希望 VPC 解析器记录查询的每个 VPC 的复选框，然后**选择**选择。  
**备选方案**：您可以将此查询日志配置关联到 Route 53 配置文件，这样可以将日志记录应用于与该配置文件 VPCs关联的所有配置，而不是 VPCs 直接关联。有关更多信息，请参阅 [将 VPC 解析器查询日志配置关联到 Route 53 配置文件](profile-associate-query-logging.md)。  
对于特定目标类型，VPC 日志传输只能启用一次。日志无法传送到同一类型的多个目标，例如，VPC 日志无法传送到 2 个 Amazon S3 目标。

1. 选择 **Configure query logging**（配置查询日志记录）。

**注意**  
您应在成功创建查询日志配置后数分钟内开始在日志中看到 VPC 中的资源执行的 DNS 查询。

# VPC 解析器查询日志中显示的值
<a name="resolver-query-logs-format"></a>

每个日志文件都为 Amazon Route 53 从相应边缘站点中的 DNS 解析程序接收的每个 DNS 查询包含一个日志条目。每个日志条目都包含以下值：

**版本**  
此查询日志格式的版本号。当前版本为 `1.1`。  
版本值包含 **major\$1version.minor\$1version** 格式的主要版本和次要版本。例如，您可以具有为 `1.7` 的 `version` 值，其中，`1 ` 是主要版本，`7` 是次要版本。  
如果 Route 53 对不向后兼容的日志结构进行更改，则主要版本将递增。这包括删除已存在的 JSON 字段，或更改字段内容的表示方式（例如，日期格式）。  
 如果更改将新字段添加到日志文件中，则 Route 53 会增加次要版本。如果新信息可用于 VPC 中的部分或所有现有 DNS 查询，则可能会发生这种情况。

**account\$1id**  
创建 VPC 的 AWS 账户的 ID。

**region**  
您创建 VPC 的 AWS 区域。

**vpc\$1id**  
查询源自的 VPC 的 ID。

**query\$1timestamp**  
提交查询的日期和时间，采用 ISO 8601 格式和协调世界时 (UTC)，例如，`2017-03-16T19:20:177Z`。  
有关 ISO 8601 格式的信息，请参阅维基百科文章 [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)。有关 UTC 的信息，请参阅维基百科文章[协调世界时](https://en.wikipedia.org/wiki/Coordinated_Universal_Time)。

**query\$1name**  
查询中指定的域名 (example.com) 或子域名 (www.example.com)。

**query\$1type**  
在请求中指定的 DNS 记录类型，或 `ANY`。有关 Route 53 支持的类型的信息，请参阅 [支持的 DNS 记录类型](ResourceRecordTypes.md)。

**query\$1class**  
查询的类。

**rcode**  
VPC 解析器在响应 DNS 查询时返回的 DNS 响应代码。此响应代码表示查询是否有效。最常见的响应代码是 `NOERROR`，表示查询有效。如果响应无效，则 Resolver 会返回响应代码，该代码可解释无效的原因。如需查看可能的响应代码列表，请参阅 IANA RCODEs 网站上的 [DNS](https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-6)。

**answer\$1type**  
VPC 解析器为响应查询而返回的值的 DNS 记录类型（例如 A、MX 或 CNAME）。有关 Route 53 支持的类型的信息，请参阅 [支持的 DNS 记录类型](ResourceRecordTypes.md)。

**rdata**  
VPC 解析器在响应查询时返回的值。例如，对于 A 记录，这是 IPv4 格式化的 IP 地址。对于别名记录，这是别名记录中的域名。

**answer\$1class**  
VPC 解析器对查询的响应的类别。

**srcaddr**  
查询源自的主机的 IP 地址。

**srcport**  
查询源自的实例上的端口。

**transport**  
用于提交 DNS 查询的协议。

**srcids**  
IDs `instance`、`resolver_endpoint`、和 DNS 查询源自或通过的。`resolver_network_interface`

**实例**  
查询源自的实例的 ID。  
 如果您在 Route 53 VPC 解析器查询日志中看到的实例 ID 在您的账户中不可见，则可能是因为 DNS 查询来自您使用的 Amazon EKS 或 Fargate 控制台。 AWS CloudShell AWS Lambda

**resolver\$1endpoint**  
将 DNS 查询传递到本地部署 DNS 服务器的解析程序端点的 ID。  
如果您的 CNAME 记录通过不同的解析程序端点跨越不同的转发规则进行链接，则查询日志仅显示链中使用的最后一个解析程序端点的 ID。要通过多个端点跟踪完整的解析路径，您可以关联不同查询日志记录配置中的日志。

**firewall\$1rule\$1group\$1id**  
查询中与域名匹配的 DNS Firewall 规则组 ID。仅当 DNS Firewall 找到与操作设置为提示或阻止的规则匹配时，才会填充此选项。  
有关防火墙规则组更多信息，请参阅 [DNS Firewall 规则组和规则](resolver-dns-firewall-rule-groups.md)。

**firewall\$1rule\$1action**  
查询中与域名匹配的规则指定的操作。仅当 DNS Firewall 找到与操作设置为提示或阻止的规则匹配时，才会填充此选项。

**firewall\$1domain\$1list\$1id**  
查询中与域名匹配的规则使用的域列表。仅当 DNS Firewall 找到与操作设置为提示或阻止的规则匹配时，才会填充此选项。

**additional\$1properties**  
日志传送事件的其他信息。**is\$1delayed**：日志的传送是否出现延迟。

# Route 53 VPC 解析器查询日志示例
<a name="resolver-query-logs-example-json"></a>

以下是一个解析程序查询日志示例：

```
          
      {
        "srcaddr": "4.5.64.102",
        "vpc_id": "vpc-7example",
        "answers": [
            {
                "Rdata": "203.0.113.9",
                "Type": "PTR",
                "Class": "IN"
            }
        ],
        "firewall_rule_group_id": "rslvr-frg-01234567890abcdef",
        "firewall_rule_action": "BLOCK",
        "query_name": "15.3.4.32.in-addr.arpa.",
        "firewall_domain_list_id": "rslvr-fdl-01234567890abcdef",
        "query_class": "IN",
        "srcids": {
            "instance": "i-0d15cd0d3example"
        },
        "rcode": "NOERROR",
        "query_type": "PTR",
        "transport": "UDP",
        "version": "1.100000",
        "account_id": "111122223333",
        "srcport": "56067",
        "query_timestamp": "2021-02-04T17:51:55Z",
        "region": "us-east-1"
    }
```

# 与其他 AWS 账户共享 Resolver 查询日志配置
<a name="query-logging-configurations-managing-sharing"></a>

您可以与其他账户共享您使用一个 AWS 账户创建的查询日志配置。 AWS 为了共享配置，Route 53 VPC Resolver 控制台与 AWS 资源访问管理器集成。有关 Resource Access Manager 的更多信息，请参阅 [Resource Access Manager 用户指南](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html)。

注意以下几点：

** VPCs 与共享查询日志配置关联**  
如果另一个 AWS 账户与您的账户共享了一个或多个配置，则您可以像 VPCs 关联您创建的配置一样 VPCs 与该配置关联。

**删除或取消共享配置**  
如果您与其他账户共享配置，然后删除该配置或停止共享，并且如果有一个或多个账户与该配置相关联，则 Route 53 VPC Resolver 将停止记录源自 VPCs 这些账户的 DNS 查询。 VPCs

**可以与配置关联的查询日志配置的最大数量 VPCs **  
当一个账户创建配置并与一个或多个其他账户共享配置时，每个账户将应用可与该配置关联的最大数量。 VPCs 例如，如果您的组织中有 10,000 个帐户，则可以在中央账户中创建查询日志配置并通过共享该配置将其共享 AWS RAM 给组织帐户。然后，组织账户会将该配置与其账户的查询日志配置 VPC 关联进行 VPCs 计数，每个 AWS 区域 限制为 100。但是，如果所有账户 VPCs 都在一个账户中，则可能需要提高该账户的服务限制。  
有关当前 VPC 解析器配额，请参阅[Route 53 VPC 解析器的配额](DNSLimitations.md#limits-api-entities-resolver)。

**Permissions**  
要与其他 AWS 账户共享规则，您必须拥有使用该[PutResolverQueryLogConfigPolicy](https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_PutResolverQueryLogConfigPolicy.html)操作的权限。

**对与之共享规则的 AWS 账户的限制**  
与其共享了规则的账户无法更改或删除该规则。

**标签**  
只有创建规则的账户可以添加、删除或查看规则上的标签。

要查看规则当前的共享状态（包括共享规则的账户或与其共享了规则的账户），以及将规则与其他账户共享，请执行以下步骤。<a name="resolver-rules-managing-sharing-procedure"></a>

**查看共享状态并与其他 AWS 账户共享查询日志配置**

1. 登录 AWS 管理控制台 并打开 Route 53 控制台，网址为[https://console.aws.amazon.com/route53/](https://console.aws.amazon.com/route53/)。

1. 在导航窗格中，选择 **Query Logging**（查询日志记录）。

1. 在导航栏上，选择您在其中创建了规则的区域。

   **Sharing status (共享状态)** 列显示当前账户所创建规则或者与当前账户所共享规则的当前共享状态。
   + **未共享**：当前 AWS 账户创建了规则，但该规则未与任何其他账户共享。
   + **Shared by me (由我共享)**：当前账户创建的规则并且已与一个或多个账户共享。
   + **Shared With me (与我共享)**：其他账户创建的规则并且已与当前账户共享。

1. 选择您要显示共享信息或者您要与其他账户共享的规则的名称。

   在**规则:*rule name***页面上，**所有者**下的值显示创建规则的账户的 ID。除非 **Sharing status (共享状态)** 的值为 **Shared with me (与我共享)**，否则这是当前账户。如果是共享的规则，则 **Owner (所有者)** 是创建该规则并与当前账户进行共享的账户。

   还会显示共享状态。

1. 选择**共享配置**以打开 AWS RAM 控制台

1. 要创建资源共享，请按照*《AWS RAM 用户指南》*中的[在 AWS RAM中创建资源共享](https://docs.aws.amazon.com/ram/latest/userguide/working-with-sharing-create.html)的步骤操作。
**注意**  
您无法更新共享设置。如果想要更改任何以下设置，您必须使用新设置重新共享规则，然后删除旧的共享设置。