全部, 我尝试使用S3临时Javascript SDK将文件上传到S3,但说实话,我找不到任何可用的样本,包括S3文档。
理想情况下,我应该可以这样做:
s3Client = new AWS.client(new TemporaryCredential(keyId,accesskey,token));
但是我检查了文档,没有提到如何使用临时凭证来创建S3客户端。
我们公司已经拥有获取临时凭证的API,所以我真的很想知道如何在javascript中执行此操作。
我不知道下面的java代码是否有js equivelant解决方案:
BasicSessionCredentials sessionCredentials = new BasicSessionCredentials(
session_creds.getAccessKeyId(),
session_creds.getSecretAccessKey(),
session_creds.getSessionToken());
AmazonS3 s3 = AmazonS3ClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(sessionCredentials)
.build();
感谢您的建议。
答案 0 :(得分:4)
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。
如果您希望自己的用户/客户,预签名网址非常有用 能够将特定对象上传到您的存储桶,但您不需要 他们拥有AWS安全凭证或权限。
客户端(浏览器)无需加载繁重的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);
});
答案 1 :(得分:1)
以下是有关如何阅读,上传,列出,删除相册到S3的完整示例。
http://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/s3-example-photo-album.html
AWS.config.update({
region: bucketRegion,
credentials: new AWS.CognitoIdentityCredentials({
IdentityPoolId: IdentityPoolId
})
});
如果您的公司已经有办法获取临时凭证,请将上述凭证对象替换为您的凭据,其余部分也是相同的。
感谢。