この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
大阪オフィスのちゃだいん(@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
で検索してみます。
- まず、何も考えずに
aws nametag
を実行します Enter the value:
と聞かれるのでproject-prd-ec2
と入力します- 結果が表示されます
以下の通りです。
% 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)でした。