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)
の指定を無視した検索となるようです。
おわりに
初見時に混乱しかけたタグエディタの挙動について、実際にタグエディタを動かしながら説明してみました。本記事が何かのお役に立てば幸いです。