AWSのタグエディタを触ってみた
はじめに
shumpeiです。
最近業務で、AWSのタグエディタを初めて使いました。とてもシンプルなツールですが、初見の際に分かりにくいと感じた部分が2つありました。この記事では実際にタグエディタを使いながら、この2つのポイントについて解説したいと思います。
タグエディタとは
タグエディタとは、AWSアカウント内にあるリソースを検索し、該当したリソースのタグを追加・削除・編集できるツールです。次のようなUIを持っています。

リソースの検索条件としては、リージョン、リソースタイプ(EC2インスタンス、S3バケットなど)、タグの3種類を指定できます。
冒頭で申し上げた、私が初見時に分かりにくいと感じたポイントはいずれも、タグを検索条件に指定した際の挙動に関するものです。具体的には、
- AND検索、OR検索の仕組み
- not taggedとempty valueの違い
です。実際のタグエディタの挙動を検証しながら、これらの挙動について理解を深めていきましょう。
検証準備
検証結果の説明に入る前に、今回作成した検証用リソースを説明します。次のようなタグを付けた、8つのEC2インスタンスを作りました。
| インスタンス名(Nameタグ) | teamタグ | envタグ |
|---|---|---|
| sample1 | backend | dev |
| sample2 | backend | stg |
| sample3 | backend | prd |
| sample4 | frontend | dev |
| sample5 | frontend | stg |
| sample6 | frontend | prd |
| sample7 | (値が空文字) | dev |
| sample8 | (teamタグ自体付けない) | dev |
AND検索、OR検索の仕組み
タグエディタでは複数のタグを指定した検索ができます。どのような時にAND検索になり、どのような時にOR検索になるでしょうか。結論を述べるとこうです。
- 異なるキーのタグを複数指定した場合→AND検索。
- 同じキーのタグを複数指定した場合→OR検索
実際に試してみましょう。
まずはAND検索からです。team: backendのタグと、env: devのタグを指定して検索します。

指定したタグが両方付いたEC2インスタンスのみが該当しました。
次にOR検索です。env: devとenv: stgのタグを指定して検索します。

指定したタグのいずれかが付いているEC2インスタンスが全て該当しました。
次にAND検索とOR検索を組み合わせてみましょう。team: backendとenv: devとenv: stgのタグを指定して検索します。

team: backendが付いており、かつ、env: devとenv: stgのいずれかが付いているEC2インスタンスが該当しました。
not taggedとempty valueの違い
さて、つづいてnot taggedとempty valueの違いを説明します。タグエディタでタグを指定て検索する際に、タグの値としてnot taggedとempty valueを指定できます。
似たような値に見えますが、文字通りの違いがあります。
- not tagged→指定したキーのタグが付いていない。
- empty value→指定したキーのタグは付いているが、値が空文字。
実際に試してみましょう。
まずは、team: (not tagged)を指定して検索します。

teamタグが付いていないEC2インスタンス・sample8のみが該当しました。
次に、team: (empty value)を指定して検索します。

teamタグは付いているもののその値が空文字のEC2インスタンス・sample7のみが該当しました。
ちなみに、team: (not tagged)とteam: (empty value)の両方を指定して検索するとどうなるでしょうか。OR検索となってsample7とsample8の両方が該当しそうですが、実際に試してみると……

なんと、teamタグが付いていないsample8しか該当しませんでした!!
もう少し調べてみましょう。
team: (not tagged)とteam: backendを指定して検索します。

結果はOR検索になりました。
team: (empty value)とteam: backendを指定して検索します。

こちらも結果はOR検索になりました。
team: (not tagged)とteam: (empty value)とteam: backendを指定して検索します。

team: (not tagged)とteam: backendを指定して検索した場合と同じ結果となりました。
どうやら、team: (not tagged)とteam: (empty value)の両方を指定した時のみ、team: (empty value)の指定を無視した検索となるようです。
おわりに
初見時に混乱しかけたタグエディタの挙動について、実際にタグエディタを動かしながら説明してみました。本記事が何かのお役に立てば幸いです。
