課題
サブネットのパラメーターシートを更新する必要がある。
以下のシート構成にする。
① サブネット一覧
各サブネットの基本情報を一覧化する。
取得する項目は以下のとおり。
| 項目 | 説明 |
|---|---|
| 名前 | サブネットのNameタグ |
| サブネットID | サブネットを識別するID |
| サブネットARN | サブネットのARN |
| VPC ID | 所属するVPCのID |
| IPv4 CIDR | サブネットのIPv4アドレス範囲 |
| アベイラビリティゾーン | サブネットが配置されているAZ |
| 利用可能IP数 | 現在利用可能なIPv4アドレス数 |
| パブリックIP自動割り当て | パブリックIPv4の自動割り当て設定 |
| デフォルトサブネット | デフォルトサブネットかどうか |
| タグ | サブネットに設定されているタグ |
① サブネット一覧を出力
aws ec2 describe-subnets --output json | \
jq -r '
.Subnets[] |
[
([.Tags[]? | select(.Key == "Name") | .Value][0] // ""),
.SubnetId,
.SubnetArn,
.VpcId,
.CidrBlock,
.AvailabilityZone,
.AvailableIpAddressCount,
.MapPublicIpOnLaunch,
.DefaultForAz,
([.Tags[]? | "\(.Key)=\(.Value)"] | join(";"))
] | @csv
' > subnets.csv
『① サブネット一覧を出力』のコマンド説明
| コマンド | 説明 |
|---|---|
aws ec2 describe-subnets |
サブネットの基本情報を取得する |
--output json |
取得結果をJSON形式で出力する |
| |
前のコマンドの結果を次のコマンドに渡す |
jq -r |
JSONデータを加工して出力する |
.Subnets[] |
サブネットを1件ずつ取得する |
.Tags[]? |
サブネットに設定されたタグを取得する |
select(.Key == "Name") |
Nameタグのみを抽出する |
.Value |
Nameタグの値を取得する |
[0] // "" |
最初に取得した値を使用し、存在しない場合は空欄にする |
.SubnetId |
サブネットIDを取得する |
.SubnetArn |
サブネットARNを取得する |
.VpcId |
サブネットが所属するVPC IDを取得する |
.CidrBlock |
IPv4 CIDRを取得する |
.AvailabilityZone |
アベイラビリティゾーンを取得する |
.AvailableIpAddressCount |
利用可能なIPv4アドレス数を取得する |
.MapPublicIpOnLaunch |
パブリックIPv4の自動割り当て設定を取得する |
.DefaultForAz |
デフォルトサブネットかどうかを取得する |
"\(.Key)=\(.Value)" |
タグをKey=Value形式に変換する |
join(";") |
複数のタグをセミコロン区切りで結合する |
@csv |
取得結果をCSV形式に変換する |
> subnets.csv |
CSVファイルに保存する(既存ファイルは上書き) |