TagTamerでタグ管理してみる

# はじめに
6/30にawsの新しいソリューションとしてTagTamerが公開されました。

https://aws.amazon.com/jp/about-aws/whats-new/2021/06/new-aws-solutions-implementation-tag-tamer/

> Tag Tamer は、新規および既存の AWS リソースにタグを適用するのに役立ちます。構築済みのウェブユーザーインターフェイスを使用することで一貫したタグ付けの実装を保証し、コスト配分、自動化、アクセスコントロール、編成を改善します。

説明文を読む限り、タグ管理を楽に行えるようになるソリューションのようです。

ちょうどタグ管理に悩んでいたので、実装・検証してみて思い通りの使い方ができるのか試してみます。

## 機能

上記紹介ページより、以下の機能があるようです。

- タグのスペルミスや大文字と小文字の誤りを見つけて修正、防止
- タグ付けルールを適用
- 間違ったタグを見つけて更新
- タグなしのリソースを見つける
- AWS リソースとそれに割り当てられたタグのレポートをエクスポート
- AWS Service Catalog の TagOptions を管理
- 構築済みのウェブユーザーインターフェースを起動して、AWS アカウントとサービス全体でタグを管理
- 既存の AWS リソースタグを調べ、タグを変更し、再利用可能なタグオプションを作成
- タグのキーと値のペアを一元化された安全なリポジトリに保存
- 間違ったタグを見つけて置き換え、タグのないリソースを見つける
- 新しい AWS リソースにタグを自動的に適用
- ワークフローを開始して、組織に必要なタグを適用
- AWS Service Catalog から新製品をリリースするときに、承認されたタグを選択して適用

## 料金概算
こちらにコストの一例が載っています。

https://docs.aws.amazon.com/solutions/latest/tag-tamer/cost.html

Publicだと月約$95するらしいです。タグ管理ツールと考えると少し高いような気もしますね。
## 実装方法
CloudFormationのテンプレートを突っ込むだけかと思いきや、準備が必要なようです。
非常に分かりやすい記事があったので、本稿では構築方法は省きます。

https://dev.classmethod.jp/articles/tag-tamer-setup-point/

https://qiita.com/kazu_kazu/items/a5191c35dc56efcb9a8e

構築後の画面

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/675893/9e6658f7-f246-5fbc-ef78-8c9378f607c9.png)


## Multiリージョン対応
現在のままではus-east-1にあるリソースしか検知できていないので、[公式ドキュメント][link-1]を参考に対応リージョンにap-northeast-1を追加したいと思います。

マネコンのEC2画面から、TagTamerのアプリが動いているインスタンスを選択、「アクション - 接続」を押下します。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/675893/e67481c8-5ff5-97ee-8c07-f786a6bf969e.png)

「セッションマネージャー」タブに移動し、接続を押下します。
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/675893/f5410a22-b87c-a659-e394-6f40405aa28a.png)

`/home/ec2-user/tag-tamer/tag_tamer_parameters.json`を書き換えます。

```
> sudo vim /home/ec2-user/tag-tamer/tag_tamer_parameters.json
```

"additional_regions"に"ap-northeast-1"を追加

```json:tag_tamer_parameters.json
"additional_regions": ["ap-northeast-1"],
```

restartします。

```
> sudo systemctl restart tag-tamer
```

TagTamerにアクセスしてみると、東京リージョンが追加されています。

![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/675893/4a9e336c-4bd2-c73e-d789-a775e84354d5.png)

## やりたいこと
- タグが付いていないリソースを一覧表示

「See your existing AWS resources & their tags」を押下します。
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/675893/6e37e795-4c4d-6607-df22-bff654efcccc.png)

リソースタイプを選択後、keyに「 No tags applied 」を選択し、検索すると、タグが全くついていないリソースが表示されます。
![tagtamer06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/675893/d7ea003d-d7aa-bd2d-d8a6-849f7a4d4d6c.png)


ただ、これだと「まったくタグが付いていないリソース」しか取れないようです。「特定のタグが付いていないリソース」を表示したい場合は[AWS Config][link-2]の機能を利用して頑張るしかないのかな？と思います。

### リソース作成時に作成者名タグを自動付与
TagTamerではできないようでした。
特定のロールがアタッチされているリソースにタグ付与などはできるようなのですが。

やるとしたらConfigで検知→通知→手動アタッチかLambdaで頑張るかですかね。

### Key・Value値のタイポを検知して修正
Key・Value値が間違っていた場合に修正できたらうれしいですが、こちらもTagTamerのみではできなさそうです。

# まとめ
Tag管理はAWSアカウントを運用する上で頭を悩ませる点の一つだと思うので、こういったTag管理ツールが増えると良いなぁと思います。
TagTamerに関しては、運用料金がTag管理のみにしては高いと感じてしまうのと、少し手が届かない部分があるなという印象でした。
ただ、一度デプロイしてみて現状を把握したい場合には一覧表示できていいかもしれません。

<!-- 以下リンク -->
[link-1]:https://docs.aws.amazon.com/solutions/latest/tag-tamer/automated-deployment.html#step-3.-optional-multi-account-and-multi-region-configuration
[link-2]:https://aws.amazon.com/jp/config/