Arbeiten mit Amazon S3-Bucket-Richtlinien - AWS SDK for JavaScript

Wir haben das Kommende end-of-support für AWS SDK for JavaScript v2 angekündigt. Wir empfehlen Ihnen, auf AWS SDK for JavaScript Version 3 zu migrieren. Termine, weitere Details und Informationen zur Migration finden Sie in der verlinkten Ankündigung.

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.

Arbeiten mit Amazon S3-Bucket-Richtlinien

JavaScript code example that applies to Node.js execution

Dieses Node.js-Codebeispiel zeigt:

  • So rufen Sie die Bucket-Richtlinie eines Amazon S3-Buckets ab.

  • So fügen Sie die Bucket-Richtlinie eines Amazon S3-Buckets hinzu oder aktualisieren sie.

  • So löschen Sie die Bucket-Richtlinie eines Amazon S3-Buckets.

Das Szenario

In diesem Beispiel wird eine Reihe von Node.js-Modulen verwendet, um eine Bucket-Richtlinie für einen Amazon S3-Bucket abzurufen, festzulegen oder zu löschen. Die Node.js-Module verwenden das SDK für JavaScript , um die Richtlinie für einen ausgewählten Amazon S3-Bucket mit den folgenden Methoden der Amazon S3-Clientklasse zu konfigurieren:

Weitere Informationen zu Bucket-Richtlinien für Amazon S3-Buckets finden Sie unter Verwenden von Bucket-Richtlinien und Benutzerrichtlinien im Benutzerhandbuch für Amazon Simple Storage Service.

Erforderliche Aufgaben

Zum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

Konfigurieren des SDKs

Konfigurieren Sie das SDK für , JavaScript indem Sie ein globales Konfigurationsobjekt erstellen und dann die Region für Ihren Code festlegen. In diesem Beispiel ist die Region auf us-west-2 festgelegt.

// Load the SDK for JavaScript var AWS = require('aws-sdk'); // Set the Region AWS.config.update({region: 'us-west-2'});

Abrufen der aktuellen Bucket-Richtlinie

Erstellen Sie ein Node.js-Modul mit dem Dateinamen s3_getbucketpolicy.js. Das Modul ruft ein einzelnes Befehlszeilenargument ab, um den Bucket anzugeben, dessen Richtlinie Sie möchten. Stellen Sie sicher, dass Sie das SDK wie zuvor dargestellt konfigurieren.

Erstellen Sie ein AWS.S3-Serviceobjekt. Der einzige Parameter, den Sie beim Abrufen der getBucketPolicy-Methode weiterleiten müssen, ist der Name des ausgewählten Buckets. Wenn der Bucket derzeit über eine Richtlinie verfügt, wird diese Richtlinie von Amazon S3 in dem data Parameter zurückgegeben, der an die Rückruffunktion übergeben wird.

Wenn der ausgewählte Bucket über keine Richtlinie verfügt, werden diese Informationen im error-Parameter an die Callback-Funktion zurückgegeben.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create S3 service object s3 = new AWS.S3({ apiVersion: "2006-03-01" }); var bucketParams = { Bucket: process.argv[2] }; // call S3 to retrieve policy for selected bucket s3.getBucketPolicy(bucketParams, function (err, data) { if (err) { console.log("Error", err); } else if (data) { console.log("Success", data.Policy); } });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node s3_getbucketpolicy.js BUCKET_NAME

Dieser Beispielcode finden Sie hier unter GitHub.

Einrichten einer einfachen Bucket-Richtlinie

Erstellen Sie ein Node.js-Modul mit dem Dateinamen s3_setbucketpolicy.js. Das Modul ruft ein einzelnes Befehlszeilenargument ab, um den Bucket anzugeben, dessen Richtlinie Sie anwenden möchten. Konfigurieren Sie das SDK wie zuvor dargestellt.

Erstellen Sie ein AWS.S3-Serviceobjekt. Bucket-Richtlinien sind in JSON-angegeben. Erstellen Sie zunächst ein JSON-Objekt, das alle Werte enthält, die in der Richtlinie festgelegt werden sollen. Eine Ausnahme ist der Resource-Wert, über den der Bucket identifiziert wird.

Formatieren Sie die von der Richtlinie benötigte Resource-Zeichenfolge und binden Sie den Namen des ausgewählten Buckets darin ein. Fügen Sie diese Zeichenfolge in das JSON-Objekt ein. Bereiten Sie die Parameter für die putBucketPolicy-Methode vor, einschließlich dem Namen des Buckets und der in eine Zeichenfolge konvertierten JSON-Richtlinie.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create S3 service object s3 = new AWS.S3({ apiVersion: "2006-03-01" }); var readOnlyAnonUserPolicy = { Version: "2012-10-17", Statement: [ { Sid: "AddPerm", Effect: "Allow", Principal: "*", Action: ["s3:GetObject"], Resource: [""], }, ], }; // create selected bucket resource string for bucket policy var bucketResource = "arn:aws:s3:::" + process.argv[2] + "/*"; readOnlyAnonUserPolicy.Statement[0].Resource[0] = bucketResource; // convert policy JSON into string and assign into params var bucketPolicyParams = { Bucket: process.argv[2], Policy: JSON.stringify(readOnlyAnonUserPolicy), }; // set the new policy on the selected bucket s3.putBucketPolicy(bucketPolicyParams, function (err, data) { if (err) { // display error message console.log("Error", err); } else { console.log("Success", data); } });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node s3_setbucketpolicy.js BUCKET_NAME

Dieser Beispielcode finden Sie hier unter GitHub.

Löschen einer Bucket-Richtlinie

Erstellen Sie ein Node.js-Modul mit dem Dateinamen s3_deletebucketpolicy.js. Das Modul ruft ein einzelnes Befehlszeilenargument ab, um den Bucket anzugeben, dessen Richtlinie Sie löschen möchten. Konfigurieren Sie das SDK wie zuvor dargestellt.

Erstellen Sie ein AWS.S3-Serviceobjekt. Der einzige Parameter, den Sie beim Abrufen der deleteBucketPolicy-Methode weiterleiten müssen, ist der Name des ausgewählten Buckets.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create S3 service object s3 = new AWS.S3({ apiVersion: "2006-03-01" }); var bucketParams = { Bucket: process.argv[2] }; // call S3 to delete policy for selected bucket s3.deleteBucketPolicy(bucketParams, function (err, data) { if (err) { console.log("Error", err); } else if (data) { console.log("Success", data); } });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node s3_deletebucketpolicy.js BUCKET_NAME

Dieser Beispielcode finden Sie hier unter GitHub.