我正在使用AWS Cloudfront Java SDK自动化某些任务,其中之一是使分布无效。我已经阅读到前1000个无效请求(实际上是路径)是免费的,之后它们是are billed。
我没有看到SDK中的任何功能来获取上个月对该帐户(而非分配)执行的邀请请求总数。有什么办法吗?
如果无法使用SDK来获取它,我认为我将创建一个无效请求使用情况的本地记录。
答案 0 :(得分:1)
这不是通过API公开的。
您可以在Cost & Usage Report中找到它。
请记住,无效请求支持通配符,因此通常可以通过单个请求和单个路径来使您所需的所有内容无效。使用这种方法,您可能会使不必要的损失更多,但这有时是可以接受的折衷方案。
答案 1 :(得分:1)
在SDK中没有直接获得此方法的方法,但是,您可以在CloudTrail中监视CloudFront失效并在那里获取所需的数据。
我会发布一个代码示例,但是,虽然AWS完全掌握了我的技能,但JAVA却没有。但是,我检查了JAVA SDK,看来实现此目的的方法是可用的。在较高的级别上,您将在帐户上启用CloudTrail,然后在JAVA SDK中使用CloudTrail API的lookupEvents方法来查找名为CreateInvalidation
的事件。
尽管它不是JAVA中的直接示例,但您也可以从CLI进行此操作:
aws cloudtrail lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=CreateInvalidation
这将返回事件数组:
{
"Events": [
{
"EventId": "9a999999-9999-9aaa-aa99-a9999a9aa9aa",
"EventName": "CreateInvalidation",
"ReadOnly": "false",
"AccessKeyId": "ASXXXXXXXXXXXXXXXXXX",
"EventTime": 1566438448.0,
"EventSource": "cloudtrail.amazonaws.com",
"Username": "user.name",
"Resources": [],
"CloudTrailEvent": "{FULL-CLOUDTRAIL-EVENT-DATA-HERE}"
}
]
}
如您所见,每个事件都有一个时间戳记EventTime
。遍历数组,检查时间戳是否在所需的时间范围内,如果时间戳不在您的时间范围内,则可以简单地将其从数组中删除,然后只需对数组中的其余项进行计数即可。
请注意,API响应可能是分页的,因此您必须注意响应中的NextToken
,这表明还有更多事件要提取。
编辑:此外,值得注意的是,CloudFront是一项全球服务。作为一项全局服务,CloudFront事件记录在us-east-1
区域(see here)的CloudTrail中。