5

AWS の JavaScript SDK を使用して、Web ブラウザから私の S3 バケットにファイルをアップロードしようとしています。私のコードは次のようになります。

AWS.config.credentials = new AWS.CognitoIdentityCredentials({
    AccountId: 'dfhgdh',
    IdentityPoolId: 'fdagsd',
    RoleArn: 'fdafds'
});

var bucket = new AWS.S3({params: {Bucket: 'test-bucket'}});
var pdfUpload = document.getElementById('pdf-uploads').files[0];

var params = {Key: pdfUpload.name, ContentType: pdfUpload.type, Body: pdfUpload};
bucket.putObject(params, function (error, data) {
    if (error) {
        console.log(error);
    } else {
        console.log(data);
    }
});

ただし、putObject コマンドに到達するたびに、AWS からエラーが返され続けます。

「エラー: 構成に資格情報がありません {メッセージ: "構成に資格情報がありません"、コード: "CredentialsError"..."

ここには単純で愚かな何かが欠けていると確信していますが、私の人生のために何ができるのかわかりません。(偽の秘密鍵などをハードコーディングしようとすると別のエラーが発生するので、cognito資格情報を設定しようとしている方法に関係があると確信しています。)

4

2 に答える 2

10

JavaScript AWS SDK をデバッグした後、資格情報を設定する前にリージョンを設定していなかったことが問題であることがわかりました...そして、何らかの理由で、更新メソッドも使用する必要があります。これは SDK のバグのように思えますが、次の AWS.config のセットアップで問題が解決しました。

AWS.config.region = 'us-east-1';
AWS.config.update({
    credentials: new AWS.CognitoIdentityCredentials({
        AccountId: '43243243243',
        RoleArn: 'arn:aws:iam::970123460807:role/Cognito_RigUpWebUnauth_DefaultRole',
        IdentityPoolId: 'us-east-1:432432-432432432-4324323423-423243'
    })
});
于 2014-12-22T20:53:49.097 に答える