Ich folgte dem Beispiel auf http://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_examples.html#iam-policy-example-s3 , um einem Benutzer Zugriff auf nur einen Bucket zu gewähren.
Ich habe dann die Konfiguration mit dem W3 Total Cache Wordpress Plugin getestet. Der Test ist fehlgeschlagen.
Ich habe auch versucht, das Problem mit zu reproduzieren
aws s3 cp --acl=public-read --cache-control='max-age=604800, public' ./test.txt s3://my-bucket/
und das scheiterte mit
upload failed: ./test.txt to s3://my-bucket/test.txt A client error (AccessDenied) occurred when calling the PutObject operation: Access Denied
Warum kann ich nicht in meinen Eimer hochladen?
Ich hatte ein ähnliches Problem. Ich habe das ACL-Zeug nicht benutzt, also brauchte ich es nicht
s3:PutObjectAcl
.In meinem Fall habe ich Folgendes getan (in Serverless Framework YML):
Anstatt:
Welches fügt ein
/*
am Ende des Bucket ARN.Hoffe das hilft.
quelle
Für den Fall, dass dies jemand anderem hilft, habe ich in meinem Fall ein CMK verwendet (es hat mit der Standardtaste aws / s3 einwandfrei funktioniert).
Ich musste meine Definition des Verschlüsselungsschlüssels in IAM aufrufen und den bei boto3 angemeldeten programmatischen Benutzer zur Liste der Benutzer hinzufügen, die "diesen Schlüssel zum Ver- und Entschlüsseln von Daten aus Anwendungen und bei Verwendung von in KMS integrierten AWS-Diensten verwenden können".
quelle
Ich habe gerade meinen Kopf gegen eine Wand geschlagen und versucht, S3-Uploads für große Dateien zum Laufen zu bringen. Anfangs war mein Fehler:
Dann habe ich versucht, eine kleinere Datei zu kopieren und bekam:
Ich konnte Objekte gut auflisten, aber ich konnte nichts anderes tun, obwohl ich
s3:*
Berechtigungen in meiner Rollenrichtlinie hatte. Am Ende habe ich die Richtlinie dahingehend überarbeitet:Jetzt kann ich jede Datei hochladen. Ersetzen Sie
my-bucket
durch Ihren Eimernamen. Ich hoffe, das hilft jemand anderem, der das durchmacht.quelle
"Resource": "*"
.Ich hatte ein ähnliches Problem beim Hochladen in einen mit KWS-Verschlüsselung geschützten S3-Bucket. Ich habe eine minimale Richtlinie, die das Hinzufügen von Objekten unter einem bestimmten s3-Schlüssel ermöglicht.
Ich musste meiner Richtlinie die folgenden KMS-Berechtigungen hinzufügen, damit die Rolle Objekte in den Bucket einfügen kann. (Könnte etwas mehr sein als unbedingt erforderlich)
quelle
aws/s3
in eine IAM-Richtlinie kopiert, die einer Rolle zugeordnet ist (nicht in der KMS-Richtlinie), und es funktioniert gut. Die einzigen Aktionen Ich habe gegen den KMS ARN erforderlich waren:kms:Encrypt
,kms:Decrypt
,kms:ReEncrypt*
,kms:GenerateDataKey*
,kms:DescribeKey
. Dann nur noch die Standard-S3-Berechtigungen.Ich hatte die gleiche Fehlermeldung für einen Fehler, den ich gemacht habe: Stellen Sie sicher, dass Sie eine korrekte s3-URL verwenden, wie z.
s3://my-bucket-name/
(Wenn mein-Eimer-Name offensichtlich die Wurzel Ihres aws s3 ist)
Ich bestehe darauf, denn wenn Sie den s3-Bucket aus Ihrem Browser kopieren, erhalten Sie so etwas wie
https://s3.console.aws.amazon.com/s3/buckets/my-bucket-name/?region=my-aws-regiontab=overview
Daher habe ich den Fehler gemacht, der Folgendes
s3://buckets/my-bucket-name
aufwirft:An error occurred (AccessDenied) when calling the PutObject operation: Access Denied
quelle
Für mich habe ich abgelaufene Authentifizierungsschlüssel verwendet. Neue generiert und boomt.
quelle
Ähnlich wie in einem Beitrag oben (außer dass ich Administratoranmeldeinformationen verwendet habe), damit S3-Uploads mit einer großen 50-Millionen-Datei funktionieren.
Anfangs war mein Fehler:
Ich habe den multipart_threshold auf über 50M gestellt
und ich bekam:
Ich habe die Einstellungen für den öffentlichen Zugriff des Buckets überprüft und alles war erlaubt. Daher habe ich festgestellt, dass der öffentliche Zugriff auf Kontoebene für alle S3-Buckets blockiert werden kann :
quelle
Wenn Sie Ihren eigenen vom Kunden verwalteten KMS-Schlüssel für die S3-Verschlüsselung angegeben haben, müssen Sie auch das Flag angeben
--server-side-encryption aws:kms
, zum Beispiel:aws s3api put-object --bucket bucket --key objectKey --body /path/to/file --server-side-encryption aws:kms
Wenn Sie das Flag nicht hinzufügen,
--server-side-encryption aws:kms
zeigt die CLI einenAccessDenied
Fehler anquelle
Wenn Sie den öffentlichen Zugriff für den Bucket festgelegt haben und dieser immer noch nicht funktioniert, bearbeiten Sie die Bucker-Richtlinie und fügen Sie Folgendes ein:
quelle
Ich konnte das Problem lösen, indem ich über Richtlinien einen vollständigen s3-Zugriff auf Lambda gewährte. Erstellen Sie eine neue Rolle für Lambda und fügen Sie die Richtlinie mit vollständigem S3-Zugriff hinzu.
Hoffe das wird helfen.
quelle