Input 将字符串从AWS Lambda传输到在同一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

我对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')

这些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上提供了一个软件,如果脚本以特定标识符开头,它将运行该脚本。但是,您只需通过用户数据传递任何数据,即可将其提供给实例