К сожалению, AWS не поддерживает фильтрацию выходных данных по имени.Но довольно просто сделать фильтр, который будет:
#!/usr/bin/python
import sys
import boto3
import rest_client
OUTPUT_KEY = 'InstanceIp' # <-- Use the proper output name here
if len(sys.argv) < 2:
print "Bad usage: missing stack name"
exit(1)
stack_name = sys.argv[1]
session = boto3.Session(profile_name='profile name')
cf_resource = session.resource('cloudformation')
stack = cf_resource.Stack(stack_name)
try:
ip = filter(lambda x: x['OutputKey'] == OUTPUT_KEY, stack.outputs)[0]['OutputValue']
print "Extracted instance IP address ({0})".format(ip)
except IndexError:
print OUTPUT_KEY + " not found in " + stack_name
exit(1)
Кроме того, я могу заверить вас, что он ориентирован на будущее, поскольку они никогда (насколько мне известно) никогда не обновляют синтаксис своих ответных полезных нагрузок после APIофициально выпущен.