Verwalten des Zugriffs aufAmazon S3Mit Buckets mithilfe von Bucket-Richtlinien - AWS SDK for Java 1.x

Version AWS SDK for Java 1.x wurde am 31. Juli 2024 in den Wartungsmodus versetzt und wird end-of-supportam 31. Dezember 2025 verfügbar sein. Wir empfehlen Ihnen, auf den zu migrieren AWS SDK for Java 2.x, um weiterhin neue Funktionen, Verfügbarkeitsverbesserungen und Sicherheitsupdates zu erhalten.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwalten des Zugriffs aufAmazon S3Mit Buckets mithilfe von Bucket-Richtlinien

Sie können eine Bucket-Richtlinie zur Verwaltung des Zugriffs auf Ihre Amazon S3-Buckets festlegen, abrufen oder löschen.

Festlegen einer Bucket-Richtlinie

Sie können die Bucket-Richtlinie für einen bestimmten S3-Bucket wie folgt festlegen:

  • Aufrufen des AmazonS3-KundensetBucketPolicyund versorgen Sie es mit einemsetBucketPolicyRequest

  • Durch direktes Festlegen der Richtlinie unter Verwendung der setBucketPolicy-Überladung, die einen Bucket-Namen und einen Richtlinientext (im JSON-Format) entgegen nimmt

Importe

import com.amazonaws.AmazonServiceException; import com.amazonaws.auth.policy.Policy; import com.amazonaws.auth.policy.Principal;

Code

s3.setBucketPolicy(bucket_name, policy_text); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

Verwenden der Policy-Klasse zum Generieren oder Überprüfen einer Richtlinie

Wenn Sie setBucketPolicy eine Bucket-Richtlinie übergeben, können Sie die folgenden Aufgaben ausführen:

  • Direktes Übergeben der Richtlinie als Zeichenfolge mit Text im JSON-Format

  • Erstellen der Richtlinie mit der Policy-Klasse

Bei Verwendung der Policy-Klasse müssen Sie sich keine Gedanken über die korrekte Formatierung Ihrer Text-Zeichenfolge machen. Sie können die Richtlinie als JSON-Text von der Policy-Klasse erhalten, indem Sie die toJson-Methode aufrufen.

Importe

import com.amazonaws.auth.policy.Resource; import com.amazonaws.auth.policy.Statement; import com.amazonaws.auth.policy.actions.S3Actions; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder;

Code

new Statement(Statement.Effect.Allow) .withPrincipals(Principal.AllUsers) .withActions(S3Actions.GetObject) .withResources(new Resource( "{region-arn}s3:::" + bucket_name + "/*"))); return bucket_policy.toJson();

Die Policy-Klasse bietet außerdem eine fromJson-Methode, mit der versucht werden kann, eine Richtlinie aus einer übergebenen JSON-Zeichenfolge zu erstellen. Die Methode überprüft die Zeichenfolge und stellt so sicher, dass sich der Text in eine gültige Richtlinienstruktur umwandeln lässt. Sie löst einen Fehler mit einer IllegalArgumentException aus, wenn der Richtlinientext ungültig ist.

Policy bucket_policy = null; try { bucket_policy = Policy.fromJson(file_text.toString()); } catch (IllegalArgumentException e) { System.out.format("Invalid policy text in file: \"%s\"", policy_file); System.out.println(e.getMessage()); }

Mit dieser Technik können Sie eine Richtlinie im Voraus validieren, die Sie aus einer Datei oder anderweitig einlesen.

Auf GitHub finden Sie ein vollständiges Beispiel.

Abrufen einer Bucket-Richtlinie

So rufen Sie die Richtlinie für einenAmazon S3Bucket, rufen Sie den AmazonS3-Kunden angetBucketPolicy-Methode übergeben Sie ihr den Namen des Buckets, dessen Richtlinie Sie abrufen möchten.

Importe

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder;

Code

try { BucketPolicy bucket_policy = s3.getBucketPolicy(bucket_name); policy_text = bucket_policy.getPolicyText(); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

Wenn der angegebene Bucket nicht vorhanden ist, Sie nicht darauf zugreifen können oder wenn keine Bucket-Richtlinie eingerichtet ist, wird eine AmazonServiceException ausgelöst.

Auf GitHub finden Sie ein vollständiges Beispiel.

Löschen einer Bucket-Richtlinie

Rufen Sie zum Löschen einer Bucket-Richtlinie die -Methode des AmazonS3--ClientsdeleteBucketPolicyund übergeben Sie ihr den Bucket-Namen.

Importe

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3;

Code

try { s3.deleteBucketPolicy(bucket_name); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

Diese Methode wird auch dann erfolgreich ausgeführt, wenn der Bucket noch nicht über eine Richtlinie verfügt. Wenn Sie den Namen eines Buckets angeben, der noch nicht vorhanden ist oder für den Sie keinen Zugriff haben, wird eine AmazonServiceException ausgelöst.

Auf GitHub finden Sie ein vollständiges Beispiel.

Weitere Infos