[Tips] AWS CLI でネームタグを一撃で取得する
大阪オフィスのちゃだいん(@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
ファイルに追加します。
設定は以上で完了です。
## 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)でした。