如何知道我是否在使用较旧的 CloudFront API 版本?

上次更新时间:2019 年 4 月 23 日

我想知道我是否在使用较旧的 Amazon CloudFront API 版本,该版本不支持 CloudFront 的备用域名 (CNAME) 验证流程。我想主动更新调用这些 API 的应用程序。

解决方法

使用 AWS CloudTrail 日志和 Amazon Athena 查询可确定您是否在使用较旧的 CloudFront API 版本:

1.    在美国东部(弗吉尼亚北部)区域 (us-east-1) 为您的账户启用 CloudTrail 日志记录

提示:如果您已在美国东部(弗吉尼亚北部)区域启用 CloudTrail 日志记录,但没有设置日志轮换,则可以将当前日志的子集复制到新前缀中。这样一来,您可以对日志子集(而不是整个数据集)运行 Athena 查询。Athena 查询根据扫描的每 GB 数据计费,因此我们建议您仅查看最近 30 天的日志,以节省成本。

2.    在将 CloudTrail 日志写入 Amazon Simple Storage Service (Amazon S3) 存储桶之后,请为这些日志创建表格

3.    打开 Athena 控制台,将以下查询添加到新查询 1 框,然后选择运行查询

重要提示:请将 $databaseName.$tableName 替换为您的数据库和表格的名称。

SELECT apiversion, count() AS Total 
FROM $databaseName.$tableName
WHERE eventsource = 'cloudfront.amazonaws.com'
AND parse_datetime(apiversion, 'yyyy_MM_dd') <= parse_datetime('2015_12_22', 'yyyy_MM_dd')
GROUP BY apiversion
ORDER BY Total Desc;

该查询会返回使用较旧的 CloudFront API 版本的 API 调用的计数。如果查询不返回任何结果,则表示您的账户未使用较旧的 API 版本。

如果上一个查询返回了结果,则运行此附加查询以获取关于每个具体 API 调用的更多信息:

重要提示:请将 $databaseName.$tableName 替换为您的数据库和表格的名称。

SELECT useridentity.arn, sourceipaddress, eventname, useragent
FROM $databaseName.$tableName
WHERE eventsource = 'cloudfront.amazonaws.com'
AND parse_datetime(apiversion, 'yyyy_MM_dd') <= parse_datetime('2015_12_22', 'yyyy_MM_dd');

此查询会返回 AWS Identity and Access Management (IAM) 身份、源 IP 地址、API 调用(事件)以及与 API 调用关联的用户代理。通过这些信息,可以确定要将哪些应用程序更新为新的 CloudFront API 版本。


这篇文章对您是否有帮助?

您觉得我们哪些地方需要改进?


需要更多帮助?