【发布时间】:2021-05-27 13:27:48
【问题描述】:
我想使用 Lambda 函数启动和停止 EC2 实例
我可以使用实例 ID 启动和停止 EC2 实例,但我如何才能对实例名称执行相同操作,我正在尝试这样做,因为我的最终用户不知道它们只是什么是实例 ID知道实例名称
下面是我的代码,对于实例 ID 工作正常
import json
import boto3
region = 'us-east-1'
ec2 = boto3.client('ec2', region_name=region)
def lambda_handler(event, context):
instances = event["instances"].split(',')
action = event["action"]
if action == 'Start':
print("STARTing your instances: " + str(instances))
ec2.start_instances(InstanceIds=instances)
response = "Successfully started instances: " + str(instances)
elif action == 'Stop':
print("STOPping your instances: " + str(instances))
ec2.stop_instances(InstanceIds=instances)
response = "Successfully stopped instances: " + str(instances)
return {
'statusCode': 200,
'body': json.dumps(response)
}
我为停止而传递的事件
{
"instances": "i-0edb625f45fd4ae5e,i-0818263a2152a23bd,i-0cd2e17ba6f62f651",
"action": "Stop"
}
我为开始而传递的事件
{
"instances": "i-0edb625f45fd4ae5e,i-0818263a2152a23bd,i-0cd2e17ba6f62f651",
"action": "Start"
}
【问题讨论】:
-
实例名称不唯一。您可能有许多具有相同名称的实例。那你要全部阻止吗?
-
是的,有道理
-
所以您要传递实例名称而不是实例 ID?
-
是的,我们只有实例名称,因为最终用户不知道实例 ID
标签: python amazon-web-services amazon-ec2 lambda boto3