webentwicklung-frage-antwort-db.com.de

Amazon S3 Berechtigungsproblem - Wie werden die Berechtigungen für alle Dateien gleichzeitig festgelegt?

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. 

74
Rails beginner

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

115
cloudberryman

Ich habe Cloudberry Explorer verwendet, um den Job zu erledigen :) Das ist: http://cloudberrylab.com/free-Amazon-s3-Explorer-cloudfront-IAM.aspx

5
Rails beginner

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.

5
mohammad zein

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.

4
Daniel García

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.

2
Manju Shingadi

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/_"
1
moppag

Führen Sie folgende Schritte aus, um einen Großteil der Dateien zu veröffentlichen:

  1. Gehe zu S3 Webinterface
  2. Öffnen Sie den erforderlichen Eimer
  3. Wählen Sie die erforderlichen Dateien und Ordner aus, indem Sie auf die Kontrollkästchen links neben der Liste klicken
  4. Klicken Sie oben in der Liste auf die Schaltfläche «Mehr» und klicken Sie auf «Öffentlich machen».
  5. Bestätigen Sie mit «Öffentlich machen». Die Dateien verfügen nicht über einen öffentlichen Schreibzugriff, obwohl die Warnung "... Lesen Sie dieses Objekt, Lese- und Schreibberechtigungen" lautet.
1
Finesse

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. 

1
Paul Siersma

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.

0
user2906555

Senden Sie 5

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.

0
Joshua Pinter