AWS Organizations に所属するメンバーアカウントの Cost Explorer 情報を AWS CLI で一括取得する方法

管理アカウントで、get-cost-and-usage コマンドの --group-by オプションで Type=DIMENSION,Key=LINKED_ACCOUNT と指定することで、複数指定したメンバーアカウント毎の料金を出力

困っていた内容

AWS Organizations に所属する複数のメンバーアカウントの Cost Explorer 情報をマネージメントコンソール上ではなく、 AWS CLI で一括取得する方法を教えて欲しいです。

どう対応すればいいの?

管理アカウントで、AWS CLI の get-cost-and-usage コマンドを使用することで、Organizations のメンバーアカウントの料金を取得することが可能です。

get-cost-and-usage — AWS CLI 1.20.15 Command Reference

  get-cost-and-usage
--time-period <value>
--granularity <value>
[--filter <value>]
--metrics <value>
[--group-by <value>]
[--next-page-token <value>]
[--cli-input-json | --cli-input-yaml]
[--generate-cli-skeleton <value>]

--filter オプションで、複数の LINKED_ACCOUNT の値を設定された場合、各アカウントの料金を合算した値が出力されます。
一方で、以下のコマンドのように --group-by オプションで Type=DIMENSION,Key=LINKED_ACCOUNT と指定することで、複数指定したメンバーアカウント毎の料金が出力されます。

$ aws ce get-cost-and-usage \
    --time-period Start=2021-08-01,End=2021-08-06 \
    --metric UNBLENDED_COST \
    --granularity MONTHLY \
    --filter '{"Dimensions":{"Key":"LINKED_ACCOUNT","Values":["<AWS アカウント ID>","<AWS アカウント ID>"]}}' \
    --group-by Type=DIMENSION,Key=LINKED_ACCOUNT

なお、--filter オプションで、AWS 内のコストをサポートされている Dimension でフィルタリングできます。   今回は、アカウント毎の料金を取得しましたが、リージョン毎の料金をフィルタリングすることもできます。  

有効な Dimension は以下のドキュメントを参照ください。  

Dimension
The name of the dimension. Each Dimension is available for a different Context. For more information, see Context.

Type: String.

Valid Values: AZ | INSTANCE_TYPE | LINKED_ACCOUNT | LINKED_ACCOUNT_NAME | OPERATION | PURCHASE_TYPE | REGION | SERVICE | SERVICE_CODE | USAGE_TYPE | USAGE_TYPE_GROUP | RECORD_TYPE | OPERATING_SYSTEM | TENANCY | SCOPE | PLATFORM | SUBSCRIPTION_ID | LEGAL_ENTITY_NAME | DEPLOYMENT_OPTION | DATABASE_ENGINE | CACHE_ENGINE | INSTANCE_TYPE_FAMILY | BILLING_ENTITY | RESERVATION_ID | RESOURCE_ID | RIGHTSIZING_TYPE | SAVINGS_PLANS_TYPE | SAVINGS_PLAN_ARN | PAYMENT_OPTION | AGREEMENT_END_DATE_TIME_AFTER | AGREEMENT_END_DATE_TIME_BEFORE

GetDimensionValues - AWS Billing and Cost Management

参考資料

--group-by (list).

You can group AWS costs using up to two different groups, either dimensions, tag keys, cost categories, or any two group by types.
When you group by tag key, you get all tag values, including empty strings.
Valid values are AZ , INSTANCE_TYPE , LEGAL_ENTITY_NAME , LINKED_ACCOUNT , OPERATION , PLATFORM , PURCHASE_TYPE , SERVICE , TAGS , TENANCY , RECORD_TYPE , and USAGE_TYPE .