2017-01-03 22 views
0

ノードSDKでnodejsから私の新しいバケット(awsコンソール経由で作成)にアクセスする際に問題が発生しました。私が作った階段(私が何かを逃した場合は助けてください)AWSアカウントを作成しAmazon S3 - nodejs SDKからバケットにアクセス

  • ので、私は今、SDK
  • のための新たなアクセスキーを作成し、rootユーザ
  • はS3に行って、新しいバケットを作成しましたwithhinコンソール
  • nodejsで私はこのバケツに何かをアップロードしようとしますが、私は「アクセスが拒否されました。

私はバケットで異なる領域を試しただけでなく、新しいアクセスキーを生成しました。また、テストバケットのいずれかを使用して全員にすべてを有効にしても、エラー。

コードビット:私は、私が行方不明ですか分からない

class SomeNodeService { 

     constructor() { 
      this.s3 = new S3({ 
       params: { 
        Bucket: 'some.bucket.which.name.is.unique', 
        accessKeyId: 'SOMEID', 
        secretAccessKey: 'SOMEID' 
       } 
      }); 
     } 

     uploadAttachment(attachment) { 
      const _this = this; 
      return co(function *() { 
       const file = yield _readFile(attachment.path, 'utf8'); 
       const key = `${KEY_PREFIX}attachment/${Date.now()}/${attachment.name}`; 
       const params = { 
        Key: key, 
        Body: file 
       }; 

       return yield _this.s3.putObject(params).promise(); 
      }); 
     } 

    } 

:S @filipebarretto 1として


は、私は、新しいユーザーを作成し、そのための新しいアクセストークンを作成しました彼もAmazonS3FullAccessを与えました。私はグループ名 'sysadmin'も作成し、グループ自体にAmazonS3FullAccess権限を提供したので、ユーザをグループに割り当てると、その権限もユーザに付与されました。だから、すべて私が

1)新しいグループSYSADM 2)助成金のグループ権限を作成するやったこと全てに「AmazonS3FullAccess」3)新しいユーザーXYを作成し、まだXYのユーザーのために

しかし、私のグループSYSADM 4)再作成アクセストークンに参加アクセスが拒否されました得る:/

+0

使用している資格情報は、ルートユーザーに関連付けられていますか?または、他の権限を持つ別のユーザーですか? – filipebarretto

+0

私はまだAWSに精通していませんが、ユーザーを作成してS3 IAMの役割を彼に提供しましたが、アクセストークンは後続のユーザーではなくrootアカウント/ rootユーザーにバインドされているようです。 –

+0

質問に記載されているポリシーを追加してください。 ユーザーを作成するときに、ユーザーの資格情報を作成できます。アカウントルートには資格情報を持たないでください。 – filipebarretto

答えて

1

は、あなたと使用をあなたの資格情報を設定するには:

AWS.config = new AWS.Config(); 
AWS.config.accessKeyId = "accessKey"; 
AWS.config.secretAccessKey = "secretKey"; 
AWS.config.region = "region"; 

これは、そうするための最善のどちらも最も安全な方法ではありません。詳細については、確認してください:のみ使用し、

あなたのコンストラクタで
const params = { 
    Key: key, 
    Body: file 
}; 

return yield _this.s3.putObject(params).promise(); 

constructor() { 
    this.s3 = new S3(); 
} 

VAR S3 = http://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-credentials.html

をあなたのような、バケットとのparamsでキーを定義する必要があります新しいAWS.S3();

参照:http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putObject-property

+0

同じ問題ですが、これは残念なことに助けになりませんでした。 –

+0

@ Jim-Y私は答えを補いました。やってみて。 – filipebarretto

+0

悲しいことに、悲しいことに、これは問題の原因にはなりませんでした。アプリケーションの他の部分では、AWS-SESのように、APIがちょっと同じで、私が私の質問でしました。環境変数から信用状を読み取り、それらをSES/S3コンストラクタのパラメータとして提供します。 –

関連する問題