Ich habe einige Dateien über das Amazon AWS-Management hochgeladen.
Ich habe einen Fehler 403 erhalten. Zugang verweigert. Ich habe herausgefunden, dass ich die Berechtigung zur Ansicht setzen muss.
Wie mache ich das für alle Dateien auf dem Bucket? Ich weiß, dass es für jede Datei eine Einstellungsberechtigung gibt. Es dauert sehr viel Zeit, wenn wirklich viele Dateien vorhanden sind, die für jeden sichtbar sein müssen.
Ich schlage vor, dass Sie eine Bucket-Richtlinie anwenden1 in den Eimer, in dem Sie öffentliche Inhalte speichern möchten. Auf diese Weise müssen Sie nicht für jedes Objekt eine Zugriffssteuerungsliste festlegen. Hier ist ein Beispiel für eine Richtlinie, mit der alle Dateien im Bucket mybucket öffentlich gemacht werden.
{
"Version": "2008-10-17",
"Id": "http better policy",
"Statement": [
{
"Sid": "readonly policy",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mybucket/sub/dirs/are/supported/*"
}
]
}
Dieser *
in "Resource": "arn:aws:s3:::mybucket/sub/dirs/are/supported/*"
ermöglicht eine Rekursion.
1 Beachten Sie, dass sich eine Bucket-Richtlinie von einer IAM-Richtlinie unterscheidet. (Zum einen erhalten Sie eine Fehlermeldung, wenn Sie versuchen, Principal
in eine IAM-Richtlinie aufzunehmen.) Sie können die Bucket-Richtlinie bearbeiten, indem Sie das Stammverzeichnis des Buckets in Ihrer AWS-Webkonsole aufrufen und Eigenschaften> Berechtigungen erweitern. Unterverzeichnisse eines Buckets haben ebenfalls Eigenschaften> Berechtigungen, es gibt jedoch keine Option dazu Edit bucket policy
Ich habe Cloudberry Explorer verwendet, um den Job zu erledigen :) Das ist: http://cloudberrylab.com/free-Amazon-s3-Explorer-cloudfront-IAM.aspx
Sie können auswählen, welches Verzeichnis öffentlich sein soll.
Klicken Sie auf "mehr" und markieren Sie es als öffentlich; Dadurch werden das Verzeichnis und alle Dateien als öffentlich zugänglich gemacht.
Sie können ACLs nur für ein eindeutiges Element (Bucket oder Element) ändern. Sie müssen sie also einzeln ändern.
Bei einigen S3-Verwaltungsanwendungen können Sie dieselbe ACL auf alle Elemente in einem Bucket anwenden. Intern wird jedoch die ACL nacheinander auf jedes Element angewendet.
Wenn Sie Ihre Dateien programmgesteuert hochladen, müssen Sie beim Hochladen der Datei die Zugriffssteuerungsliste angeben, damit Sie sie später nicht ändern müssen. Das Problem bei der Verwendung einer S3-Verwaltungsanwendung (wie Cloudberry, Transmit usw.) besteht darin, dass die meisten von ihnen beim Hochladen der einzelnen Dateien die Standard-ACL (Private Read Only) verwenden.
Ich hatte das gleiche Problem beim Hochladen der Dateien durch das Programm (Java) in den s3-Bucket.
Fehler: Auf der angeforderten Ressource ist kein Header 'Access-Control-Allow-Origin' vorhanden. _. Origin ' http: // localhost: 9000 ' ist der Zugriff daher nicht zulässig. Die Antwort hatte den HTTP-Statuscode 403.
Ich habe die Origin-Identität hinzugefügt und die Bucket-Richtlinie und CORS-Konfiguration geändert. Dann hat alles gut funktioniert.
Sie können die Zugriffssteuerungsliste für jede Datei mit aws cli festlegen:
BUCKET_NAME=example
BUCKET_DIR=media
NEW_ACL=public-read
aws s3 ls $BUCKET_NAME/$BUCKET_DIR/ | \
awk '{$1=$2=$3=""; print $0}' | \
xargs -t -I _ \
aws s3api put-object-acl --acl $NEW_ACL --bucket $BUCKET_NAME --key "$BUCKET_DIR/_"
Führen Sie folgende Schritte aus, um einen Großteil der Dateien zu veröffentlichen:
Mit S3 Browser können Sie Berechtigungen auch über das GUI rekursiv aktualisieren. Es ist ein nützliches Tool und für den nichtkommerziellen Gebrauch kostenlos.
Verwenden Sie AWS Policy Generator , um eine Richtlinie zu generieren, die Ihren Anforderungen entspricht. Der Prinzipal im Richtliniengenerator sollte der IAM-Benutzer/die IAM-Rolle sein, den Sie für den Zugriff auf die Objekte verwenden würden . Der Ressourcen-ARN sollte folgendermaßen lauten: unterstützt/*
Klicken Sie anschließend auf "Anweisung hinzufügen" und folgen Sie den Anweisungen. Sie erhalten schließlich eine JSON, die die Richtlinie darstellt. Fügen Sie dies in den Abschnitt zur Verwaltung Ihrer S3-Bucket-Richtlinien ein, der sich auf der Seite "Ihre S3-Bucket-Seite in AWS -> Berechtigungen -> Bucket-Richtlinie" befindet.
Ich wollte dies hier für potenzielle macOS-Benutzer hinzufügen, die bereits über die wunderschön gestaltete FTP-App Transmit by Panic verfügen.
Ich hatte bereits Panic und es werden S3-Buckets unterstützt (nicht sicher, welche Version hier veröffentlicht wurde, aber ich denke, die Upgrades waren kostenlos). Es unterstützt auch die rekursive Aktualisierung von Lese- und Schreibberechtigungen.
Klicken Sie einfach mit der rechten Maustaste auf das Verzeichnis, das Sie aktualisieren möchten, und wählen Sie die Lese- und Schreibberechtigungen aus, für die Sie sie festlegen möchten.
Es scheint nicht besonders schnell zu sein, aber Sie können die Protokolldatei öffnen, indem Sie auf Fenster> Transkription gehen, sodass Sie zumindest wissen, dass sie etwas tut.