根据特定标签获取 AWS 资源成本
Get AWS resource cost based on particular tag
我已经跨 EC2、存储、负载均衡器、网络等创建了不同的 AWS 资源。我用 GroupName
标记了每个资源作为每个组不同的键和值,例如group1
、group2
等
现在,我想获得每个组的成本。我写了下面的代码
GroupDefinition groupDefinition =
new GroupDefinition().withType(GroupDefinitionType.TAG).withKey("Cluster");
GetCostAndUsageRequest costAndUsageRequest
= new GetCostAndUsageRequest()
.withGroupBy(groupDefinition)
.withGranularity("MONTHLY")
.withMetrics("UnblendedCost");
GetCostAndUsageResult costAndUsage =
awsCostExplorer.getCostAndUsage(costAndUsageRequest);
现在,我希望 costAndUsage
有基于每个标签的组。但它总是给我总账单。我可以给 withKey
任何随机值,但结果总是一样的。
Maven 依赖:
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.11.453</version>
</dependency>
这是我得到的回复(为简洁起见,第一个 resultByTime
)
{
"timePeriod":{
"start":"2018-11-01",
"end":"2018-12-01"
},
"total":{
},
"groups":[
{
"keys":[
"Cluster$"
],
"metrics":{
"UnblendedCost":{
"amount":"26712.9751185906",
"unit":"USD"
}
}
}
],
"estimated":false
}
我想要的是
Cluster1 -> 1500 USD
Cluster2 -> 1000 USD
假设我有一堆标记有键 Cluster
和值 Cluster1
和 Cluster2
的资源。
响应中没有按每个实际标记值分组。
我在这里错过了什么?
我不确定你使用的 SDK 的实际版本是什么,但我可以在 Ruby 中向你展示一个工作代码(我也按 AWS 服务分组):
credentials = Aws::SharedCredentials.new(profile_name: "REPLACE_profile_name_in_credentials_file")
client = Aws::CostExplorer::Client.new(region: "us-east-1", credentials: credentials)
resp = client.get_cost_and_usage({
time_period: {
start: Date.today.at_beginning_of_month.strftime("%Y-%m-%d"),
end: Date.tomorrow.strftime("%Y-%m-%d"),
},
granularity: "MONTHLY",
metrics: ["UnblendedCost"],
group_by: [
{
type: "DIMENSION",
key: "SERVICE",
},
{
type: "TAG",
key: "Cluster",
}
]
})
resp.results_by_time.each do |result|
#DO SOMETHING
end
它可能会为您提供更好的指导,让您了解需要添加\编辑的内容。
如果您可以共享您的文档和收到的回复,这将有助于编辑和添加更多相关信息。
代码运行正常。我没有正确接收,因为需要在父级收款人帐户上执行其他步骤。
你需要
- 转到 AWS 账单门户
- Select 您要为其启用成本核算的标签,在我的例子中是
Cluster
- 启用成本分配
- 这大约需要 24 小时才能生效。
注意:如果您有AWS子账户,您的父收款人账户将有权执行上述步骤。
有关详细信息,请参阅 documentation。
24 小时后,如果您 运行 代码将看到如下所示的响应
{
"timePeriod":{
"start":"2018-12-01",
"end":"2018-12-31"
},
"total":{
},
"groups":[
{
"keys":[
"Cluster$"
],
"metrics":{
"UnblendedCost":{
"amount":"23434.5469766795",
"unit":"USD"
}
}
},
{
"keys":[
"Cluster$cluster-1"
],
"metrics":{
"UnblendedCost":{
"amount":"2343.3888413893",
"unit":"USD"
}
}
},
{
"keys":[
"Cluster$cluster-2"
],
"metrics":{
"UnblendedCost":{
"amount":"23464.8057597427",
"unit":"USD"
}
}
}
],
"estimated":true
}
我已经跨 EC2、存储、负载均衡器、网络等创建了不同的 AWS 资源。我用 GroupName
标记了每个资源作为每个组不同的键和值,例如group1
、group2
等
现在,我想获得每个组的成本。我写了下面的代码
GroupDefinition groupDefinition =
new GroupDefinition().withType(GroupDefinitionType.TAG).withKey("Cluster");
GetCostAndUsageRequest costAndUsageRequest
= new GetCostAndUsageRequest()
.withGroupBy(groupDefinition)
.withGranularity("MONTHLY")
.withMetrics("UnblendedCost");
GetCostAndUsageResult costAndUsage =
awsCostExplorer.getCostAndUsage(costAndUsageRequest);
现在,我希望 costAndUsage
有基于每个标签的组。但它总是给我总账单。我可以给 withKey
任何随机值,但结果总是一样的。
Maven 依赖:
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.11.453</version>
</dependency>
这是我得到的回复(为简洁起见,第一个 resultByTime
)
{
"timePeriod":{
"start":"2018-11-01",
"end":"2018-12-01"
},
"total":{
},
"groups":[
{
"keys":[
"Cluster$"
],
"metrics":{
"UnblendedCost":{
"amount":"26712.9751185906",
"unit":"USD"
}
}
}
],
"estimated":false
}
我想要的是
Cluster1 -> 1500 USD
Cluster2 -> 1000 USD
假设我有一堆标记有键 Cluster
和值 Cluster1
和 Cluster2
的资源。
响应中没有按每个实际标记值分组。 我在这里错过了什么?
我不确定你使用的 SDK 的实际版本是什么,但我可以在 Ruby 中向你展示一个工作代码(我也按 AWS 服务分组):
credentials = Aws::SharedCredentials.new(profile_name: "REPLACE_profile_name_in_credentials_file")
client = Aws::CostExplorer::Client.new(region: "us-east-1", credentials: credentials)
resp = client.get_cost_and_usage({
time_period: {
start: Date.today.at_beginning_of_month.strftime("%Y-%m-%d"),
end: Date.tomorrow.strftime("%Y-%m-%d"),
},
granularity: "MONTHLY",
metrics: ["UnblendedCost"],
group_by: [
{
type: "DIMENSION",
key: "SERVICE",
},
{
type: "TAG",
key: "Cluster",
}
]
})
resp.results_by_time.each do |result|
#DO SOMETHING
end
它可能会为您提供更好的指导,让您了解需要添加\编辑的内容。 如果您可以共享您的文档和收到的回复,这将有助于编辑和添加更多相关信息。
代码运行正常。我没有正确接收,因为需要在父级收款人帐户上执行其他步骤。
你需要
- 转到 AWS 账单门户
- Select 您要为其启用成本核算的标签,在我的例子中是
Cluster
- 启用成本分配
- 这大约需要 24 小时才能生效。
注意:如果您有AWS子账户,您的父收款人账户将有权执行上述步骤。
有关详细信息,请参阅 documentation。
24 小时后,如果您 运行 代码将看到如下所示的响应
{
"timePeriod":{
"start":"2018-12-01",
"end":"2018-12-31"
},
"total":{
},
"groups":[
{
"keys":[
"Cluster$"
],
"metrics":{
"UnblendedCost":{
"amount":"23434.5469766795",
"unit":"USD"
}
}
},
{
"keys":[
"Cluster$cluster-1"
],
"metrics":{
"UnblendedCost":{
"amount":"2343.3888413893",
"unit":"USD"
}
}
},
{
"keys":[
"Cluster$cluster-2"
],
"metrics":{
"UnblendedCost":{
"amount":"23464.8057597427",
"unit":"USD"
}
}
}
],
"estimated":true
}