首页 > 解决方案 > S3 PutObject 静默失败?

问题描述

我一直在尝试使用 S3.Object.put() 方法以编程方式将 SNS 消息上传到 S3 存储桶,如下所示:

bucket_resource=boto3.resource('s3')
bucket_client = boto3.client('s3')
body = subject + message
object = bucket_resource.Object(bucket_name, folder+'/'+fn)
object.put(Body=body)

这不起作用,所以我尝试了以下尝试将对象上传到特定的 S3 存储桶。

body = subject + message
folder = datetime.datetime.today().strftime('%Y-%m-%d')
fn = datetime.datetime.today().strftime('%H:%M:%S')
key = folder_name + '/' + fn
bucket_resource = s3.Bucket(bucket_name)
bucket.upload_file(body, key)

但是,这两种方法都默默地失败了。我没有收到任何拒绝访问、错误消息等,但我也没有将我的消息上传到存储桶。我不确定每次调用该函数会发生什么,如果以编程方式成功将文件上传到存储桶的人,我将不胜感激。

注意:我有存储桶策略,我的账户是唯一可以将对象放入存储桶的账户。我是否需要附录来授予 Lambda 将对象放入存储桶的权限?

标签: pythonpython-3.xamazon-web-servicesamazon-s3

解决方案


我也没有错误,但我使用的是 .NET Core SDK。原来我的问题是功能在它能够将文件放入 S3 之前完成。在 .NET SDK 中,PutObject 调用是异步的 (PutObjectAsync),即使我在等待它完成,但由于我拥有的功能层,我没有正确执行该操作。

对于在 S3 中没有错误且没有文件的任何人,请在文件实际上传到 S3 之前检查您的函数是否未完成。


推荐阅读