gpt4 book ai didi

javascript - 直接在 JavaScript 中上传 S3

转载 作者:行者123 更新时间:2023-11-28 00:50:32 26 4
gpt4 key购买 nike

我正在尝试完成简单的操作,并直接使用 JavaScript 上传到 Amazon S3。我如何以及在哪里隐藏我的访问 key 和 secret key ?我在他们的文档或本网站上没有看到任何可以回答这个问题的内容。

我正在使用他们推荐的方法在 HTML 中进行设置。我还使用 Backbone 和 Bower。

<script src="https://sdk.amazonaws.com/js/aws-sdk-2.0.25.min.js"></script>
<script type="text/javascript">
// See the Configuring section to configure credentials in the SDK
AWS.config.credentials = ...;

// Configure your region
AWS.config.region = 'us-west-2';
</script>
<input type="file" id="file-chooser" />
<button id="upload-button">Upload to S3</button>
<div id="results"></div>

<script type="text/javascript">
var bucket = new AWS.S3({params: {Bucket: 'myBucket'}});

var fileChooser = document.getElementById('file-chooser');
var button = document.getElementById('upload-button');
var results = document.getElementById('results');
button.addEventListener('click', function() {
var file = fileChooser.files[0];
if (file) {
results.innerHTML = '';

var params = {Key: file.name, ContentType: file.type, Body: file};
bucket.putObject(params, function (err, data) {
results.innerHTML = err ? 'ERROR!' : 'UPLOADED.';
});
} else {
results.innerHTML = 'Nothing to upload.';
}
}, false);
</script>

最佳答案

您可以使用STS为每次上传生成短期临时凭证,并将其传递给 JS SDK,这样您就不必泄露您的长期 API key 。

使用 AWS PHP SDK 的示例(编写器包:"aws/aws-sdk-php":"~2.4"),假设您的 access_key_idsecret_access_key 在 ENV 中可用。

草率的例子:

<?php 
include 'vendor/autoload.php';

use Aws\Sts\StsClient;

/** Create Temporary Credentials */
$stsclient = StsClient::factory();
$temp_creds = $stsclient->getSessionToken(900)->get('Credentials'); // 15 minute expiration

?>
<script>
AWS.config.credentials = {
accessKeyId : '<?php echo $temp_creds['AccessKeyId']; ?>',
secretAccessKey : '<?php echo $temp_creds['SecretAccessKey']; ?>',
sessionToken : '<?php echo $temp_creds['SessionToken']; ?>'
};
AWS.config.region = 'your-region';
</script>

这样您就不必泄露您的访问权限 access_key_idsecret_access_key。 STS生成的 key 将在设定的时间间隔后失效。请务必遵循最佳实践,例如为长期存储的凭证创建 Angular 色有限的 IAM 用户。

引用:http://docs.aws.amazon.com/aws-sdk-php/latest/class-Aws.Sts.StsClient.html#_getSessionToken

关于javascript - 直接在 JavaScript 中上传 S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26852308/

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