我对使用AWS完全陌生。当前,我处于以下情况:我的lambda函数启动EC2实例。该实例将需要包含在“ ID”变量中的信息。我想知道如何将这些数据从lambda函数传输到EC2实例。这有可能吗?
import boto3
region = 'eu-west-1'
instances = ['AnEC2Instance-ID']
ec2 = boto3.client('ec2', region_name=region)
import os
def lambda_handler(event, context):
ID = event.get('ID')
ec2.start_instances(InstanceIds=instances)
print('started your instance: ' + str(instances))
此处“ AnEC2Instance-ID”应为EC2实例ID。 此lambda函数由网关API触发。使用以下行从此Gatway API获取ID:ID = event.get('ID')
答案 0 :(得分:0)
这些EC2实例已经启动,并且在此lambda中,它们是通过boto3 ec2.start_instances
启动的。在此之前,您必须做一些巧妙的AWS工作,以修改实例的user-data
,还必须将实例配置为在开始时(而不只是启动)重新运行user-data
。非常复杂的恕我直言。
两个替代建议:
client.run_instances
函数中使用boto3轻松地将数据传递到新实例。ec2.start_instances
,并在EC2实例启动时对其进行预先配置的to do curl http://169.254.169.254/latest/meta-data/instance-id
,并使用该值查询DynamoDB?答案 1 :(得分:0)
启动Amazon EC2实例时,您可以在用户数据参数中提供数据。
然后可以通过以下方式在实例上访问此数据:
http://169.254.169.254/latest/user-data/
此技术还用于将启动脚本传递给实例。如果脚本以特定标识符开头,则标准Amazon AMI上将提供运行该脚本的软件。但是,您只需通过用户数据传递任何数据,即可将其提供给实例。