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

问题描述 投票:2回答:1

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

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

当我点击下载发票时,我可以看到对以下网址的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控制台之前(通过Scrapy,Selenium,Puppeteer)我问社区;)

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

amazon-web-services web-scraping billing
1个回答
0
投票

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

AWS cli

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

这产生以下输出

{
  "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"
            }
          }
        },
...

AWS开发SDK

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

© www.soinside.com 2019 - 2024. All rights reserved.