2016-12-20 1 views
0

Wenn das JS SDK auf ein s3 Eimer zu laden, wird die folgende Politik funktioniert:Welche Richtlinienaktionen müssen erlaubt sein, um eine Datei auf s3 hochzuladen?

{ 
 
    "Version": "2012-10-17", 
 
    "Statement": [ 
 
     { 
 
      "Effect": "Allow", 
 
      "Action": [ 
 
       "s3:*" 
 
      ], 
 
      "Resource": [ 
 
       "arn:aws:s3:::foo/*" 
 
      ] 
 
     } 
 
    ] 
 
}

aber die detaillierteren und sichern

{ 
 
    "Version": "2012-10-17", 
 
    "Statement": [ 
 
     { 
 
      "Effect": "Allow", 
 
      "Action": [ 
 
       "s3:PutObject", 
 
       "s3:GetObject" 
 
      ], 
 
      "Resource": [ 
 
       "arn:aws:s3:::foo/*" 
 
      ] 
 
     } 
 
    ] 
 
}

nicht. Ist für das Hochladen eines Objekts eine zusätzliche Aktionserlaubnis erforderlich?

+0

Diese Richtlinie sollte ausreichen. Welchen API-Aufruf versuchen Sie? Vielleicht versuchst du versehentlich einen s3: ListBucket (oder einen anderen API-Aufruf). Das würde deinen Fehler erklären. – spg

+0

@ Simon-Pierre Ich verwende die S3.upload() -Funktion der aws-sdk: https://github.com/aws/aws-sdk-js/blob/23ae71e7da812d5603a8f4cc6126d6c6871cd6b4/lib/services/s3.js#L819 –

+1

die Die s3.upload() - Funktion von aws-sdk verwendet einen mehrteiligen Upload. Sie vermissen wahrscheinlich die 's3: ListMultipartUploadParts' Aktion – spg

Antwort

1

Ihre Richtlinie gewährt Berechtigungen für Objekte, nicht für den Bucket. Dies sollte funktionieren:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "s3:PutObject" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::foo/" 
      ] 
     }, 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "s3:GetObject" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::foo/*" 
      ] 
     } 
    ] 
} 

Beachten Sie den Unterschied zwischen der Schaufel (arn:aws:s3:::foo/) und Objekte (arn:aws:s3:::foo/*).

Verwandte Themen