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

时间:2019-04-25 12:37:49

标签: amazon-web-services web-scraping billing

是否可以通过编程方式下载会计部门每月问我的PDF每月发票?

我可以从AWS控制台获取它们(例如const string = "Plain text <p>First para content</p> Another plain text<p>Second para content</p> Another random text and other stuff <p>Third Para content</p>" ) 有发票链接的地方。

单击下载发票的那一刻,我可以看到对以下URL的HTTP请求: const arrayOfParagrahs = ['First para content', 'Second para content', 'Third Para content']

然后对实际提供PDF文件的URL发出最终请求: https://console.aws.amazon.com/billing/home?region=eu-west-3#/bills?year=2019&month=3

我无法在AWS API上找到用于获取此类发票文档的文档(有一些用于开票报告和其他内容,但没有用于“正式”文档的文档),所以我开始问自己是否可以使用?

在报废AWS控制台之前(通过 Scrapy Selenium Puppeteer ),我要问社区;)

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

1 个答案:

答案 0 :(得分: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的文档。例如,可以在here中找到有关python sdk的此功能的信息。