Amazon s3 boto3 S3Transfer抛出错误AttributeError:&x27;ResourceMeta';对象没有属性';事件';
我是AWS和Boto3的新手,我正在尝试将我的json文件上传到s3。我已将s3FullAccess IAM角色分配给我的ec2。我已经安装了python3.5和boto3。我正在尝试下面的代码Amazon s3 boto3 S3Transfer抛出错误AttributeError:&x27;ResourceMeta';对象没有属性';事件';,amazon-s3,boto3,python-3.5,Amazon S3,Boto3,Python 3.5,我是AWS和Boto3的新手,我正在尝试将我的json文件上传到s3。我已将s3FullAccess IAM角色分配给我的ec2。我已经安装了python3.5和boto3。我正在尝试下面的代码 from boto3.s3.transfer import S3Transfer import boto3 s3_client = boto3.resource('s3') transfer = S3Transfer(s3_client) bucket_name='test-bucket-oracle'
from boto3.s3.transfer import S3Transfer
import boto3
s3_client = boto3.resource('s3')
transfer = S3Transfer(s3_client)
bucket_name='test-bucket-oracle'
prefix='configurations'
transfer.upload_file('/home/ec2-user/temp/config.json', bucket_name, prefix+'configs3.json', ExtraArgs={'ServerSideEncryption': "AES256"})
并在误差以下。非常感谢您的帮助
Traceback (most recent call last):
File "transfers3.py", line 4, in <module>
transfer = S3Transfer(s3_client)
File "/home/ec2-user/.local/lib/python3.5/site-packages/boto3/s3/transfer.py", line 259, in __init__
self._manager = create_transfer_manager(client, config, osutil)
File "/home/ec2-user/.local/lib/python3.5/site-packages/boto3/s3/transfer.py", line 160, in create_transfer_manager
return TransferManager(client, config, osutil, executor_cls)
File "/home/ec2-user/.local/lib/python3.5/site-packages/s3transfer/manager.py", line 264, in __init__
self._register_handlers()
File "/home/ec2-user/.local/lib/python3.5/site-packages/s3transfer/manager.py", line 514, in _register_handlers
self._client.meta.events.register_first(
AttributeError: 'ResourceMeta' object has no attribute 'events'
回溯(最近一次呼叫最后一次):
文件“transfers3.py”,第4行,在
传输=s3传输(s3\U客户端)
文件“/home/ec2 user/.local/lib/python3.5/site packages/boto3/s3/transfer.py”,第259行,在__
self.\u manager=create\u transfer\u manager(客户端、配置、osutil)
文件“/home/ec2 user/.local/lib/python3.5/site packages/boto3/s3/transfer.py”,第160行,在创建传输管理器中
return TransferManager(客户端、配置、osutil、执行者)
文件“/home/ec2 user/.local/lib/python3.5/site packages/s3transfer/manager.py”,第264行,在__
self.\u寄存器\u处理程序()
文件“/home/ec2 user/.local/lib/python3.5/site packages/s3transfer/manager.py”,第514行,在寄存器处理程序中
self.\u client.meta.events.register\u优先(
AttributeError:“ResourceMeta”对象没有属性“events”
因为还没有人回答。结果我需要使用
boto3.client('s3')
我尝试了
3.resource('s3')
,因为a建议这样做。欢迎任何能够解释差异的专家。您需要使用客户端,因为这正是S3Transfer
所期望的。您可以在此处查看:
如果选中,则资源
(服务资源
)描述为:
A resource representing Amazon Simple Storage Service (S3)
而客户端
为:
A low-level client representing Amazon Simple Storage Service (S3):
正如您在文档中所看到的,它们不是同一件事,尽管您可以用这两者完成类似的任务