[Tips] AWS CLI でネームタグを一撃で取得する

AWS CLI を使用して、既存リソースのネームタグ(Name Tag)を取得する方法をご紹介します。
2020.03.23

大阪オフィスのちゃだいん(@chazuke4649)です。

AWS CLIで作業していると、既存リソースのResourceIDが知りたい時や、そのリソースが存在してるかをパッと確認したい時がありました。そんな時、タグから検索するのが楽ちんだなぁと思ったので、一発でネームタグ(Name Tag)を取得できるようにしてみました。今回はその方法をご紹介します。

 

ちなみにネームタグ(Name Tag)とは、
個々のリソースを識別するために使用される以下のようなタグを指しています。

Key Value
Name my-test-resource

参考:AWS Tagging Strategies – AWS Answers

前提

その他 AWS CLI のタグ検索方法や、フィルター・クエリなどの使用方法は以下ブログが参考になります。

 

事前準備として、aliasを使用します。設定方法は以下ブログをどうぞ。
(ちなみにAWS CLI v2 でも今のところ問題なく alias は使えてます!)

設定方法

aliasが使用できる状態になったら下記の設定を ~/.aws/cli/aliasファイルに追加します。
設定は以上で完了です。

       

~/.aws/cli/alias

## search by nametag
nametag =
  !f() {
   read -p "Enter the value:" TAG_VALUE
   aws ec2 describe-tags --filters Name=tag:Name,Values=${TAG_VALUE} --output table
 }; f

やってみる

1つのネームタグを検索する

試しにproject-prd-ec2で検索してみます。

  1. まず、何も考えずにaws nametagを実行します
  2. Enter the value:と聞かれるのでproject-prd-ec2と入力します
  3. 結果が表示されます

以下の通りです。

 

% aws nametag
Enter the value:project-prd-ec2
------------------------------------------------------------------------
|                             DescribeTags                             |
+----------------------------------------------------------------------+
||                                Tags                                ||
|+------+-------------------------+---------------+-------------------+|
||  Key |       ResourceId        | ResourceType  |       Value       ||
|+------+-------------------------+---------------+-------------------+|
||  Name|  vol-042177280d584b2fb  |  volume       |  project-prd-ec2  ||
||  Name|  i-03c958c1de48bd661    |  instance     |  project-prd-ec2  ||
|+------+-------------------------+---------------+-------------------+|

ワイルドカードで複数のネームタグを検索する

もちろんワイルドカード(*)を使った検索も可能です。

 

% aws nametag
Enter the value:"project*"
-------------------------------------------------------------------------------------------
|                                      DescribeTags                                       |
+-----------------------------------------------------------------------------------------+
||                                         Tags                                          ||
|+------+----------------------------+-------------------+-------------------------------+|
||  Key |        ResourceId          |   ResourceType    |             Value             ||
|+------+----------------------------+-------------------+-------------------------------+|
||  Name|  i-03c958c1de48bd661       |  instance         |  project-prd-ec2              ||
||  Name|  igw-sample12345678901     |  internet-gateway |  project-prd-IGW              ||
||  Name|  rtb-sample12345678901     |  route-table      |  project-prd-public-rtb       ||
||  Name|  rtb-sample12345678901     |  route-table      |  project-prd-private-rtb      ||
||  Name|  sg-sample12345678901      |  security-group   |  project-prd-webserver-sg     ||
||  Name|  vol-042177280d584b2fb     |  volume           |  project-prd-ec2              ||
||  Name|  vpc-sample12345678901     |  vpc              |  project-prd-VPC              ||
||  Name|  subnet-sample12345678901  |  subnet           |  project-prd-public-subnet1   ||
||  Name|  subnet-sample12345678901  |  subnet           |  project-prd-private-subnet1  ||
|+------+----------------------------+-------------------+-------------------------------+|
## ※instanceとvolume以外のResourceIDはダミー情報です

おまけ: ResourceIDを使って詳細情報を取得する

例えば EC2 の場合、取得した ResourceID を使って、さらに詳細情報を取得できます。

 

% aws ec2 describe-instances --instance-ids i-03c958c1de48bd661 --output table
-----------------------------------------------------------------------------------------
|                                   DescribeInstances                                   |
+---------------------------------------------------------------------------------------+
||                                    Reservations                                     ||
|+-----------------------------------+-------------------------------------------------+|
||  OwnerId                          |  123456789012                                   ||
||  ReservationId                    |  r-053962067707ce71a                            ||
|+-----------------------------------+-------------------------------------------------+|
|||                                     Instances                                     |||
||+------------------------+----------------------------------------------------------+||
|||  AmiLaunchIndex        |  0                                                       |||
|||  Architecture          |  x86_64                                                  |||
|||  ClientToken           |                                                          |||
|||  EbsOptimized          |  False                                                   |||
|||  EnaSupport            |  True                                                    |||
|||  Hypervisor            |  xen                                                     |||
|||  ImageId               |  ami-052652af12b58691f                                   |||
|||  InstanceId            |  i-03c958c1de48bd661                                     |||
|||  InstanceType          |  t2.micro                                                |||
~~~~以下省略~~~~
## ※OwnerIdはダミー情報です

終わりに

よく使いそうなコマンドをaliasに登録したというだけですが、よく行う作業の場合、その一手間が効いてくるってありますよね。それに期待してます。
今後もよく使いそうなコマンドはaliasにどんどん登録していこうと思います。

ちなみに、本エントリの内容は思いっきりこの記事を参考にしています。
aliasを設定した場合は、一緒にこっちも登録しておくと良いかもです。

それではこの辺で。大阪オフィスのちゃだいん(@chazuke4649)でした。