Amazon s3 boto3 S3Transfer抛出错误AttributeError:&x27;ResourceMeta';对象没有属性';事件';

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'

我是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'
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):
正如您在文档中所看到的,它们不是同一件事,尽管您可以用这两者完成类似的任务