Я создаю лямбда-функцию (с полным доступом к экземплярам ec2 и последующим действиям (DescribeStream, GetRecords, GetShardIterator, ListStreams) в динамо-потоке db).
Мое требование состоит в том, чтобы с помощью elb name получить частные IP-адреса экземпляров и вызвать оставшийся API для лямбда-события, запускаемого потоком DynamoDB.
Мой скрипт Python3.6 для функции Lambda работает правильно, чтобы получить все частные IP-адреса.
Но я не знаю, как вызывать остальные API, используя частный IP.
Я хотел бы сообщить, что у нас есть экземпляр бастиона (с публичным IP), с помощью которого мы можем ssh туннелировать через него.
Я не знаю, как это сделать.
Мой скрипт на Python ниже:
import boto3
import sys
import string
import subprocess
def instanaceList():
elb_name = 'xxxx-xxx-xxx-xxx-2-BlueELB'
print(elb_name)
print('\n')
print('THE LIST OF INSTANCES ATTACHED TO THIS ELB IS \n')
elbList = boto3.client('elb')
ec2 = boto3.resource('ec2')
bals = elbList.describe_load_balancers()
for elb in bals['LoadBalancerDescriptions']:
set2 = elb['LoadBalancerName']
if elb_name == set2 :
inst = elb['Instances']
print(inst)
for xIns in inst:
print(xIns)
EC2InstanceId = xIns['InstanceId']
ec2 = boto3.resource('ec2')
ec2instance = ec2.Instance(EC2InstanceId)
print(ec2instance.private_ip_address)
url = "curl -X GET https://"+ec2instance.private_ip_address+"/voice/diag -H 'cache-control: no-cache'"
result = subprocess.call(url, shell=True)
def lambda_handler(event, context):
print('test')
print(event)
instanaceList()
return 'Hello from Lambda'