Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
Wie gewähre ich öffentlichen Lesezugriff auf einige Objekte in meinem Amazon-S3-Bucket?
Ich möchte, dass einige Objekte in meinem Amazon Simple Storage Service (Amazon S3)-Bucket öffentlich lesbar sind. Ich möchte jedoch nicht die Berechtigungen für andere Objekte ändern, die sich im selben Bucket befinden.
Kurzbeschreibung
Verwende eine der folgenden Möglichkeiten, um öffentlichen Lesezugriff auf Objekte im S3-Bucket zu gewähren:
- Verwende die Amazon S3-Konsole, um die Zugriffssteuerungsliste (ACL) des Objekts zu aktualisieren.
- Verwende die AWS Command Line Interface (AWS CLI), um die ACL des Objekts zu aktualisieren.
- Verwende eine Bucket-Richtlinie, die öffentlichen Lesezugriff auf ein bestimmtes Objekt-Tag gewährt.
- Verwende eine Bucket-Richtlinie, die öffentlichen Lesezugriff auf ein bestimmtes Präfix gewährt.
Wichtig: Wenn du S3-Objekteigentümerschaft im Bucket auf Bucket-Eigentümer erzwungen setzt, kannst du Bucket- und Objekt-ACLs nicht verwenden, um öffentlichen Zugriff zu gewähren. In den meisten Fällen benötigst du keine ACLs, um Berechtigungen für Objekte und Buckets zu gewähren. Verwende stattdessen die AWS Identity Access and Management (IAM, Identitäts- und Zugriffsmanagement)-Richtlinien und S3-Bucket-Richtlinien, um Berechtigungen zu gewähren.
Neue Buckets, Zugangspunkte und Objekte erlauben standardmäßig keinen öffentlichen Zugriff. Wenn du „Öffentlichen Zugriff blockieren“ für alle Buckets in deinem AWS-Konto konfiguriert hast, erhältst du die Meldung „Bucket und sind nicht öffentlich“.
Um auf den öffentlichen Bucket zuzugreifen, stelle sicher, dass das Netzwerk keine Firewalls oder Einstellungen hat, die ausgehenden Datenverkehr zur Domain des Buckets blockieren.
Lösung
Wichtig: Standardmäßig sind die Einstellungen zum Blockieren des öffentlichen Zugriffs für neue S3-Buckets auf Wahr gesetzt. Bevor du beginnst, ändere die Einstellungen zum Blockieren des öffentlichen Zugriffs auf Konto- oder Bucket-Ebene in Falsch.
Verwendung der Amazon S3-Konsole, um die ACL des Objekts zu aktualisieren
Mehrere Objekte gleichzeitig öffentlich zugänglich machen
Warnung: Überprüfe die Objekte sorgfältig, bevor du sie öffentlich zugänglich machst. Nachdem du mehrere Objekte öffentlich zugänglich gemacht hast, kannst du diese Aktion nicht für alle Objekte gleichzeitig rückgängig machen. Stattdessen musst du Öffentlicher Zugriff auf der Registerkarte Berechtigungen jedes Objekts ändern.
Gehe wie folgt vor, um mehrere Objekte gleichzeitig öffentlich zugänglich zu machen:
- Öffne die Amazon S3-Konsole und wähle dann die Objekte aus, die du öffentlich zugänglich machen möchtest.
- Wähle Aktionen und dann Öffentlich zugänglich machen aus.
- Vergewissere dich im Dialogfeld Veröffentlichen, dass die Objektliste korrekt ist.
- Wähle Öffentlich zugänglich machen.
Ein Objekt öffentlich zugänglich machen
Um nur ein Objekt öffentlich zugänglich zu machen, wiederhole den vorherigen Vorgang oder gehe wie folgt vor:
- Öffne die Amazon S3-Konsole und wähle dann den Bucket für das Objekt aus, das du öffentlich zugänglich machen möchtest.
- Wähle unter Objekte das Objekt aus.
- Wähle die Registerkarte Berechtigungen und dann Bearbeiten aus.
- Wähle im Bereich Alle die Option Objects Read (Gelesene Objekte) aus.
- Wähle I understand the effects of these changes on this object (Ich verstehe die Auswirkungen dieser Änderungen auf dieses Objekt).
- Wähle Änderungen speichern aus.
AWS CLI verwenden, um die ACL des Objekts zu aktualisieren
Hinweis: Wenn du beim Ausführen von AWS CLI-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.
Für ein Objekt, das bereits in Amazon S3 gespeichert ist, kannst du den put-object-acl-Befehl ausführen, um die ACL des Objekts für den öffentlichen Lesezugriff zu aktualisieren:
aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET --key exampleobject --acl public-read
Hinweis: Ersetze exampleobject durch dein Objekt.
Oder du kannst den folgenden put-object-acl-Befehl ausführen, um dem Kontoinhaber die volle Kontrolle über das Objekt und allen anderen Lesezugriff zu gewähren:
aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET --key exampleobject --grant-full-control id="008exampleA45666666668889999008853" --grant-read uri=http://acs.amazonaws.com/groups/global/AllUsers
Hinweis: Gib für grant-full-control id die kanonische Benutzer-ID des Kontos ein.
Bucket-Richtlinie verwenden, die öffentlichen Lesezugriff auf ein bestimmtes Objekt-Tag gewährt
Wichtig: Bevor du beginnst, solltest du unbedingt die Amazon S3-Preise für Objekt-Markierung überprüfen.
Gehe wie folgt vor, um mithilfe einer Richtlinie öffentlichen Lesezugriff auf Objekte mit einem bestimmten Tag zu gewähren:
-
Füge eine Bucket-Richtlinie hinzu, die öffentlichen Lesezugriff auf alle Objekte mit einem bestimmten Tag ermöglicht. Die folgende Richtlinie ermöglicht beispielsweise öffentlichen Lesezugriff für jedes Objekt, das das Schlüssel-Wert-Paar-Tag public=yes hat:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition": { "StringEquals": { "s3:ExistingObjectTag/public": "yes" } } } ] }
-
Füge das Tag zu den Objekten hinzu, die öffentlich lesbar sein sollen.
-
Um zu überprüfen, welche Tags ein Objekt hat, führe den Befehl get-object-tagging in der AWS CLI aus:
aws s3api get-object-tagging --bucket DOC-EXAMPLE-BUCKET --key exampleobject
-
Um einem Objekt, das keine Tags hat, ein Tag hinzuzufügen, führe den folgenden put-object-tagging-Befehl aus:
aws s3api put-object-tagging --bucket DOC-EXAMPLE-BUCKET --key exampleobject --tagging 'TagSet={Key=public,Value=yes}'
Warnung: Der vorhergehende Befehl überschreibt alle Tags, die ein Objekt hat.
-
Um einem Objekt, das bereits über Tags verfügt, ein neues Tag hinzuzufügen, führe den folgenden put-object-tagging-Befehl aus:
aws s3api put-object-tagging --bucket DOC-EXAMPLE-BUCKET --key exampleobject --tagging 'TagSet=[{Key=public,Value=n},{Key=exampletag1,Value=one},{Key=exampletag2,Value=two}]'
Hinweis: Stelle sicher, dass du das neue Objekt-Tag und die alten Tags, die du behalten möchtest, einschließt.
-
Führe den Befehl get-object-tagging erneut aus, um die Tags des Objekts zu überprüfen:
aws s3api get-object-tagging --bucket DOC-EXAMPLE-BUCKET --key exampleobject
Bucket-Richtlinie verwenden, die öffentlichen Lesezugriff auf ein bestimmtes Präfix gewährt
Warnung: Die folgende Bucket-Richtlinie gewährt öffentlichen Lesezugriff auf alle Objekte unter einem bestimmten Präfix. Bevor du die Bucket-Richtlinie verwendest, stelle sicher, dass dein Anwendungsfall alle öffentlich lesbaren Objekte innerhalb des Präfixes unterstützt. Die folgende Richtlinie gewährt keinen Listenzugriff für das Präfix. Dein Benutzer kann nur auf das Objekt zugreifen, wenn der Objektpfad bekannt ist. Wenn der Benutzer versucht, auf ein Objekt zuzugreifen, das im Präfix nicht vorhanden ist, erhält der Benutzer einen „403“-Fehler.
-
Um öffentlichen Lesezugriff auf ein bestimmtes Objektpräfix zu gewähren, füge die folgende Bucket-Richtlinie hinzu:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": "*", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/publicprefix/*" ] } ] }
-
Führe den Befehl cp aus, um ein Objekt in das Präfix mit öffentlichem Lesezugriff zu kopieren:
aws s3 cp s3://DOC-EXAMPLE-BUCKET/exampleobject s3://DOC-EXAMPLE-BUCKET/publicprefix/exampleobject
Hinweis: Wenn das Objekt bereits ein öffentlich lesbares Präfix hat, musst du das Objekt nicht in ein neues Präfix kopieren.
Aus eingeschränkten Netzwerken auf öffentliche S3-Buckets oder Objekte zugreifen
Um auf öffentliche S3-Buckets oder Objekte aus eingeschränkten Netzwerken zuzugreifen, kannst du eine Bucket-Richtlinie hinzufügen, die den Zugriff von einem bestimmten IP-Adressbereich aus ermöglicht. Die folgende Beispielrichtlinie erlaubt die GET-Anforderung aus den CIDR-Bereichen 192.0.2.0/24 und 203.0.113.0/24:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition": { "IpAddress": { "aws:SourceIp": [ "192.0.2.0/24", "203.0.113.0/24" ] } } } ] }
Ähnliche Informationen
Sperren des öffentlichen Zugriffs auf deinen Amazon S3-Speicher
Ähnliche Videos


Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 4 Monaten