Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Lambda函数关闭RDS不工作-name错误:name';客户';没有定义_Python_Amazon Web Services_Aws Lambda_Boto3_Amazon Rds - Fatal编程技术网

Python Lambda函数关闭RDS不工作-name错误:name';客户';没有定义

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

我正在使用下面的Lambda函数,但不断出现错误。我能够通过Pycharm使用本页底部的函数进行一些测试,所以我希望它能在Lambda中工作。任何帮助都将不胜感激

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感谢您在这方面的帮助。