有没有办法以编程方式下载会计部门每月问我的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电子邮件服务器获取。
您可以使用aws cli或aws sdk以json格式获取数据。然后将json转换为pdf(本答案未涵盖)。
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。请参阅您要使用的sdk的文档。例如,有关python sdk此功能的信息可以在here找到。