希望你能帮到我从 AWS Lambda 获得响应 200 OK 后,我想搜索路由中的所有目的地 CidrBlock但是当打印它时,我只得到第一个
u'Routes': [{u'Origin': 'CreateRoute', u'DestinationCidrBlock': '1.1.1.1/32', u'NetworkInterfaceId': 'eni-08b854f5bc83cefe4', u'State': 'blackhole'}, {u'Origin': 'CreateRoute', u'DestinationCidrBlock': '2.2.2.2/32', u'NetworkInterfaceId': 'eni-08b854f5bc83cefe4', u'State': 'blackhole'}, {u'GatewayId': 'local', u'DestinationCidrBlock': '172.31.0.0/16', u'State': 'active', u'Origin': 'CreateRouteTable'}, {u'GatewayId': 'igw-cec16ba6', u'DestinationCidrBlock': '0.0.0.0/0', u'State': 'active', u'Origin': 'CreateRoute'}]}]}
如果我以这种方式制作,我会得到值,但不会得到 2.2.2.2/32:
print response["RouteTables"][0]['Routes'][0]['DestinationCidrBlock']
print response["RouteTables"][0]['RouteTableId']
1.1.1.1/32
RTB-08C31263
但是,如果在那里制作一个 for 循环,我会得到这种格式的数字
for x in response["RouteTables"][0]['Routes'][0]['DestinationCidrBlock']:
print x
1
.
1
.
1
.
1
/
3
阿拉伯数字
所以我的问题,我希望你能帮助我,如何获取所有的IP地址并以某种方式存储将 IP 和路由表 ID 关联到某种字典或列表中,以 WELL 格式获取所有数据
["RouteTables"][0]
保存结果返回的第一个路由表,如果您只有一个路由表,则可以这样做,但是如果您有更多路由表并且需要考虑每个路由表,那么您还需要遍历["RouteTables"]
的内容。
我假设您只有一个路由表。
您已经从 获取了路由表 ID
["RouteTables"][0]["RouteTableId"]
如果要提取每个目标 cidr 块,则需要遍历
["RouteTables"][0]["Routes"]
在循环时,提取那些 CIDR 块,即
cirdBlocks = [route["DestinationCidrBlock"] for route in response["RouteTables"][0]["Routes"]]
要创建键为路由表 ID 且值为上述 cidr 块的字典,您只需执行以下操作
即可routeTableId = response["RouteTables"][0]["RouteTableId"]
cirdBlocks = [route["DestinationCidrBlock"] for route in response["RouteTables"][0]["Routes"]]
routeTableCidrAssoc = { routeTableId: cirdBlocks }