作为SaaS产品的一部分,我正在为客户在AWS中创建资源(主要是EC2,EBS磁盘和S3空间)。我希望能够获得这些资源的使用情况,以便能够将该使用情况发送给Stripe以便向我的用户收费和开具发票。
我一直认为标记是对特定客户的资源进行分组的一种好方法,因此,如果将这个标记放在其所有资源中,"Customer" => "cust_id_4894168127"
,那么我可以在伪代码API调用中做到这一点:
https://www.aws_api_url.com/api/getResourceUsage?Tag=Customer/cust_id_4894168127&From=2020/02/02%To=2020/03/03
API会返回类似的内容
{
[
"ResourceID": "8hf8972g8h9",
"ResourceType": "EC2",
"UsageHours": 231,
],
[
"ResourceID": "09j05h05hj",
"ResourceType": "EBS disk",
"DiskSpaceUsedGB": 200,
],
[
"ResourceID": "h87f3go2f2",
"ResourceType": "S3 space",
"SpaceUsedGB": 500,
],
}
我想获得亚马逊要向我收取的所有费用,以便向客户收取所有这些费用。如果找不到解决方法,则必须将所有用户操作存储在数据库中,然后计算EC2的运行时间,等等。
您知道使用SDK API的方法吗?
答案 0 :(得分:0)
您可以将get-resources函数与标记过滤器一起使用,以获取所有资源。
下面是一个例子
aws resourcegroupstaggingapi get-resources --tag-filters Key=Customer,Values=cust_id_4894168127
这将返回所有资源的Arns以及附加的任何标签,您需要从此处调用该服务的API以获得所需的元数据。
要进行计费,您可以使用cost allocation tags来确定特定客户的费用。