AWS Lambda Python S3读取文件错误

AWS Lambda Python S3读取文件错误,python,amazon-web-services,amazon-s3,lambda,amazon-iam,Python,Amazon Web Services,Amazon S3,Lambda,Amazon Iam,试图从s3中的存储桶中读取文件。bucket有一个连接到python lambda函数的触发器。然后,当一个新文件被放入bucket时,它就会运行。我总是出错 这是代码: 将文件从S3下载到本地文件系统 我得到这个错误 “ClientMeta”对象没有属性“client” 我认为它可能是IAM,但Lambda函数具有AWSLambdaFullAccess角色,这在S3中几乎是一个管理员 任何帮助都将不胜感激我认为变量s3的对象类型可能不正确s3.meta.client,但我认为s3是client

试图从s3中的存储桶中读取文件。bucket有一个连接到python lambda函数的触发器。然后,当一个新文件被放入bucket时,它就会运行。我总是出错

这是代码:

将文件从S3下载到本地文件系统 我得到这个错误

“ClientMeta”对象没有属性“client”

我认为它可能是IAM,但Lambda函数具有AWSLambdaFullAccess角色,这在S3中几乎是一个管理员


任何帮助都将不胜感激

我认为变量
s3
的对象类型可能不正确<当
s3
ResourceMeta
对象时,您可能会使用code>s3.meta.client,但我认为
s3
client
对象

这样你就可以写了

试试看:
s3.下载_文件(bucket、key、localFilename)
例外情况除外,如e:
...

此错误是由创建boto3客户端而不是资源造成的

示例(这将重现您的错误):

您有两种解决方案:

1) 更改为使用“高级抽象的”“s3资源:

s3 = boto3.resource('s3')
s3.meta.client.download_file(bucket, key, localFilename)
2) 直接使用“低级”s3客户端下载_文件()


在我看来,似乎
s3.meta
没有
客户端
对象,因此上面的调用在到达AWS之前就失败了。我猜例外是
属性错误
?请编辑您的问题,以包括变量
s3
从何处获取其值。还请包括完整的回溯。为什么不使用boto3 s3低级客户端下载文件<代码>导入boto3#获取服务客户端s3=boto3.client('s3')#将bucket name处的对象和key name下载到tmp.txt s3。下载文件(“bucket name”、“key name”、“tmp.txt”)。修复了它。谢谢你,约翰。
s3 = boto3.client('s3')
s3.meta.client.download_file(bucket, key, localFilename)
s3 = boto3.resource('s3')
s3.meta.client.download_file(bucket, key, localFilename)
s3 = boto3.client('s3')
s3.download_file(bucket, key, localFilename)