AWS CLIで情報を出力しよう 色々編(Linux版その4)

1. AWS CLIコマンドのヴァージョンアップをしよう

$curl https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o "awscliv2.zip"
$unzip awscliv2.zip
$sudo ./aws/insstall --update
$aws --version
aws-cli/2.9.10 Python/3.9.11 Linux/5.10.157-139.675.amzn2.x86_64 exe/x86_64.amzn.2 prompt/off

2022/12/27 時点で最新バージョンです 詳しくは、以下を参照 AWS CLI 最新バージョンをインストールまたは更新する
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html

2. 前回の復習 InternetGW情報を出力しよう

InternetGWの情報を必要な項目のみ出力してみよう

$aws ec2 describe-internet-gateways \
--query "InternetGateways[].[{VPC_id:Attachments[0].VpcId,Name:Tags[0].Value}]" --out table

             図 A InternetGWの情報

3. AWSが保持しているグルーバルアドレスCIDRを表示しよう

3.1 AWSが保持している東京リージョンのグローバルCIDRの表示

AWSが保持しているグルーバルアドレスのCIDRが公開されています。(json形式)その内容から東京リージョンのIPレンジのみを出力します。

$curl https://ip-ranges.amazonaws.com/ip-ranges.json | \
jq -r '.prefixes[] | select(.region=="ap-northeast-1") | .ip_prefix'

curl コマンドでjsonファイルを取ってきます。 jp コマンドでリストになっているprefix[]からreginがap-northeast-1(東京)のもので、ip_prefix項目のみ出力させます

jq コマンドは以下でインストールしてみてください

$sudo yum install jq

            図B 東京リージョンのIPアドレスレンジ

3.2AWSが保持している東京リージョンでEC2のグルーバルアドレスCIDRを表示

東京リージョンでEC2のIPレンジのみを出力します。

$curl https://ip-ranges.amazonaws.com/ip-ranges.json | \
jq -r '.prefixes[] | select(.service=="EC2" and .region=="ap-northeast-1") | .ip
_prefix'

curlコマンドでjsonファイルを取ってきます。jpコマンドでリストになっているprefix[]からreginがap-northeast-1(東京)かつ serviceがEC2のip_prefixのみを出力させます

           図C 東京リージョンEC2のIPアドレスレンジ

4. AWS Health イベントで使用されるサービス名の一覧を出力

HealthイベントをEventBridge経由で監視するイベントルールの対象を特定のサービスとする場合に、対象のサービス名は、”A2I”、”SSM”と選択可能である、これがなんのサービスかわかりたい

$aws health describe-event-types

             図D Health サービス名一覧

Health イベントで使用されるサービス名の一覧は、aws health describe-event-types コマンドで出力できます。json形式で出力されます。沢山出力されるのである程度絞り込みを行います。

$aws health describe-event-types | \
jq -r '.eventTypes[] | select(.service=="SSM" or .service=="A2I") | .code'

   図E Health A2IとSSMに絞り込み出力

Health イベントで使用されるサービス名の一覧は、aws health describe-event-types コマンドで出力できます。これでは、沢山出力されるので、対象を絞ります。 jqコマンドのselectを利用して SSMとA2Iに絞ります。そして、codeの部分のみを出力します。A2IはAmazon Augmented AI(AmazonA2I)のことだそうです。「A2I aws」で検索するとヒットします。

5. AWS WindowsのAMI一覧を出力しよう

Windows-serverのAMIはどのような物があるか、質問が良くあります。AWS CLIコマンドを使って出力できます。(Windows-server2019の例です)

$aws ec2 describe-images \
--owners amazon \
--filters "Name=name,Values=Windows_Server-2019-*" \
--query "sort_by(Images,&Name)[].[Name,ImageId]" \
--out table

           図F  windows-server-2019 AMI情報

imageは、aws ec2 describe-imageコマンドで出力します。filterオプションで windows_Server-2019-*のみを対象にします。更に、queryで ImagesNameとImageIdをsortして出力します。

6. routeテーブルを見て、publicサブネットかどうか判断しよう

publicサブネットかどうかは、routeテーブルを見ないとわかりません。ルートテーブルの(0.0.0.0/0)があるかどうかで判断できます。

$aws ec2 describe-route-tables \
--query "RouteTables[].{Sub:Associations[].SubnetId,Id:RouteTableId,rou:join('<->',Routes[].DestinationCidrBlock),INgw:Routes[].GatewayId}"\
--out text

            図G ルートテーブルと0.0.0.0/の関係

routeテーブルを出力します。queryで出力項目を絞り込みます。Associations[].SubnetIdとRouteTableId,join(‘<->’)で文字列を加え、Routes[].DestinationCidrBlock,Routes[].GatewayIdを出力します。<->0.0.0.0/0があるサブネットがpublicサブネットです。

Linux版その1 EC2の情報出力 https://opt-p.co.jp/blog/aws/post-1633/

Linux版その2 RDSの情報出力 https://opt-p.co.jp/blog/aws/post-1718/

Linux版その3 VPCの情報出力 https://opt-p.co.jp/blog/aws/post-2080/