簡體   English   中英

使用AWS SDK for JavaScript訪問AWS S3

[英]Accessing AWS S3 using AWS SDK for JavaScript

現在我正在使用javascript SDK訪問我的s3存儲桶它工作正常,但我已經直接在javascript中硬編碼了我的所有憑據,但在SDK中他們說你可以將它們存儲在AWS.config對象中,我不會知道怎么做。 此外,在線資源不提供信息,所以有人可以讓我知道如何做到這一點或任何其他更好的方式來做到這一點,而不是硬編碼憑證?

    <script type="text/javascript">
        AWS.config.accessKeyId = 'dddddddddd';
        AWS.config.secretAccessKey = 'rrrrrrrrrrrrrrrreeeeeeeeeeeeeeeeeeeee';
        AWS.config.region = 'us-east-1';

        // create the AWS.Request object
        var bucket = new AWS.S3({ params: { Bucket: 'some.bucket' } });
        bucket.listObjects(function (err, data) {
            if (err) {
                document.getElementById('status').innerHTML =
                  'Could not load objects from S3';
            } else {
                document.getElementById('status').innerHTML =
                  'Loaded ' + data.Contents.length + ' items from S3';
                for (var i = 0; i < data.Contents.length; i++) {
                    document.getElementById('objects').innerHTML +=
                      '<li>' + data.Contents[i].Key + '</li>';
                }
            }
        });
    </script>

我認為更好的方法是將其存儲在〜/ .aws /憑證中。 您可以通過創建文件或使用帶有cli命令的aws configure來執行此操作,回答問題並生成此文件:

[default]
aws_access_key_id = THEACCESSKEYHERE
aws_secret_access_key = THESECRETACCESSKEYHERE

和〜/ .aws / config:

[default]
output = json (or whatever you prefer here)
region = us-east-1 (or whatever region you are using)

無需為每個命令手動添加它,也無需調用您需要的AWS。

我相信瀏覽器不支持此功能。 node.js完全支持AWS Javascript SDK。

請閱讀: http//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS.html

這是有道理的,因為沒有人願意公開公開私人認證/授權信息。

如果你想得到想象,你可能會使用來自另一台服務器( http://en.wikipedia.org/wiki/JSONP )的JSONP傳遞憑證,並限制使用防火牆訪問某些客戶端,但它可能會變得有點混亂。


另外,為什么不公開公開S3存儲桶以進行讀取訪問,因為瀏覽器上的javascript是公共的?

有一種方法可以在瀏覽器中實現JS上傳,而不會泄露您的私人憑據。 但它需要一些服務器端邏輯。

請在此處查看答案: S3直接在JavaScript中上傳

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM