AWS CLI からの json 出力を解析するために「JQ」を使用することに夢中になっています。
JQ を適切に使用する方法をまだ理解していない可能性がありますが、インバウンドとアウトバウンドの両方のルールごとにフォーマットされた 1 つの文字列を持つ 2 つ (またはそれ以上) のセキュリティ グループを解析したいと考えています。
コマンドAWS CLIはこれについてです:
aws ec2 describe-security-groups --group-ids sg-0000001 sg-0000002
そして、出力jsonはこれについてです(プライバシーのためにいくつかの情報をランダムに編集しました):
{
"SecurityGroups": [
{
"IpPermissionsEgress": [
{
"IpProtocol": "-1",
"IpRanges": [
{
"CidrIp": "0.0.0.0/0"
}
],
"UserIdGroupPairs": []
}
],
"Description": "server-db",
"Tags": [
{
"Value": "server-db",
"Key": "Client"
},
{
"Value": "server-db",
"Key": "Name"
}
],
"IpPermissions": [
{
"ToPort": 3389,
"IpProtocol": "tcp",
"IpRanges": [
{
"CidrIp": "10.12.0.0/16"
},
{
"CidrIp": "192.168.10.10/32"
}
],
"UserIdGroupPairs": [],
"FromPort": 3389
},
{
"ToPort": 5666,
"IpProtocol": "tcp",
"IpRanges": [
{
"CidrIp": "192.168.10.10/32"
}
],
"UserIdGroupPairs": [],
"FromPort": 5666
},
{
"IpProtocol": "-1",
"IpRanges": [],
"UserIdGroupPairs": [
{
"UserId": "121211212121",
"GroupId": "sg-00000001"
}
]
},
{
"IpProtocol": "-1",
"IpRanges": [],
"UserIdGroupPairs": [
{
"UserId": "121211212121",
"GroupId": "sg-000000001"
}
]
},
{
"ToPort": -1,
"IpProtocol": "icmp",
"IpRanges": [
{
"CidrIp": "10.12.0.0/16"
},
{
"CidrIp": "192.168.10.10/32"
}
],
"UserIdGroupPairs": [],
"FromPort": -1
}
],
"GroupName": "server-db",
"VpcId": "vpc-0000001",
"OwnerId": "121211212121",
"GroupId": "sg-000000001"
},
{
"IpPermissionsEgress": [
{
"IpProtocol": "-1",
"IpRanges": [
{
"CidrIp": "0.0.0.0/0"
}
],
"UserIdGroupPairs": []
}
],
"Description": "server-as",
"Tags": [
{
"Value": "server-as",
"Key": "Name"
},
{
"Value": "server",
"Key": "Client"
}
],
"IpPermissions": [
{
"IpProtocol": "-1",
"IpRanges": [],
"UserIdGroupPairs": [
{
"UserId": "121211212121",
"GroupId": "sg-00000001"
}
]
},
{
"ToPort": 22,
"IpProtocol": "tcp",
"IpRanges": [
{
"CidrIp": "10.12.0.0/16"
},
{
"CidrIp": "192.168.10.10/32"
}
],
"UserIdGroupPairs": [],
"FromPort": 22
},
{
"ToPort": 443,
"IpProtocol": "tcp",
"IpRanges": [
{
"CidrIp": "10.12.0.0/16"
},
{
"CidrIp": "192.168.60.10/32"
},
{
"CidrIp": "192.168.160.10/32"
},
{
"CidrIp": "192.168.130.10/32"
},
{
"CidrIp": "192.168.130.50/32"
},
{
"CidrIp": "192.168.130.150/32"
},
{
"CidrIp": "192.168.10.10/32"
},
{
"CidrIp": "192.168.80.150/32"
},
{
"CidrIp": "192.168.80.152/32"
},
{
"CidrIp": "192.168.80.155/32"
},
{
"CidrIp": "192.168.80.158/32"
}
],
"UserIdGroupPairs": [],
"FromPort": 443
},
{
"IpProtocol": "-1",
"IpRanges": [],
"UserIdGroupPairs": [
{
"UserId": "121211212121",
"GroupId": "sg-00000002"
}
]
},
{
"ToPort": -1,
"IpProtocol": "icmp",
"IpRanges": [
{
"CidrIp": "10.12.0.0/16"
},
{
"CidrIp": "192.168.10.10/32"
}
],
"UserIdGroupPairs": [],
"FromPort": -1
}
],
"GroupName": "server-as",
"VpcId": "vpc-00000001",
"OwnerId": "121211212121",
"GroupId": "sg-00000001"
}
]
}
id が必要とする形式は、次のようなものです。
SecurityGroupId - GroupName - InBound/OutBound - IpProtocol - Port - SourceRanges/DestinationRanges
誰でも私を助けることができますか?ありがとう