【发布时间】:2021-11-16 17:34:53
【问题描述】:
假设我在 s3 存储桶中有这个文件:
s3://qq-dag/production/special-db/xx.gz
我现在希望有人能够向我发送此路径,并且我会自动使用此文件路径以便在我发出的发布请求中发送文件本身。
我想到的解决方案是首先将其下载到本地,然后以某种方式使用我的本地文件路径发送 post 请求。它可以工作吗?任何人都可以发布我如何做到的示例?
我尝试了类似的方法,但我尝试使用此代码的任何变体的每个解决方案都不断出错:
file = r'C:\Users\jhon.king\files\xx.gz'
bucket = 'qq-dag/production/special-db'
key='xx.gz'
s3client = boto3.client('s3')
s3client.download_file(bucket, key, file)
//now post request part
files=[
('file',('xx.gz',ocpen(''r'C:\Users\jhon.king\files\xx.gz,'rb'),'text/gz'))
]
headers = {
'X-Atlassian-Token': 'nocheck',
'Authorization': 'Basic Ymyb3dpdHo6kkczEyMzQ=',
}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
我确定我以某种方式误用了存储桶或文件名部分。谁能帮帮我?
我根据下面的答案尝试下载这个我不断收到错误
import os
prefix = 'user/mynew-research'
file = "mymyjira.gz"
#s3.Bucket(bucket).download_file(f'{prefix}/{file}', file)
AWS_KEY_ID = "kUvRWN8xabRdg++lUP84A3g"
AWS_ACCESS_KEY = 'AKIAJPQ'
bucket = 'my-research'
s3=boto3.resource(
service_name='s3',
region_name='us-east-1',
aws_access_key_id=AWS_KEY_ID,
aws_secret_access_key=AWS_ACCESS_KEY
)
s3.Bucket(bucket).download_file(f'{prefix}/{file}', file)
ClientError: 调用 HeadObject 操作时发生错误 (400): Bad Request
【问题讨论】:
-
你能显示错误信息吗?