Input 将字符串从AWS Lambda传输到在同一Lambda函数中启动的EC2实例
我对AWS的工作一无所知。目前我处于以下情况:我的lambda函数启动一个EC2实例。此实例将需要包含在“ID”变量中的信息。我想知道如何将这些数据从lambda函数传输到EC2实例。这可能吗Input 将字符串从AWS Lambda传输到在同一Lambda函数中启动的EC2实例,input,amazon-ec2,aws-lambda,instance,transfer,Input,Amazon Ec2,Aws Lambda,Instance,Transfer,我对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, co
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')这些EC2实例已经启动,在此lambda中通过boto3
EC2.start\u实例启动。在此之前,您必须做一些聪明的AWS工作来修改实例的用户数据
,并将实例配置为在启动时重新运行用户数据
(而不仅仅是启动)。非常复杂的IMHO
两项备选建议:
- 重新考虑启动现有EC2实例的需要,因为您可以使用
客户端中的bot3轻松地将数据传递给新实例。运行\u instances
函数
- 或者,如果您确实需要恢复现有的EC2实例,您可能需要第三个组件来管理EC2实例ID和事件ID之间的关联:那么DynamoDB呢?首先,上面的脚本写入InstanceID和事件ID的键值对。然后调用
ec2.start\u instances
,当ec2实例启动时,它是预配置的curlhttp://169.254.169.254/latest/meta-data/instance-id
,并使用该值查询DynamoDB
启动Amazon EC2实例时,可以在用户数据参数中提供数据
然后可通过以下方式在实例上访问此数据:
http://169.254.169.254/latest/user-data/
此技术还用于将启动脚本传递给实例。标准Amazon AMIs上提供了一个软件,如果脚本以特定标识符开头,它将运行该脚本。但是,您只需通过用户数据传递任何数据,即可将其提供给实例