2017-09-05 13 views
1

私はJavascript AWS SDKを使用しています。 Javascript SDKを使用したAWS s3バケットからのgetObject:「missing credential」エラー

私がしたいのは、既にs3バケットに格納されているGETオブジェクトです。

クライアントコードは、s3に格納されたオブジェクトの(作業中の)URLにアクセスできます。

https://s3.amazonaws.com/my-bucket-name/my-object-key

私のクライアントアプリは現在、これらのURLの束を持っている:それはこのようになります。これらのURLのリンクのクリックをシミュレートして、ファイルを正常にダウンロードします。

私がしたいのは、スクリプト内ですべてのファイルをまとめて、JSzipを使って素敵なフォルダ構造のzipファイルにバンドルすることです。

私は(これはすべて私のコードベースで関連するコードをS3含まれます)次のことをやろうとしている:

var bucketName = 'my-bucket-name'; 
    var s3 = new AWS.S3({ 
     params: { 
      Bucket: bucketName 
     } 
    }); 

    var key = myFileUrl.split('my-bucket-name/')[1]; 
    var params = { 
     Key: key 
    }; 
    s3.getObject(params, function(err, data) { 
     if (err) console.log("error!" + err + err.stack); // an error occurred 
     else { 
     console.log("success getting file from S3:",data);   // successful response 
     } 
    }); 

私はこれを実行すると、私は「CredentialsError:configに欠落している資格証明書」取得エラー。

私は実際にこのための資格情報は必要ありませんか?ファイルは公開されているので、リンクをたどるだけで入手できます。私は、Javascript(クライアント)SDKを使用するためのAWSのドキュメントを見て、どのような種類の設定オブジェクトも設定していません。

これは誰でも利用できますか?私は間違って何をしていますか?

+0

my scriptタグが削除されました。私はSDKをこのファイルのstlに含めています:sdk.amazonaws.com/js/aws-sdk-2.100.0.min.js – Jay

答えて

0

Javascript AWS SDKは、S3 REST API、which requires authentication on GetObject (see the note)をラップします。認証を提供したくない場合は(GetObject権限のみでAMIロールを作成することができます)、ブラウザを使用している場合はfetchまたはXMLHttpRequestなど、通常のWebリクエストを作成できます。

+0

huh。なぜ私はAJAXのリクエストをしないと思ったのですか?ありがとう。 – Jay

関連する問題