gpt4 book ai didi

Python文件上传使用S3签名?

转载 作者:行者123 更新时间:2023-11-30 21:53:06 31 4
gpt4 key购买 nike

我有一个使用 S3 v4Signature 上传文件的用例。这些上传应使用 python 脚本 完成。

S3 v4Signature 会传递给我们的客户,以便将 n 个文件上传到我们的 S3 存储桶。由于我们不知道文件名或数量,因此无法为它们生成签名 URL。

认为这是生成的 V4 签名。 (为简单起见,我们将此签名作为硬拷贝传递给客户。)

key = "client/user_1/exec_1/",

s = {
"url": "https://s3.amazonaws.com/package-bucket",
"fields": {
"acl": "public-read",
"bucket": "package-bucket",
"X-Amz-Algorithm": "AWS4-HMAC-SHA256",
"X-Amz-Credential": "AKI****LV5P/20200115/us-east-1/s3/aws4_request",
"X-Amz-Date": "20200115T183407Z",
"Policy": "eyJleHBpcmF*******MTgzNDA3WiJ9XX0=",
"X-Amz-Signature": "128c4************0c8d9",
}
}

现在,Python 脚本需要使用此签名来上传 n 个文件到客户端/user_1/exec_1/。我一直在尝试使用请求来实现这一点,但没有成功。

with open('index.js', 'rb') as data:
r = requests.put(s.get('url'), data=data, headers=s.get('fields'))
print(r)

这个Python脚本在我们客户端的服务器上执行。向他们提供我们 s3 存储桶的凭据是不可能的。

s3 中的文件夹看起来像

client/user_1/exec_1
client/user_1/exec_2
client/user_2/exec_1
client/user_2/exec_2
client/user_2/exec_3
client/user_2/exec_4

文件上传后,我们会在服务器上对其进行处理。

注意:前端不参与整个过程。

Can anyone suggest a function to upload file(s) to s3?

<小时/>

用于生成签名的函数。

function singleFilePublicUpload(key) {
console.log("singleFilePublicUpload | Signature Request", key);
const Bucket = 'package-bucket';
const acl = "public-read";
const params = {
Bucket, Fields: { acl }, Conditions: [['starts-with', '$key', key]]
};
const presignedPost = s3.createPresignedPost(params);
presignedPost.fields.key = key;
return presignedPost;
}
<小时/>

常见问题解答

问:Python 脚本在哪里运行?

答:Python Upload 脚本在不同的客户端服务器上运行。

问:它是由您还是您的用户或客户运行?

答:Python上传脚本由客户端运行。

问:或者是您的用户将访问的网站的后端?

答:不。网站不参与此过程。

问:您希望他们如何进行身份验证以证明他们有权上传到 S3?

答:我们希望允许他们使用通配符签名访问 S3 文件夹。

问:您说您不想使用boto,因为它需要AWS权限,那么您打算如何授权上传到S3?

答:我们希望客户使用提供的签名直接向 S3 提交 POST 请求。V4 签名应授权直接上传到 S3。

最佳答案

您可以使用boto3 python 库:

import boto3

client = boto3.client('s3')
response = client.put_object(Bucket='your_bucket', Key='your_key')

关于Python文件上传使用S3签名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59758193/

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