lambda_function':unindent不匹配任何外部缩进

时间:2018-10-19 11:30:39

标签: python-2.7 amazon-web-services

我在以下代码段中出现错误,无法在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)

2 个答案:

答案 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行,而不是下一行