AWS get-cost-and-usage by resource 标签

AWS get-cost-and-usage by resource Tags

我正在尝试按环境或使用情况获取我的 aws 资源的成本。 我设置了我的环境,以便所有资源(rds 实例、vpc 端点、ecs 集群和任务等)都有一个标签 Environment: testEnvironment: prod.

现在我想探索使用 aws cli 的成本:

aws ce get-cost-and-usage --time-period Start=2022-03-01,End=2022-04-09 --granularity MONTHLY --metrics "BlendedCost" "UnblendedCost" "UsageQuantity"   --filter file://costfilter.json

与“costfilter.json”:

{
  "And": [
    {
      "Dimensions": {
        "Key": "REGION",
        "Values": ["us-east-2, eu-central-1"]
      }
    },
    {
      "Tags": {
        "Key": "Environment",
        "Values": ["test"]
      }
    }
  ]
}

我没有发现任何错误,所以语法上没问题,但它显示

DimensionValueAttributes: []
ResultsByTime:
- Estimated: false
  Groups: []
  TimePeriod:
    End: '2022-04-01'
    Start: '2022-03-01'
  Total:
    BlendedCost:
      Amount: '0'
      Unit: USD
    UnblendedCost:
      Amount: '0'
      Unit: USD
    UsageQuantity:
      Amount: '0'
      Unit: N/A
- Estimated: true
  Groups: []
  TimePeriod:
    End: '2022-04-09'
    Start: '2022-04-01'
  Total:
    BlendedCost:
      Amount: '0'
      Unit: USD
    UnblendedCost:
      Amount: '0'
      Unit: USD
    UsageQuantity:
      Amount: '0'
      Unit: N/A

可惜事实并非全为0,所以这里出问题了

这是实现我想要的目标的正确方法吗?如果是这样,缺少什么?如果没有,我该如何处理?

ps。例如 alb elbv2 describe-tags 对于某个 lb 会给我:

TagDescriptions:
- ResourceArn: arn:aws:elasticloadbalancing:eu-central-1:640753244498:loadbalancer/app/mosar-lb-test/3d7bd13953ee06b8
  Tags:
  - Key: Environment
    Value: test
  - Key: ManagedBy
    Value: ecs-cluster

所以标签确实存在。

你确实把你维度内的区域发错了:

"Values": ["us-east-2, eu-central-1"]

应该是

"Values": ["us-east-2", "eu-central-1"]

另请注意,由于 AWS 本身的计算,“当前”日期通常为 0。这就是为什么我们在我们的成本监控工具中要求从过去的某个日期到“昨天”的所有成本,以确保获得当天的全部成本。

要按标签过滤,您还可以将这些标签作为“成本分配标签”,参见https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html