获取AWS CloundFront失效用法(上个月)

时间:2019-08-21 23:28:36

标签: java amazon-web-services aws-sdk amazon-cloudfront

我正在使用AWS Cloudfront Java SDK自动化某些任务,其中之一是使分布无效。我已经阅读到前1000个无效请求(实际上是路径)是免费的,之后它们是are billed

我没有看到SDK中的任何功能来获取上个月对该帐户(而非分配)执行的邀请请求总数。有什么办法吗?

如果无法使用SDK来获取它,我认为我将创建一个无效请求使用情况的本地记录。

2 个答案:

答案 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中。