0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Azure CLI の JMESPath 関数を使って特定文字列が含むリソースだけ取得してみた

Posted at

Azure リソースに対して大量に同じ事を繰り返す場合、シェルスクリプトなどで Azure CLI を実行するととても便利ですよね。例えば、特定条件の Azure リソースだけ実行の対象にしたくない時は、シェルスクリプトで if 文で条件分岐するなんて事も可能です。今回は、シェルスクリプトで条件分岐をせずに Azure CLI の JMESPath 関数を使って特定文字列が含むリソースだけ取得する方法を試してみました。

例えばリソースグループの一覧を取得

bash
# Azure CLI でリソースグループの一覧を取得
rgs=$(az group list --query "[].name" --output tsv)

# for ループでリソースグループ名を確認
for rg in ${rgs[@]}; do
  echo $rg
done

# 以下の出力結果になる場合を例とします
mnroai-rg
mnrlabo-rg
NetworkWatcherRG
mnravd-rg2
mnrbot-rg
mnrpt-rg

if 文で特定文字列だけを対象にする例

bash
# Azure CLI でリソースグループの一覧を取得
rgs=$(az group list --query "[].name" --output tsv)

# mnr という文字列が含むリソースグループ名を確認
for rg in ${rgs[@]}; do
  if [[ $rg == *mnr* ]];then
    echo $rg
  fi
done

# 以下の確認結果となる ( NetworkWatcherRG は対象外となる)
mnroai-rg
mnrlabo-rg
mnravd-rg2
mnrbot-rg
mnrpt-rg

JMESPath 関数を使う例

bash
# JMESPath 関数の contains を使用
rgs=$(az group list --query "[?contains(name,'mnr')].name" --output tsv)

# for ループはシンプルなままリソースグループ名を確認
for rg in ${rgs[@]}; do
  echo $rg
done

# 以下の確認結果となる ( NetworkWatcherRG は対象外となる)
mnroai-rg
mnrlabo-rg
mnravd-rg2
mnrbot-rg
mnrpt-rg

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?