Python Lambda函数关闭RDS不工作-name错误:name';客户';没有定义
我正在使用下面的Lambda函数,但不断出现错误。我能够通过Pycharm使用本页底部的函数进行一些测试,所以我希望它能在Lambda中工作。任何帮助都将不胜感激Python Lambda函数关闭RDS不工作-name错误:name';客户';没有定义,python,amazon-web-services,aws-lambda,boto3,amazon-rds,Python,Amazon Web Services,Aws Lambda,Boto3,Amazon Rds,我正在使用下面的Lambda函数,但不断出现错误。我能够通过Pycharm使用本页底部的函数进行一些测试,所以我希望它能在Lambda中工作。任何帮助都将不胜感激 import boto3 def handler(event, context): client = boto3.client('rds') response = client.stop_db_instance( DBInstanceIdentifier='dev-mysql-rds' ) 响应:{“errorM
import boto3
def handler(event, context):
client = boto3.client('rds')
response = client.stop_db_instance(
DBInstanceIdentifier='dev-mysql-rds'
)
响应:{“errorMessage”:“未定义名称‘客户端’,“errorType”:“NameError”,“stackTrace”:[ “文件“/var/lang/lib/python3.8/imp.py”,第234行,在加载\模块中\n返回加载\源(名称、文件名、文件)\n”, “File”/var/lang/lib/python3.8/imp.py”,第171行,在load\u source\n module=\u load(spec)\n中, “文件“”,第702行,在加载\n中”, “文件“”,第671行,在\u load\u unlocked\n中”, “文件“”,第783行,在exec_模块中\n”, “文件“”,第219行,在\u调用\u中,已删除\u帧\n”, “File”/var/task/lambda_function.py”,第6行,在\n response=client.stop_db_实例(\n“]} 请求ID:“7fd994c0-799f-44a2-b93f-a437fee740af” 功能日志:启动请求ID:7fd994c0-799f-44a2-b93f-a437fee740af 版本:$LATEST[ERROR]NameError:未定义名称“client” 回溯(最近一次调用上次):文件 加载模块中的第234行“/var/lang/lib/python3.8/imp.py” 在load_source中返回load_source(名称、文件名、文件)文件“/var/lang/lib/python3.8/imp.py”,第171行 模块=_加载(规范)文件“”,第702行,在_加载文件“”中,第671行,在 _加载未锁定文件“”,第783行,在执行模块文件“”,第219行, 在已删除文件“/var/task/lambda\u function.py”的“调用”中, 第6行,在 response=client.stop_db_实例(结束请求ID:7fd994c0-799f-44a2-b93f-a437fee740af报告请求ID: 7fd994c0-799f-44a2-b93f-a437fee740af持续时间:352.02毫秒计费 持续时间:353毫秒内存大小:1024 MB最大使用内存:22 MB未知 发生应用程序错误 以下功能通过Pycharm工作。
import boto3
rds = boto3.setup_default_session(profile_name='dev')
client = boto3.client('rds')
response = client.stop_db_instance(
DBInstanceIdentifier='dev-mysql-rds'
)
由于代码是在执行
handler()
之前导入的,因此在AWS lambda执行handler()之前执行client.stop\u db\u instance()
,并且在处理程序函数的作用域之外,因此客户端未定义。如果将该函数调用移动到处理程序内部,它应该可以工作。由于代码是在执行handler()
之前导入的,client.stop\u db\u instance()
是在AWS lambda执行handler()之前执行的
,并且不在处理程序函数的作用域内,因此客户端未定义。如果将该函数调用移动到处理程序内,它应该可以工作。@Magitrek和@John Rotenstein感谢您的帮助。我成功地使用Lambda中的以下脚本使其工作。
我不得不使用lambda_处理程序,因为最初发布的处理程序不起作用
import boto3
client = boto3.client('rds')
def lambda_handler(event, context):
response = client.stop_db_instance(
DBInstanceIdentifier='dev-mysql-rds'
)
@Magitrek和@John Rotenstein
感谢您的帮助。我成功地使用Lambda中的以下脚本使其工作。
我不得不使用lambda_处理程序,因为最初发布的处理程序不起作用
import boto3
client = boto3.client('rds')
def lambda_handler(event, context):
response = client.stop_db_instance(
DBInstanceIdentifier='dev-mysql-rds'
)
翻译:
response=…
行应该缩进到def
中,而不是缩进到与def
相同的缩进级别。这就是Python知道它是函数的一部分的原因。@JohnRotenstein感谢您的帮助。翻译:response=…
行应该缩进到他是def
,而不是与def
处于相同的缩进级别。这就是Python知道它是函数的一部分的原因。@JohnRotenstein感谢您在这方面的帮助。