gpt4 book ai didi

python - s3.Object() 抛出 TypeError : sequence item 0: expected str instance, tuple found

转载 作者:行者123 更新时间:2023-12-04 16:03:12 29 4
gpt4 key购买 nike

按照 boto3 文档,我尝试这样做:

session = boto3.Session(
aws_access_key_id=KEY,
aws_secret_access_key=SECRET_KEY
)
s3 = session.resource('s3')

obj = s3.Object('test', 'test/myfile.csv')

当我运行 obj.get() 时,我收到:

TypeError: sequence item 0: expected str instance, tuple found



我需要获取这个 csv 文件的内容。

当我尝试使用客户端而不是 session 时,它会起作用:
s3 = boto3.client('s3')
obj = s3.get_object(Bucket='test', Key='test/myfile.csv')

最佳答案

此问题适用于 AWS S3 存储桶和 DigitalOcean Spaces 存储桶。

要复制错误:

import boto3

KEY = '********************',
SECRET_KEY = '*******************************************'

# Initialize a session using DigitalOcean Spaces.
session = boto3.session.Session()

client = session.client('s3', region_name='sgp1',
endpoint_url='https://sgp1.digitaloceanspaces.com',
aws_access_key_id=KEY,
aws_secret_access_key=SECRET_KEY)

抛出错误:
~/.pyenv/versions/3.8.0/lib/python3.8/site-packages/botocore/auth.py in scope(self, request)
322 scope.append(self._service_name)
323 scope.append('aws4_request')
--> 324 return '/'.join(scope)
325
326 def credential_scope(self, request):

TypeError: sequence item 0: expected str instance, tuple found

看起来 API 有问题,但如果我们仔细观察,
>>>print(type(SECRET_KEY))
str

>>> print(type(KEY))
tuple

正如 michael-sqlbot 所评论的,有一个 tuple键入其中一个身份验证 key 。

注意上面代码中的逗号:
import boto3

KEY = '********************',

只需通过删除逗号将其更改为字符串类型:
import boto3

KEY = '********************',
SECRET_KEY = '*******************************************'

# Initialize a session using DigitalOcean Spaces.
session = boto3.session.Session()

client = session.client('s3', region_name='sgp1',
endpoint_url='https://sgp1.digitaloceanspaces.com',
aws_access_key_id=KEY,
aws_secret_access_key=SECRET_KEY)

[出去]:
{'ResponseMetadata': {'RequestId': '*************',
'HostId': '',
'HTTPStatusCode': 200,
'HTTPHeaders': {'transfer-encoding': 'chunked',
'x-amz-request-id': '*************',
'content-type': 'application/xml',
'date': 'Mon, 15 Jun 2020 01:14:42 GMT',
'strict-transport-security': 'max-age=15552000; includeSubDomains; preload'},
'RetryAttempts': 0},
'Buckets': [{'Name': '*****',
'CreationDate': datetime.datetime(2019, 11, 20, 8, 28, 36, 548000, tzinfo=tzutc())}],
'Owner': {'DisplayName': '*******', 'ID': '********'}}

关于python - s3.Object() 抛出 TypeError : sequence item 0: expected str instance, tuple found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54855479/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com