2016-09-21 15 views
2

私はs3バケットから既存のファイルを読み込もうとしていますが、何もしないで「アクセス拒否」となってしまいます。 Hereは、私が使用していますコードです:s3でアクセスが拒否されるのはなぜですか(Node.jsのaws-sdkを使用しています)?

'use strict' 

var AWS = require('aws-sdk') 
const options = { 
    apiVersion: '2006-03-01', 
    params: { 
    Bucket: process.env['IMAGINATOR_BUCKET'] 
    }, 
    accessKeyId: process.env['IMAGINATOR_AWS_ACCESS_KEY_ID'], 
    secretAccessKey: process.env['IMAGINATOR_AWS_SECRET_ACCESS_KEY'], 
    signatureVersion: 'v4' 
} 
console.log('options', options) 
var s3 = new AWS.S3(options) 

module.exports = exports = { 
    get (name, cb) { 
    const params = { 
     Key: name + '.json' 
    } 
    console.log('get params', params) 
    return s3.getObject(params, cb) 
    }, 
    set (name, body, cb) { 
    const params = { 
     Key: name + '.json', 
     Body: body 
    } 
    console.log('set params', params) 
    return s3.putObject(params, cb) 
    } 
} 

そして、これはgetメソッドを使用して(機密情報が出て検閲して)コールバックで提供さエラーをログに記録するとき、私は出力として取得していますものです:

options { apiVersion: '2006-03-01', 
    params: { Bucket: CENSORED_BUT_CORRECT }, 
    accessKeyId: CENSORED_BUT_CORRECT, 
    secretAccessKey: CENSORED_BUT_CORRECT, 
    signatureVersion: 'v4' } 
get params { Key: 'whitelist.json' } 
err { [AccessDenied: Access Denied] 
    message: 'Access Denied', 
    code: 'AccessDenied', 
    region: null, 
    time: Wed Sep 21 2016 11:17:50 GMT-0400 (EDT), 
    requestId: CENSORED, 
    extendedRequestId: CENSORED, 
    cfId: undefined, 
    statusCode: 403, 
    retryable: false, 
    retryDelay: 20.084538962692022 } 
/Users/shawn/git/vigour-io/imaginate/node_modules/aws-sdk/lib/request.js:31 
      throw err; 
      ^

AccessDenied: Access Denied 
    at Request.extractError (/Users/shawn/git/vigour-io/imaginate/node_modules/aws-sdk/lib/services/s3.js:538:35) 
    at Request.callListeners (/Users/shawn/git/vigour-io/imaginate/node_modules/aws-sdk/lib/sequential_executor.js:105:20) 
    at Request.emit (/Users/shawn/git/vigour-io/imaginate/node_modules/aws-sdk/lib/sequential_executor.js:77:10) 
    at Request.emit (/Users/shawn/git/vigour-io/imaginate/node_modules/aws-sdk/lib/request.js:668:14) 
    at Request.transition (/Users/shawn/git/vigour-io/imaginate/node_modules/aws-sdk/lib/request.js:22:10) 
    at AcceptorStateMachine.runTo (/Users/shawn/git/vigour-io/imaginate/node_modules/aws-sdk/lib/state_machine.js:14:12) 
    at /Users/shawn/git/vigour-io/imaginate/node_modules/aws-sdk/lib/state_machine.js:26:10 
    at Request.<anonymous> (/Users/shawn/git/vigour-io/imaginate/node_modules/aws-sdk/lib/request.js:38:9) 
    at Request.<anonymous> (/Users/shawn/git/vigour-io/imaginate/node_modules/aws-sdk/lib/request.js:670:12) 
    at Request.callListeners (/Users/shawn/git/vigour-io/imaginate/node_modules/aws-sdk/lib/sequential_executor.js:115:18) 

私はbeacuseを行うべきかわかりません私はドキュメントに従って正しく動作していると思いますが、動作していないとエラーメッセージは私のアクセスが拒否された理由を言いません...次のステップはこれを稼働させることでしょうか?

答えて

4

問題は、新しいIAMユーザーにポリシーが設定されていないことでした。私はそれにAmazonS3FullAccessポリシーを割り当てました。

関連する問題