亚马逊AWS官方博客

使用新的 API 以编程方式查看您的 AWS Free Tier 使用情况



从今天开始,您可以使用新的 AWS Free Tier API 查看 AWS Free Tier 的使用情况。您可以直接将 API 与 AWS 命令行界面(AWS CLI)结合使用,也可以使用 AWS SDK 将其集成到应用程序中。

AWS Free Tier 计划使您能够免费探索和试用 AWS 服务,但不能超过每项服务的指定限制。AWS Free Tier 包括三种不同类型的优惠

  • 永久免费,只要客户是 AWS 客户,他们就可以永久免费使用服务,但不能超过指定限制。
  • 免费使用 12 个月,允许客户自账户激活之日起一年内免费使用服务,但不能超过指定限制。
  • 短期试用,根据服务的不同,可以在指定的期限内免费使用,也可以一次性使用。

一旦开始开启 AWS 资源并与提供免费套餐的 AWS 服务进行交互,您需要跟踪在达到免费套餐限制方面的进展情况,这样您就知道何时改为即用即付定价模式。

您可以通过以下几种方式跟踪 AWS Free Tier 的使用情况:

我们来看看这个新 API 的实际应用。

将 AWS Free Tier API 与 AWS CLI 结合使用
我可以访问过去几个月创建的新账户。在这里,我使用 AWS 命令行界面(AWS CLI)来调用 GetFreeTierUsage API。

aws freetier get-free-tier-usage

响应是一个 JSON 文档,其中包含本账单周期内适用于该账户的每种优惠的当前使用情况说明。为简单起见,我在这里只展示了一些优惠。

{
    "freeTierUsages": [
        {
            "service": "Amazon Simple Queue Service",
            "operation": "",
            "usageType": "Requests",
            "region": "global",
            "actualUsageAmount": 294387.0,
            "forecastedUsageAmount": 679354.6153846154,
            "limit": 1000000.0,
            "unit": "Requests",
            "description": "1000000.0 Requests are always free per month as part of AWS Free Usage Tier (Global-Requests)",
            "freeTierType": "Always Free"
        },
        {
            "service": "Amazon Elastic Compute Cloud",
            "operation": "",
            "usageType": "EBS:VolumeUsage",
            "region": "global",
            "actualUsageAmount": 9.0,
            "forecastedUsageAmount": 33.0,
            "limit": 30.0,
            "unit": "GB-Mo",
            "description": "30.0 GB-Mo for free for 12 months as part of AWS Free Usage Tier (Global-EBS:VolumeUsage)",
            "freeTierType": "12 Months Free"
        },
        {
            "service": "Amazon Elastic Compute Cloud",
            "operation": "RunInstances:0002",
            "usageType": "BoxUsage:freetier.micro",
            "region": "global",
            "actualUsageAmount": 476.0,
            "forecastedUsageAmount": 851.0,
            "limit": 750.0,
            "unit": "Hrs",
            "description": "750.0 Hrs for free for 12 months as part of AWS Free Usage Tier (Global-BoxUsage:freetier.micro)",
            "freeTierType": "12 Months Free"
        },
        {
            "service": "Amazon Elastic Compute Cloud",
            "operation": "RunInstances",
            "usageType": "BoxUsage:freetier.micro",
            "region": "global",
            "actualUsageAmount": 225.0,
            "forecastedUsageAmount": 485.0,
            "limit": 750.0,
            "unit": "Hrs",
            "description": "750.0 Hrs for free for 12 months as part of AWS Free Usage Tier (Global-BoxUsage:freetier.micro)",
            "freeTierType": "12 Months Free"
        },
        {
            "service": "Amazon Redshift",
            "operation": "RunComputeNode:0001",
            "usageType": "Node:dc2.large",
            "region": "global",
            "actualUsageAmount": 367.0,
            "forecastedUsageAmount": 735.0,
            "limit": 750.0,
            "unit": "Hrs",
            "description": "750.0 Hrs for free per month during a short-term trial as part of AWS Free Usage Tier (Global-Node:dc2.large)",
            "freeTierType": "Free Trial"
        },
        ...
    ]
}

freeTierUsages 列表中,我找到了一些常见的优惠:

我们看看这些优惠的一些属性:

  • description 以可读的方式解释了优惠内容。
  • freeTierType 介绍了优惠类型:永久免费免费使用 12 个月免费试用(短期)。
  • unit 描述了用于衡量优惠使用情况的单位。例如,EC2 实例为 Hrs(小时),EBS 卷为 GB-Mo(每月 GB),Amazon SQS 为 Requests(请求)等等。

三个有趣的属性是优惠的限制(limit)、优惠的实际使用量(actualUsageAmount)和账单周期结束时(当月)的预测使用量(forecastedUsageAmount)。它们都基于优惠使用的单位。例如,Windows 和 Linux 计算优惠每月都有 750 小时的限制。对于存储优惠,限制为每月 30GB。对于 Amazon SQS,优惠的限制为每月 100 万个请求。

有关免费提供的限制和服务的详细信息,请参阅 AWS Free Tier 页面上的每张卡片以及每项服务的定价页面。AWS Free Tier API 提供的实际和预测使用量每天最多估算 3 次,类似于 AWS 成本和使用情况报告

如果预测使用量超过优惠的限制,如果我继续以同样的方式使用该服务,我希望在账单周期结束前改为即用即付定价模式。达到限制后,GetFreeTierUsage API 将不再跟踪实际使用情况。这意味着实际使用量不能超过其限制。如果是这种情况,API 就不会返回相应的优惠。

例如,我使用 AWS CLI 的 --query 选项查找预测超过限制的优惠:

aws freetier get-free-tier-usage --query 'freeTierUsages[?forecastedUsageAmount > limit]' 
{
    "freeTierUsages": [
        {
            "service": "Amazon Elastic Compute Cloud",
            "operation": "",
            "usageType": "EBS:VolumeUsage",
            "region": "global",
            "actualUsageAmount": 9.0,
            "forecastedUsageAmount": 33.0,
            "limit": 30.0,
            "unit": "GB-Mo",
            "description": "30.0 GB-Mo for free for 12 months as part of AWS Free Usage Tier (Global-EBS:VolumeUsage)",
            "freeTierType": "12 Months Free"
        },
        {
            "service": "Amazon Elastic Compute Cloud",
            "operation": "RunInstances:0002",
            "usageType": "BoxUsage:freetier.micro",
            "region": "global",
            "actualUsageAmount": 476.0,
            "forecastedUsageAmount": 851.0,
            "limit": 750.0,
            "unit": "Hrs",
            "description": "750.0 Hrs for free for 12 months as part of AWS Free Usage Tier (Global-BoxUsage:freetier.micro)",
            "freeTierType": "12 Months Free"
        }
    ]
}

根据这个结果,如果我想保持在免费套餐的限制范围内,我可以查看如何在 Windows 中使用 EBS 卷和 Amazon EC2 计算。

例如,对于每月可用 750 小时的 Windows EC2 实例,我目前使用了 476 个小时。按照这个速度,我预计将超过极限,达到大约 851 小时。如果我担心成本问题,我可以在不使用时或在夜间关闭 Windows 实例。

注意事项
此前,Free Tier API 并非公开可用,而是在 AWS Billing Console 的免费套餐页面供内部使用,您可以在其中找到相同的数据。我们希望公开 GetFreeTierUsage API 可以让您更好地享受 AWS 服务,充分利用 AWS Free Tier 优惠,了解哪些产品/服务是免费的,以及当您接近或超过限制时该怎么做。

您可以利用这些信息构建满足业务需求的自定义报告。例如,如果您想避免计算成本,可通过编程方式停止或休眠 EC2 实例,或者 EC2 Auto Scaling 组的大小设置为零。您可以使用任何 AWS SDK 创建 Web 应用程序或将这些数据集成到监控解决方案中。

一般来说,当优惠的使用量接近限制时,您可以发送额外的电子邮件或通知(例如,使用 Amazon SESAmazon SNS)。这可以帮助您在不产生额外费用的情况下充分享受优惠。如果您将使用预算金额设置为免费套餐限制,也可以使用 AWS Budgets 执行此操作。

如果某项优惠不再适用于此账户(例如,因为优惠已在上个月底过期),则相应的项目不会包含在列表中。如果保存以前调用 API 的结果,就可以将优惠列表与上一个账单周期内报告的优惠进行比较,查看哪些优惠最近已过期。

要了解有关跟踪 AWS Free Tier 使用情况的更多信息,我们在 AWS Skill Builder 上制作了三个 10 分钟的课程,在这个在线学习中心,您可以向 AWS 专家学习并在线培养云技能:

Danilo