Ich schlage vor, dass Sie eine Bucket-Richtlinie 1 auf den Bucket anwenden, in dem Sie öffentliche Inhalte speichern möchten. Auf diese Weise müssen Sie nicht für jedes Objekt eine ACL 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/*"
}
]
}
Das *
in "Resource": "arn:aws:s3:::mybucket/sub/dirs/are/supported/*"
erlaubt Rekursion.
1 Beachten Sie, dass sich eine Bucket-Richtlinie von einer IAM-Richtlinie unterscheidet. (Zum einen wird eine Fehlermeldung angezeigt, wenn Sie versuchen, Principal
eine IAM-Richtlinie aufzunehmen.) Die Bucket-Richtlinie kann bearbeitet werden, indem Sie das Stammverzeichnis des Buckets in Ihrer AWS-Webkonsole verschieben und Eigenschaften> Berechtigungen erweitern. Unterverzeichnisse eines Buckets haben ebenfalls Eigenschaften> Berechtigungen, es gibt jedoch keine Option dazuEdit bucket policy
Sie können auswählen, welches Verzeichnis öffentlich sein soll.
Drücken Sie auf "Mehr" und markieren Sie es als öffentlich. Dadurch werden das Verzeichnis und alle Dateien als öffentlich zugänglich.
quelle
Sie können ACLs nur für einen eindeutigen Artikel (Eimer oder Artikel) ä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 die ACL jedoch einzeln auf alle Elemente angewendet.
Wenn Sie Ihre Dateien programmgesteuert hochladen, ist es wichtig, die ACL beim Hochladen der Datei anzugeben, damit Sie sie später nicht ändern müssen. Das Problem bei der Verwendung einer S3-Verwaltungsanwendung (wie Cloudberry, Transmit, ...) besteht darin, dass die meisten von ihnen beim Hochladen jeder Datei die Standard-ACL (privat schreibgeschützt) verwenden.
quelle
Ich habe Cloudberry Explorer verwendet , um den Job zu erledigen :)
quelle
Mit dem S3-Browser können Sie Berechtigungen auch rekursiv über die GUI aktualisieren. Es ist ein nützliches Tool und kostenlos für den nichtkommerziellen Gebrauch.
quelle
Sie können die ACL 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/_"
quelle
boto3
ObjectAcl oder genauer schreiben, wasS3.ObjectAcl.put
zu etwas führen würde, das leichter zu lesen ist.Ich hatte das gleiche Problem beim Hochladen der Dateien über Programm (Java) in S3 Bucket ..
Ich habe die Ursprungsidentität hinzugefügt und die Bucket-Richtlinie und die CORS-Konfiguration geändert, dann hat alles gut funktioniert.
quelle
Senden 5
Ich wollte dies hier für potenzielle MacOS-Benutzer hinzufügen, die bereits die wunderschön gestaltete FTP-App Transmit by Panic haben.
Ich hatte bereits Panic und es unterstützt S3-Buckets (nicht sicher, in welcher Version dies kam, 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, auf die Sie sie festlegen möchten.
Es scheint nicht besonders schnell zu sein, aber Sie können die Protokolldatei unter Fenster> Transkript öffnen, damit Sie zumindest wissen, dass sie etwas bewirkt.
quelle
Gehen Sie wie folgt vor, um einen Großteil der Dateien öffentlich zu machen:
quelle
Verwenden Sie den AWS-Richtliniengenerator , um eine Richtlinie zu generieren, die Ihren Anforderungen entspricht. Der Principal im Richtliniengenerator sollte der IAM-Benutzer / die IAM-Rolle sein, die Sie für den Zugriff auf die Objekte verwenden würden. Ressourcen-ARN sollte sein
arn:aws:s3:::mybucket/sub/dirs/are/supported/*
Klicken Sie anschließend auf "Anweisung hinzufügen" und folgen Sie den Anweisungen. Sie erhalten schließlich einen JSON, der die Richtlinie darstellt. Fügen Sie dies in Ihren Abschnitt zur Verwaltung von s3-Bucket-Richtlinien ein, der sich unter "Ihre s3-Bucket-Seite in AWS -> Berechtigungen -> Bucket-Richtlinie" befindet.
quelle