如何等待直到在Python中使用Boto3并从Shell脚本调用Lambda函数传递EC2(在Lambda中创建)2/2状态检查
我正在执行的用例是:如何等待直到在Python中使用Boto3并从Shell脚本调用Lambda函数传递EC2(在Lambda中创建)2/2状态检查,python,amazon-web-services,boto3,Python,Amazon Web Services,Boto3,我正在执行的用例是: 创建EC2实例 在这种情况下,等待EC2实例启动并运行 通过在EC2实例中运行shell脚本来部署构建 从shell脚本获取成功响应 终止实例 在实例终止并且运行shell脚本的响应是成功代码之后,我需要在Jenkins中运行不同的管道,这将依次调用创建EC2实例等等 等待的主要目的是: 如果我的lambda函数在没有执行整个代码的情况下退出,那么我的构建将不会被部署,并且下一个jenkins管道(步骤6)将运行,直到我成功完成第一个部署为止 如果build deploy(
等待的主要目的是:
aws lambda invoke --invocation-type RequestResponse --function-name <my-function-name> --payload '{"Key": "'$value'"}' /dev/stdout
aws lambda invoke--调用类型RequestResponse--函数名--有效负载“{”Key:“$value'}”/dev/stdout
Lambda_function.py:
instance=EC2.run\u实例(
ImageId=,
InstanceType=,
MinCount=1,
MaxCount=1,
.......
)
实例id=instance['Instances'][0]['InstanceId']
ec2instance=ec2.Instance(id=Instance\u id)
ec2instance.等待\u直到\u运行()
服务员=EC2.get\u服务员('instance\u status\u ok')
服务员,等等(
InstanceId=[instance_id],
服务员配置={
“延迟”:15,
“最大尝试数”:40
},
includealInstances=True
)
响应=EC2.description\u实例\u状态(
InstanceId=[instance_id],
includealInstances=True
)
打印(答复)
@UNH实习生
请尝试附加的链接,看看它对您的情况是否有帮助为什么要等待状态检查完成?Amazon EC2不表示操作系统或任何应用程序已“就绪”。您对等待的实际要求是什么?您通常不希望Lambda函数“等待”,因为它们是按时间计费的。如果您能更好地解释您的用例,我们可能会建议一种替代方法。我正在执行的用例是:1.创建EC2实例2。在这种情况下,请等待EC2实例启动并运行g 3.通过在EC2实例4中运行外壳脚本来部署构建。从外壳脚本5中获得成功响应。终止实例6。在实例终止并且运行外壳脚本的响应带有成功代码之后,我需要在Jenkins中运行不同的管道,这将依次调用创建EC2实例等。主要目的是f等待是:1.如果我的lambda函数在没有执行整个代码的情况下退出,我的构建将不会部署,下一个jenkins管道(步骤6)将运行,我不希望运行,直到我成功完成第一个部署。2.如果构建部署中有任何错误(步骤3),它应该返回该错误,并且不应该运行我无法处理的下一个管道,因为我的响应代码是在EC2实例运行之前返回的。