Version AWS SDK for Java 1.x wurde am 31. Juli 2024 in den Wartungsmodus versetzt und wird end-of-support
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-Kunden
setBucketPolicy
und 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--ClientsdeleteBucketPolicy
und ü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
-
Übersicht über die ZugriffsrichtlinienspracheimAmazon Simple Storage Service-Benutzerhandbuch
-
Beispiele für Bucket-RichtlinienimAmazon Simple Storage Service-Benutzerhandbuch