我在以下代码段中出现错误,无法在lambda函数中使用处理程序作为lambda_function.start_handler启动EC2实例
import boto3
region = 'us-east-2'
instances = ['i-04b301372b916390f']
def start_handler(event, context):
ec2 =boto3.client('ec2',region_name=region)
ec2.start_instances(InstanceIds=instances)
print('started your instances: ') +
str(instances)
得到以下错误:
Syntax error in module 'lambda_function': unindent does not match any outer indentation level (lambda_function.py, line 8)
答案 0 :(得分:2)
缩进在Python中很重要,因为没有大括号可以将代码保持在一起。定义声明后的代码应缩进4个空格:
import boto3
region = 'us-east-2'
instances = ['i-04b301372b916390f']
def start_handler(event, context):
ec2 =boto3.client('ec2',region_name=region)
ec2.start_instances(InstanceIds=instances)
print('started your instances: ' + str(instances))
另一个建议:将实例和区域作为参数,因为现在您依靠的是全局变量。
def start_handler(event, context, instances, region):
ec2 =boto3.client('ec2',region_name=region)
ec2.start_instances(InstanceIds=instances)
print('started your instances: ' + str(instances))
编辑,如ALTR所述,将str(instances)与print( ... +
放在同一行上,并位于打印括号内。
答案 1 :(得分:0)
将str(instances)放在+后面的第7行,而不是下一行