Wie kann ich öffentlichen Lesezugriff auf einige Objekte in meinem Amazon-S3-Bucket gewähren?

Lesedauer: 6 Minute
0

Ich möchte, dass einige Objekte in meinem Amazon-Simple-Storage-Service-Bucket (Amazon S3) öffentlich lesbar sind. Ich möchte jedoch nicht die Berechtigungen für andere Objekte ändern, die sich im selben Bucket befinden.

Kurzbeschreibung

Gewähren Sie öffentlichen Lesezugriff auf eine der folgenden Arten:

  • Aktualisieren Sie die Zugriffssteuerungsliste (ACL) des Objekts mithilfe der Amazon-S3-Konsole
  • Aktualisieren Sie die ACL des Objekts mithilfe der AWS Command Line Interface (AWS CLI)
  • Bucket-Richtlinie verwenden, die öffentlichen Lesezugriff auf ein bestimmtes Objekt-Tag gewährt
  • Bucket-Richtlinie verwenden, die öffentlichen Lesezugriff auf ein bestimmtes Präfix gewährt

Wichtig: Das Gewähren von kontoübergreifendem Zugriff über Bucket- und Objekt-ACLs funktioniert nicht für Buckets, bei denen S3 Object Ownership auf Bucket Owner Enforced gesetzt ist. In den meisten Fällen sind ACLs nicht erforderlich, um Berechtigungen für Objekte und Buckets zu gewähren. Verwenden Sie stattdessen die Richtlinien von AWS Identity Access and Management (IAM) und S3-Bucket-Richtlinien, um Berechtigungen für Objekte und Buckets zu gewähren.

Standardmäßig erlauben neue Buckets, Zugangspunkte und Objekte keinen öffentlichen Zugriff. Wenn Block Public Access für alle Buckets innerhalb des Kontos aktiviert ist, wird die Meldung „Bucket und Objekte nicht öffentlich“ angezeigt. Weitere Informationen findest du unter Einstellungen zum Blockieren des öffentlichen Zugriffs für Ihr Konto konfigurieren.

Lösung

Wichtig: Bevor Sie beginnen, vergewissern Sie sich, dass Sie keine Einstellungen zum Blockieren des öffentlichen Zugriffs auf Konto- oder Bucket-Ebene haben. Ihre Einstellungen dürfen Sie nicht daran hindern, die Objekte öffentlich zu machen. Standardmäßig sind die Einstellungen zum Blockieren des öffentlichen Zugriffs für neue S3-Buckets auf Wahr gesetzt.

ACL des Objekts mithilfe der Amazon-S3-Konsole aktualisieren

Gehen Sie wie folgt vor, um mehrere Objekte gleichzeitig zu veröffentlichen:

**Warnung:Nachdem Sie mehrere Objekte öffentlich gemacht haben, gibt es keine Möglichkeit, diese Aktion für mehrere Objekte gleichzeitig rückgängig zu machen. Um den öffentlichen Zugriff zu entfernen, müssen Sie jedes Objekt in der Amazon-S3-Konsole aufrufen. Ändern Sie dann auf der Registerkarte Berechtigungen des Objekts den ** öffentlichen Zugriff. Sie müssen dies für jedes Objekt tun, für das Sie den von Ihnen gewährten öffentlichen Zugriff rückgängig machen möchten. Überprüfen Sie die Liste der Objekte sorgfältig, bevor Sie sie veröffentlichen.

1.    Öffnen Sie die Amazon-S3-Konsole.

2.    Wählen Sie aus der Liste der Buckets den Bucket mit den Objekten aus, die Sie aktualisieren möchten.

3.    Navigieren Sie zu dem Ordner, der die Objekte enthält.

4.    Wählen Sie in der Objektliste alle Objekte aus, die Sie veröffentlichen möchten.

5.    Wählen Sie Aktionen und dann Öffentlich machen aus.

6.    Vergewissern Sie sich im Dialogfeld Öffentlich machen, dass die Objektliste korrekt ist.

7.    Wählen Sie Öffentlich machen.

Um ein einzelnes Objekt öffentlich zu machen, können Sie den vorherigen Vorgang wiederholen oder die folgenden Schritte ausführen:

1.    Wählen Sie in der Amazon-S3-Konsole den Bucket mit dem Objekt aus, das Sie aktualisieren möchten.

2.    Navigieren Sie zu dem Ordner, der das Objekt enthält.

3.    Öffnen Sie das Objekt, indem Sie den Link auf dem Objektnamen auswählen.

4.    Öffnen Sie die Registerkarte Berechtigungen.

5.    Wählen Sie Bearbeiten aus.

6.    Wählen Sie im Abschnitt Jeder die Option Gelesene Objekte aus.

7.    Wählen Sie Ich verstehe die Auswirkungen dieser Änderungen auf dieses Objekt.

8.    Wählen Sie Änderungen speichern aus.

ACL des Objekts mithilfe der AWS-CLI aktualisieren

Für ein Objekt, das Sie bereits in Amazon S3 gespeichert haben, können Sie diesen Befehl ausführen, um seine ACL für den öffentlichen Lesezugriff zu aktualisieren:

aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET --key exampleobject --acl public-read

Hinweis: Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste AWS-CLI-Version verwenden.

Sie können diesen Befehl auch ausführen, um dem AWS-Kontoinhaber die volle Kontrolle über das Objekt zu gewähren und allen anderen Lesezugriff zu gewähren:

Hinweis:Geben Sie für den Wert\ --grant-full-control die kanonische Benutzer-ID des Kontos ein.

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

Bucket-Richtlinie verwenden, die öffentlichen Lesezugriff auf ein bestimmtes Objekt-Tag gewährt

**Wichtig:**Bevor Sie beginnen, sollten Sie unbedingt die Preise für S3 Object Tagging überprüfen.

Fügen Sie zunächst eine Bucket-Richtlinie hinzu, die öffentlichen Lesezugriff auf alle Objekte mit einem bestimmten Tag ermöglicht. Diese Richtlinie ermöglicht beispielsweise öffentlichen Lesezugriff für jedes Objekt, das mit dem Schlüssel-Wert-Paar public=yes markiert ist:

{
  "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ügen Sie dann das Tag zu den Objekten hinzu, die öffentlich lesbar sein sollen. Sie können Objekt-Tags mithilfe der Amazon-S3-Konsole hinzufügen oder verwalten. Sie können auch die AWS-CLI verwenden.

Um zu überprüfen, ob ein Objekt über vorhandene Tags verfügt, führen Sie diesen AWS-CLI-Befehl aus:

aws s3api get-object-tagging --bucket DOC-EXAMPLE-BUCKET --key exampleobject

Um einem Objekt, das keine vorhandenen Tags hat, ein Tag hinzuzufügen, führen Sie diesen Befehl aus:

**Warnung:**Dieser Befehl überschreibt alle vorhandenen Objekt-Tags.

aws s3api put-object-tagging --bucket DOC-EXAMPLE-BUCKET --key exampleobject --tagging 'TagSet={Key=public,Value=yes}'

Führen Sie den folgenden Befehl aus, um einem Objekt, das über vorhandene Tags verfügt, ein Tag hinzuzufügen. Stellen Sie sicher, dass Sie das neue Objekt-Tag sowie die vorhandenen Tags, die Sie behalten möchten, mit einbeziehen.

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}]'

Nachdem Sie das Objekt-Tag hinzugefügt haben, führen Sie diesen Befehl aus, um die Tags aller Objekte 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 Sie diese Bucket-Richtlinie verwenden, stellen Sie sicher, dass Ihr Anwendungsfall alle öffentlich lesbaren Objekte innerhalb des Präfixes unterstützt. Diese Richtlinie gewährt keinen Listenzugriff für das Präfix. Der Benutzer kann nur auf das Objekt zugreifen, wenn der Objektpfad bekannt ist. Beim Zugriff auf ein Objekt, 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ügen Sie eine Bucket-Richtlinie hinzu, die der folgenden ähnelt:

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"AddPerm",
      "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::DOC-EXAMPLE-BUCKET/publicprefix/*"]
      }
  ]
}

Kopieren Sie dann die Objekte in das Präfix mit öffentlichem Lesezugriff. Sie können ein Objekt in das Präfix kopieren, indem Sie einen Befehl ähnlich dem folgenden ausführen:

aws s3 cp s3://DOC-EXAMPLE-BUCKET/exampleobject s3://DOC-EXAMPLE-BUCKET/publicprefix/exampleobject

Hinweis: Je nach Präfix des Objekts ist das Kopieren des Objekts nicht erforderlich, um öffentlichen Lesezugriff zu gewähren.

Verwandte Informationen

Konfiguration von ACLs

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren