gpt4 book ai didi

javascript - 如何使用 S3 临时凭证在 Javascript 中上传文件

转载 作者:行者123 更新时间:2023-12-02 17:16:02 27 4
gpt4 key购买 nike

全部,我尝试使用 S3 临时 Javascript SDK 将文件上传到 S3,但老实说,我找不到任何可用的示例,包括 S3 文档。

理想情况下,我应该能够做到这一点:

s3Client = new AWS.client(new TemporaryCredential(keyId, accesskey, token ));

但是我查看了文档,没有地方提到如何使用临时凭证来创建 S3 客户端。

我们公司已经有了获取临时凭证的 api,所以我真的很想知道如何在 javascript 中执行此操作。

我不知道下面的java代码是否有js等效的解决方案:

BasicSessionCredentials sessionCredentials = new BasicSessionCredentials(
session_creds.getAccessKeyId(),
session_creds.getSecretAccessKey(),
session_creds.getSessionToken());

AmazonS3 s3 = AmazonS3ClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(sessionCredentials)
.build();

感谢您的建议。

最佳答案

TemporaryCredential 只是一个普通的凭证,您可以正常使用它。

AWS.config.update({
region: "us-east-1",
credentials: new AWS.Credentials('AccessKeyId', 'SecretAccessKey', 'SessionToken')
});

var s3 = new AWS.S3();
var params = {
Body: "The quick brown fox jumps over the lazy dog",
Bucket: "example-bucket",
Key: "hello.txt"
};
s3.putObject(params, function (err, data) {
if (err) console.log(err, err.stack);
else console.log(data);
});

但我建议使用 Pre-Signed URL上传文件而不是 STS TemporaryCredential。

The pre-signed URLs are useful if you want your user/customer to be able upload a specific object to your bucket, but you don't require them to have AWS security credentials or permissions.

-- AWS Documentation

客户端(浏览器)无需加载繁重的AWS SDK,一个简单的HTTP PUT请求即可。

var url = 'https://example-bucket.s3.amazonaws.com/hello.txt?blablabla'
var request = new Request(url, {
method: 'PUT',
body: "The quick brown fox jumps over the lazy dog",
});
fetch(request).then(function (response) {
console.log(response);
}).catch(function (err) {
console.log(err, err.stack);
});

关于javascript - 如何使用 S3 临时凭证在 Javascript 中上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46497455/

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