ぶろとよ

ネットワーク系クラウドエンジニア(AWS)の技術ブログ。自動化に興味があるためAWS CLIを勉強&アウトプット中。

AWS CLI:NameタグからIDを調べて変数へ格納する。

チートシート代わりの記事です。
コマンドを書いている時に「AWSリソースのIDを変数に入れてっと、、、あれ、IDを取ってくる構文なんだっけ?」があまりにも多くて、どこかにまとめたいなぁっと思ってました(汗)


「NameタグからIDを変数へ」を目的に、各種AWSリソースのコマンドをこの記事へ記載していきます。
僕がよく使うものなので、偏りや不足がありますが、対象リソースは随時追加していきます。

  • この記事を読むことで出来ること。
    • AWSリソースのNameタグから、IDを調べて変数に格納する。
      • ※ Nameタグが無いものは対象外です。
    • IDだけではなくARNやIPアドレス等も対象です。
    • 対象リソースは目次を見てみてください。

※記事は随時更新していきます。


目次

検証環境

  • 検証日: 2021/10/09
  • PC環境:
    • Windows10 Home バージョン 21H1
      • AWS CLI: aws-cli/2.1.34 Python/3.8.8 Windows/10 exe/AMD64 prompt/off
        • -- profile default : 読み取り専用
        • -- profile aws_RW : 書き込み権限あり
          • ※ 誤操作防止のため、変更操作時のみ-- profileオプションを付けてます。
      • PowerShell: Ver7.1.4

注意事項

  • 本記事の内容はWindows PowerShellで検証しています。
  • AWS CLIはバージョン2を使用しています。
    • 本記事のコマンド出力でYAMLを使用してますが、これはバージョン2からの機能です。
  • コマンド内の変数やパラメータやは検証で使用したものを記載しています。ご自身の環境に合わせ、書き換えて使用してください。
  • 個人で検証しているため実行結果に責任は持てません。必ずご自身でも検証してから使用してください。


1. EC2

1.1. ID: EC2インスタンス

# ---- PowerShell ----
${ec2_name} = "EC2インスタンス のNameタグ"

${ec2_id} = aws ec2 describe-instances `
    --filters "Name=tag:Name,Values=${ec2_name}" `
    --query "Reservations[].Instances[].InstanceId" `
    --output text `
    ; echo ${ec2_id}

1.2. ID: EBSボリューム

# ---- PowerShell ----
${ebs_name} = "EBSボリューム のNameタグ"

${ebs_id} = aws ec2 describe-volumes `
    --filters "Name=tag:Name,Values=${ebs_name}" `
    --query "Volumes[].VolumeId" `
    --output text `
    ; echo ${ebs_id}

1.3. ID: ENI(ネットワーク・インターフェース)

# ---- PowerShell ----
${eni_name} = "ENI のNameタグ"

${eni_id} = aws ec2 describe-network-interfaces `
    --filters "Name=tag:Name,Values=${eni_name}" `
    --query "NetworkInterfaces[].NetworkInterfaceId" `
    --output text `
    ; echo ${eni_id}

1.4. PublicIP: Elastic IP アドレス

# ---- PowerShell ----
${eip_name} = "test-eip01"

${eip_pub_ip} = aws ec2 describe-addresses `
    --filter "Name=tag:Name,Values=${eip_name}" `
    --query "Addresses[].PublicIp" `
    --output text `
    ; echo ${eip_pub_ip}

1.5. 割り当てID: Elastic IP アドレス

# ---- PowerShell ----
${eip_name} = "test-eip01"

${eip_allocation} = aws ec2 describe-addresses `
    --filter "Name=tag:Name,Values=${eip_name}" `
    --query "Addresses[].AllocationId" `
    --output text `
    ; echo ${eip_allocation}


2. VPC

2.1. ID: VPC

# ---- PowerShell ----
${vpc_name} = "VPC のNameタグ"

${vpc_id} = aws ec2 describe-vpcs `
    --filters "Name=tag:Name,Values=${vpc_name}" `
    --query "Vpcs[].VpcId" `
    --output text `
    ; echo ${vpc_id}

2.2. ID: サブネット

# ---- PowerShell ----
${sub_name} = "サブネット のNameタグ"

${sub_id} = aws ec2 describe-subnets `
    --filters "Name=tag:Name,Values=${sub_name}" `
    --query "Subnets[].SubnetId" `
    --output text `
    ; echo ${sub_id}

2.3. ID: ルートテーブル

# ---- PowerShell ----
${rtb_name} = "ルートテーブル のNameタグ"

${rtb_id} = aws ec2 describe-route-tables `
    --filters "Name=tag:Name,Values=${rtb_name}" `
    --query "RouteTables[].RouteTableId" `
    --output text `
    ; echo ${rtb_id}

2.4. ID: インターネットゲートウェイ

# ---- PowerShell ----
${igw_name} = "インターネットゲートウェイ のNameタグ"

${igw_id} = aws ec2 describe-internet-gateways `
    --filters "Name=tag:Name,Values=${igw_name}" `
    --query "InternetGateways[].InternetGatewayId" `
    --output text `
    ; echo ${igw_id}

2.5. ID: セキュリティグループ

# ---- PowerShell ----
${sgr_name} = "セキュリティグループ のNameタグ"

${sgr_id} = aws ec2 describe-security-groups `
    --filters "Name=tag:Name,Values=${sgr_name}" `
    --query "SecurityGroups[].GroupId" `
    --output text `
    ; echo ${sgr_id}

2.6. ID: ネットワークACL

# ---- PowerShell ----
${ncl_name} = "ネットワークACL のNameタグ"

${ncl_id} = aws ec2 describe-network-acls `
    --filters "Name=tag:Name,Values=${ncl_name}" `
    --query "NetworkAcls[].NetworkAclId" `
    --output text `
    ; echo ${ncl_id}

2.7. ID: DHCPオプションセット

# ---- PowerShell ----
${dos_name} = "test_dos"

${dos_id} = aws ec2 describe-dhcp-options `
    --filters "Name=tag:Name,Values=${dos_name}" `
    --query "DhcpOptions[].DhcpOptionsId" `
    --output text `
    ; echo ${dos_id}

2.8. ID: NATゲートウェイ

# ---- PowerShell ----
${ngw_name} = "test-ngw01"

${ngw_id} = aws ec2 describe-nat-gateways `
    --filter "Name=tag:Name,Values=${ngw_name}" `
    --query "NatGateways[].NatGatewayId" `
    --output text `
    ; echo ${ngw_id}

## ※[--filter]のスペルが他と違うので注意。他のは[--filters]で「s」が付く。


※Nameタグじゃないけど、AWSアカウント

# ---- PowerShell ----
# AWSアカウントIDを変数に入れる
${aws_account_id} = aws sts get-caller-identity `
    --query "Account" `
    --output text `
     ; echo ${aws_account_id}