処理の実行
VPCの出力保存
VPCの出力情報を保存します。
コマンド:
aws ec2 describe-vpcs \
> ${FILE_OUTPUT}
結果(例):
リソース作成時のみ取得できる識別子の取得
VPCのVPC IDを取得します。
コマンド:
cat ${FILE_OUTPUT} \
| jp.py 'Vpcs[].VpcId'
結果(例):
[
"vpc-076e20680e3ec8801"
]
注釈
VPC IDはVPC作成時にのみ取得可能なため、create-vpcサブコマンドの出力を一時ファイルに保存して、jp.pyで一時ファイルから取得します。
(現在は、VPC作成時にそのVPC専用のタグを付与し、専用タグからVPCを特定してVPC IDを取得することも可能となっている。)
リソース作成時のみ取得できる識別子を条件とした情報の取得
VPCのVPC IDを取得します。
変数の設定:
EC2_VPC_ID=$( \
cat ${FILE_OUTPUT} \
| jp.py 'Vpcs[].VpcId | [0]' \
| sed 's/"//'g \
) \
&& echo ${EC2_VPC_ID}
結果(例):
VPCのステータスを取得します。
コマンド:
cat ${FILE_OUTPUT} \
| jp.py "Vpcs[?VpcId == \`${EC2_VPC_ID}\`].State" \
| sed 's/"//'g
結果(例):
VPCの情報を取得します。
コマンド:
cat ${FILE_OUTPUT} \
| jp.py "Vpcs[?VpcId == \`${EC2_VPC_ID}\`]"
結果(例):
[
{
"CidrBlock": "10.0.0.0/16",
"DhcpOptionsId": "dopt-bd5158df",
"State": "available",
"VpcId": "vpc-076e20680e3ec8801",
"OwnerId": "216399753842",
"InstanceTenancy": "default",
"CidrBlockAssociationSet": [
{
"AssociationId": "vpc-cidr-assoc-0886410fc8af5d2f2",
"CidrBlock": "10.0.0.0/16",
"CidrBlockState": {
"State": "associated"
}
}
],
"IsDefault": false,
"Tags": [
{
"Key": "Name",
"Value": "handson-cloud9-vpc"
}
]
}
]
VPCの情報をパイピングにより平坦化します。
コマンド:
cat ${FILE_OUTPUT} \
| jp.py "Vpcs[?VpcId == \`${EC2_VPC_ID}\`]
| [0]"
結果(例):
{
"CidrBlock": "10.0.0.0/16",
"DhcpOptionsId": "dopt-bd5158df",
"State": "available",
"VpcId": "vpc-076e20680e3ec8801",
"OwnerId": "216399753842",
"InstanceTenancy": "default",
"CidrBlockAssociationSet": [
{
"AssociationId": "vpc-cidr-assoc-0886410fc8af5d2f2",
"CidrBlock": "10.0.0.0/16",
"CidrBlockState": {
"State": "associated"
}
}
],
"IsDefault": false,
"Tags": [
{
"Key": "Name",
"Value": "handson-cloud9-vpc"
}
]
}
VPCのNameタグを取得します。
コマンド:
cat ${FILE_OUTPUT} \
| jp.py "Vpcs[?VpcId == \`${EC2_VPC_ID}\`]
| [0]
| Tags[?Key == \`Name\`].Value"
結果(例):
パイピングにより出力を整形します。([]を削除する)
コマンド:
cat ${FILE_OUTPUT} \
| jp.py "Vpcs[?VpcId == \`${EC2_VPC_ID}\`]
| [0]
| Tags[?Key == \`Name\`].Value
| [0]"
結果(例):
クォーテーションはsedなどで取り除きます。
コマンド:
cat ${FILE_OUTPUT} \
| jp.py "Vpcs[?VpcId == \`${EC2_VPC_ID}\`]
| [0]
| Tags[?Key == \`Name\`].Value
| [0]" \
| sed 's/"//'g
結果(例):
完了確認
「VPC"handson-cloud9-vpc"の出力情報をjp.pyで加工できている。」ことを確認します。