[アップデート] コスト配分タグで最終更新日と最終使用月が確認出来るようになったので、メタデータを参考にコスト配分タグの棚卸しが出来るようになりました

2023.08.24

いわさです。

AWS ではユーザーが独自に定義したタグをリソースに割り当てることで、タグごとの使用量の集計を行うことが出来ます。

Billing のコスト配分タグメニューでコスト配分タグの一覧を確認することが出来るのですが、本日のアップデートでこちらの情報にタグごとの最終更新日と最終使用月が追加されました。

次のようにタグごとに最終更新日と最終使用月が表示されています。

コスト配分タグが多くなりすぎた場合に使ってないタグを非アクティブ化したり、あるいは新しくコスト配分タグをアクティブ化するべきか検討する際に活用出来そうです。
それぞれの情報がどういったものなのかもう少し見てみたいと思います。

最終更新日と最終使用月の仕様

冒頭紹介したように一覧で最終更新日と最終使用月が確認出来るようになっています。
ただ、最終更新日に何も設定されていなかったり、最終使用月が「xxx 以前」という表記になっているものもあります。
それぞれどういった時に何が表示されるのか確認してみます。

ちなみにこの新しい 2 つのメタデータ列は画面上表示・非表示を切り替えることが出来るようになっています。

最終更新日

まず、最終更新日はコスト配分タグ上のステータスとしてアクティブあるいは非アクティブに変更された最後の日を指しています。
よって、最終更新日の表示のないものはデフォルトで作成されアクティブ化されたことがないものを指しています。

よって、アクティブから非アクティブに変更した場合はその日が最終更新日となります。

最終使用月

次に、最終使用月はコスト配分の概念は関係なく、単純にタグとして何らかのリソースに使用された最終のを指します。
最終使用月の降順で並び替えたところ、直近使った記憶のあるタグがいくつか確認出来ました。なるほど。

試しに次のように VPC にタグを設定してみましたが、コスト配分タグ一覧画面上の最終使用月は確認出来ませんでした。
タイムラグがあるかもしれないので後日また確認し追記したいと思います。

また、AWS CLI での確認結果も後述しますが、2023 年 4 月より前に使用されたタグについては、タグの最終使用月としてのメタデータがおそらく保存されておらず、「April 2023 以前」という表記になっています。
最終使用月については使用した「日時」までは保存されていないようで、年月までの表記となっています。

AWS CLI でも確認してみる

AWS CLI では v1.29.32 で実装されています。

list-cost-allocation-tagsでコスト配分タグの一覧が取得出来ますのでその結果を確認してみましょう。
コスト配分タグの使用状況次第でレスポンスのプロパティが設定されたりされていなかったりしますので注意が必要です。

% aws-v1 ce list-cost-allocation-tags --profile hogeadmin 
{
    "CostAllocationTags": [
        {
            "TagKey": "AWSNetworkFirewallManaged",
            "Type": "UserDefined",
            "Status": "Inactive"
        },
        {
            "TagKey": "AddTag",
            "Type": "UserDefined",
            "Status": "Inactive",
            "LastUsedDate": "2023-07-01T00:00:00Z"
        },
        {
            "TagKey": "AddTag2",
            "Type": "UserDefined",
            "Status": "Inactive",
            "LastUsedDate": "2023-07-01T00:00:00Z"
        },
        {
            "TagKey": "AmazonECSManaged",
            "Type": "UserDefined",
            "Status": "Inactive",
            "LastUsedDate": "2023-08-01T00:00:00Z"
        },
        {
            "TagKey": "AppManagerCFNStackKey",
            "Type": "UserDefined",
            "Status": "Inactive"
        },
        {
            "TagKey": "Application",
            "Type": "UserDefined",
            "Status": "Inactive"
        },
        {
            "TagKey": "BoostService",
            "Type": "UserDefined",
            "Status": "Inactive"
        },
        {
            "TagKey": "CmBillingGroup",
            "Type": "UserDefined",
            "Status": "Active",
            "LastUpdatedDate": "2023-03-28T00:03:16.377Z"
        },
        {
            "TagKey": "Devops-Guru-Vpc1",
            "Type": "UserDefined",
            "Status": "Inactive",
            "LastUsedDate": "2023-08-01T00:00:00Z"
        },
        {
            "TagKey": "Environment",
            "Type": "UserDefined",
            "Status": "Inactive"
        },
:

今回追加されたプロパティはLastUsedDateLastUpdateDateになります。

例えば、上記結果の 1 つめの Inactive なタグではLastUsedDateLastUpdateDateどちらも取得されていませんね。
これは 2023 年 4 月以前に使用され、かつ非アクティブなタグのためメタデータとして残っていないようです。

一方で 2 つめのタグのように Inactive でもLastUsedDateが設定されているものもあったり、LastUpdatedDateが設定されているものもあります。

あまり私は聞いたことがないですが、もしコスト配分タグメンテナンスの自動化などを検討される場合は上記のような挙動となる点を知っておくと良さそうです。

さいごに

本日はコスト配分タグで最終更新日と最終使用月が確認出来るようになったので、メタデータを参考にコスト配分タグの棚卸しが出来るか確認してみました。

もし「管理しているコスト配分タグが多くて煩雑なのだが、どれを非アクティブにしていいか悩む」みたいな方は今回実装された日付を参考にアクティブ化、非アクティブ化の判断をされると良いのではないでしょうか。

また、余談ですが AWS アカウントを別の組織へ移動する際にはコスト配分タグが非アクティブ化されることを知りました。(参考

ベストプラクティスとして、組織を移動するときにコスト配分タグを再度アクティブ化します。アカウントがメンバーとして別の組織に移動すると、そのアカウントの以前にアクティブ化されたコスト配分タグは「アクティブ」状態を失い、新しい管理アカウントによって再度アクティブ化する必要があります。

移動後にコスト配分タグを再度アクティブ化する必要がありますが、そういった際にもアクティブ化するべきかどうか役に立ちそうです。