2016-07-16 6 views
0

Ich habe die folgende Richtlinie an den IAM-Benutzer angehängt, den ich verwende.aws-sdk putObject Zugriff verweigert Request.extractError

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "Stmt1468642330000", 
      "Effect": "Allow", 
      "Action": [ 
       "s3:*" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::elasticbeanstalk-ap-southeast-1-648213736065/documents/*" 
      ] 
     } 
    ] 
} 

Problem ist, wenn ich etwas tun:

return readFile(file.path) 
    .then(function(buffer) { 
    var s3obj = s3.putObject({ 
     Bucket: bucket, 
     Key: `documents/${destFileName}`, 
     Body: buffer 
    }); 
    return s3obj.promise(); 
    }); 

ich:

AccessDenied: Access Denied 

Was stimmt hier nicht?


Sieht aus wie wenn ich listBuckets, verwende ich Inhalte von meinem anderen S3-Konto. Scheint die Art, wie ich das SDK konfiguriere, falsch?

+0

einstellen Warum der Schlüssel: 'Dokumente/$ {Destfilename}' die Zieldatei ist? – error2007s

+0

Sind Sie sicher, dass der Ziel-Bucket existiert? –

+0

@KarenB, ja ich kopiere und klebte –

Antwort

1

Ok, ich habe das Problem gefunden, es sieht aus wie das [default] Profil, das in der ~/.aws/credentials Datei angegeben ist.

Ich fand, dass ich AWS wie folgt zu konfigurieren:

AWS.config = new AWS.Config({ 
    accessKeyId: appConfig.aws.accessId, 
    secretAccessKey: appConfig.aws.secretKey, 
    logger: process.stdout 
}); 

ich ursprünglich

AWS.config.accessKeyId = ...