如何使用 AWS API 获取 AWS 月度发票 PDF?

CDu*_*Duv 12 billing amazon-web-services web-scraping

有没有办法以编程方式下载会计部门每个月问我的PDF月发票?

我可以从 AWS 控制台获取它们(例如https://console.aws.amazon.com/billing/home?region=eu-west-3#/bills?year=2019&month=3),那里有发票的链接。

在我点击下载发票的那一刻,我可以看到对以下 URL 的 HTTP 请求: https://console.aws.amazon.com/billing/rest/v1.0/bill/invoice/generate?generatenew=true&invoiceGroupId=_SOME_ID_&invoicenumber=_SOME_ID_

然后是对实际提供 PDF 文件的 URL 的最终请求: https://console.aws.amazon.com/billing/rest/v1.0/bill/invoice/download?invoiceGroupId=_SOME_ID_&invoicenumber=_SOME_ID_

我找不到 AWS API 上的文档来获取此类发票文档(有一些用于账单报告和其他内容,但没有用于“官方”文档),所以我开始问自己它是否可用?

在废弃 AWS 控制台(通过ScrapySeleniumPuppeteer)之前,我询问了社区;)

注意:我知道 AWS 可以通过电子邮件发送发票 P​​DF,但我宁愿直接从 AWS 获取,而不是从 IMAP/POP 电子邮件服务器获取。

Mol*_*Man 3

您可以使用 aws cli 或 aws sdk 获取 json 格式的数据。然后将json转换为pdf(本答案中未涵盖)。

AWS 客户端

aws cli 提供get-cost-and-usage命令。通过调整参数,您可以获得与账单发票生成的输出相匹配的输出。

该命令的用法示例:

    aws ce get-cost-and-usage \
        --time-period Start=2019-03-01,End=2019-04-01 \
        --granularity MONTHLY \
        --metrics "BlendedCost" "UnblendedCost" "UsageQuantity" \
        --group-by Type=DIMENSION,Key=SERVICE
Run Code Online (Sandbox Code Playgroud)

产生以下输出

{
  "GroupDefinitions": [
    {
      "Type": "DIMENSION",
      "Key": "SERVICE"
    }
  ],
  "ResultsByTime": [
    {
      "TimePeriod": {
        "Start": "2019-03-01",
        "End": "2019-04-01"
      },
      "Total": {},
      "Groups": [
        {
          "Keys": [
            "AWS Budgets"
          ],
          "Metrics": {
            "BlendedCost": {
              "Amount": "3.0392156805",
              "Unit": "USD"
            },
            "UnblendedCost": {
              "Amount": "3",
              "Unit": "USD"
            },
            "UsageQuantity": {
              "Amount": "155",
              "Unit": "N/A"
            }
          }
        },
        {
          "Keys": [
            "AWS CloudTrail"
          ],
          "Metrics": {
            "BlendedCost": {
              "Amount": "0",
              "Unit": "USD"
            },
            "UnblendedCost": {
              "Amount": "0",
              "Unit": "USD"
            },
            "UsageQuantity": {
              "Amount": "720042",
              "Unit": "N/A"
            }
          }
        },
...
Run Code Online (Sandbox Code Playgroud)

AWS软件开发工具包

您还可以通过编程方式获取相同类型的数据。最简单的方法是使用 aws sdk。请参阅您要使用的 sdk 的文档。例如,有关 python sdk 的此功能的信息可以在此处找到。

  • 成本和使用报告不反映账单发票(例如积分/货币),到目前为止我没有发现任何通过API检索账单的可能性 (4认同)