aws lamda с boto3.client - считывает вывод из dict и - PullRequest
0 голосов
/ 07 февраля 2019

Я надеюсь, что вы можете помочь мне после получения ответа 200 ok от aws lambda, я хочу найти все DestinationCidrBlock, которые есть в Маршрутах, но при распечатке я получаю только первый

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

2

поэтому мой вопрос и янадеюсь, вы мне поможете, как получить все ip-адреса и сохранить их в каком-либо виде, связать ip и id таблицы маршрутизации в каком-то диктовке или списке, чтобы получить все данные в формате нуля

1 Ответ

0 голосов
/ 07 февраля 2019

["RouteTables"][0] содержит первую таблицу маршрутов, возвращаемую результатом, если у вас есть только одна таблица маршрутов, вы можете сделать это так, но если у вас есть больше таблиц маршрутов и вам нужно рассмотреть каждую из них, вам потребуетсяПерейдите также содержимое ["RouteTables"].

Я предполагаю, что у вас есть только одна таблица маршрутов.

Вы уже получили идентификатор таблицы маршрутов из

["RouteTables"][0]["RouteTableId"]

Если вы хотите извлечь все блоки назначения cidr, вам нужно будет выполнить цикл по

["RouteTables"][0]["Routes"]

и во время цикла, извлеките эти блоки cidr, то есть

cirdBlocks = [route["DestinationCidrBlock"] for route in response["RouteTables"][0]["Routes"]]

Чтобы создать словарь, ключом которого является идентификатор таблицы маршрутов, а значением являются вышеприведенные блоки cidr, вы можете просто сделать следующее

routeTableId = response["RouteTables"][0]["RouteTableId"]
cirdBlocks = [route["DestinationCidrBlock"] for route in response["RouteTables"][0]["Routes"]]
routeTableCidrAssoc = { routeTableId: cirdBlocks }
...