python – 使用Boto3将文件上传到带有前缀的S3存储桶
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 使用Boto3将文件上传到带有前缀的S3存储桶,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1581字,纯文字阅读大概需要3分钟。
内容图文
![python – 使用Boto3将文件上传到带有前缀的S3存储桶](/upload/InfoBanner/zyjiaocheng/750/ee886c42cb104f6ba6f9cdcb59e08926.jpg)
我正在尝试将文件上传到S3存储桶,但我无法访问存储桶的根级别,而是需要将其上传到某个前缀.以下代码:
import boto3
s3 = boto3.resource('s3')
open('/tmp/hello.txt', 'w+').write('Hello, world!')
s3_client.upload_file('/tmp/hello.txt', bucket_name, prefix+'hello-remote.txt')
给我一个错误:
调用PutObject操作时发生错误(AccessDenied):拒绝访问:ClientError Traceback(最近一次调用最后一次):文件“/var/task/tracker.py”,第1009行,在testHandler中s3_client.upload_file(‘/ tmp / hello .txt’,bucket_name,前缀’hello-remote.txt’)文件“/var/runtime/boto3/s3/inject.py”,第71行,在upload_file中extra_args = ExtraArgs,callback = Callback)文件“/ var / runtime /boto3/s3/transfer.py“,第641行,在upload_file self._put_object(文件名,存储桶,密钥,回调,extra_args)文件”/var/runtime/boto3/s3/transfer.py“,第651行,在_put_object中** extra_args)文件“/var/runtime/botocore/client.py”,第228行,在_api_call中返回self._make_api_call(operation_name,kwargs)文件“/var/runtime/botocore/client.py”,第492行, _make_api_call raise ClientError(parsed_response,operation_name)ClientError:调用PutObject操作时发生错误(AccessDenied):拒绝访问
bucket_name的格式为abcd,而prefix的格式为a / b / c / d /.我不确定错误是否是由于斜线错误或者是否有某种方式可以在其他地方指定前缀,或者如果我没有写入权限(尽管我应该这样做).
此代码执行时没有任何错误:
for object in output_bucket.objects.filter(Prefix=prefix):
print(object.key)
虽然铲斗是空的,但没有输出.
解决方法:
结果我需要SSE:
transfer = S3Transfer(s3_client)
transfer.upload_file('/tmp/hello.txt', bucket_name, prefix+'hello-remote.txt', extra_args={'ServerSideEncryption': "AES256"})
内容总结
以上是互联网集市为您收集整理的python – 使用Boto3将文件上传到带有前缀的S3存储桶全部内容,希望文章能够帮你解决python – 使用Boto3将文件上传到带有前缀的S3存储桶所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。