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

Hilf uns, das zu verbessernAWS SDK for JavaScriptVersion 3 (V3) -Dokumentation, indem Sie Feedback mithilfe derFeedbackverlinken, oder erstellen Sie ein Issue oder Pull Request aufGitHub.

DieAWS SDK for JavaScriptReferenzhandbuch zur V3-APIbeschreibt ausführlich alle API-Operationen für denAWS SDK for JavaScriptVersion 3 (V3).

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 S3-Bucket-Richtlinien


                        JavaScript code example that applies to Node.js execution

Dieses Node.js-Codebeispiel zeigt:

  • Abrufen der Bucket-Richtlinie eines Amazon S3 S3-Buckets.

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

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

Das Szenario

In diesem Beispiel werden mehrere Node.js -Module verwendet, um eine Buckets -Richtlinie für einen Amazon S3 S3-Bucket abzurufen, festzulegen oder zu löschen. Die Node.js Module verwenden das SDK für JavaScript So konfigurieren Sie die Richtlinie für einen ausgewählten Amazon S3 S3-Bucket mithilfe dieser Methoden der Amazon S3 S3--Client-Klasse:

Weitere Informationen zu Bucket-Richtlinien für Amazon S3 S3-Buckets finden Sie unterVerwenden von -Bucket-Richtlinien und BenutzerrichtlinienimAmazon Simple Storage Service — Benutzerhandbuchaus.

Erforderliche Aufgaben

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

Wichtig

Diese Beispiele zeigen, wie Client-Serviceobjekte importiert/exportiert und mit ECMASCRIPT6 (ES6) befehligt werden.

  • Dies erfordert Node.js Version 13.x oder höher. Informationen zum Herunterladen der neuesten Version von Node.js finden Sie unterNode.js.aus.

  • Wenn Sie lieber die CommonJS-Syntax verwenden möchten, finden Sie unterJavaScript ES6/CommonJS-Syntaxaus.

Abrufen der aktuellen Bucket-Richtlinie

Erstellen eineslibsErstellen Sie ein Modul Node.js mit dem Dateinamens3Client.jsaus. Kopieren Sie den unten stehenden Code und fügen Sie ihn ein, wodurch das Amazon S3 S3-Clientobjekt erstellt wird. ErsetzenREGIONmit IhrerAWSRegion.

// Create service client module using ES6 syntax. import { S3Client } from "@aws-sdk/client-s3"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create an Amazon S3 service client object. const s3Client = new S3Client({ region: REGION }); export { s3Client };

Dieser Code ist verfügbarhier auf GitHubaus.

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, einschließlich der Installation der erforderlichen Clients und Pakete.

Erstellen Sie ein S3-Serviceobjekt. Der einzige Parameter, den Sie beim Abrufen der GetBucketPolicyCommand-Methode weiterleiten müssen, ist der Name des ausgewählten Buckets. Wenn der Bucket derzeit über eine Richtlinie verfügt, gibt diese Richtlinie von Amazon S3 imdataParameter, der an die Callback-Funktion übergeben werden.

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

// Import required AWS SDK clients and commands for Node.js. import { GetBucketPolicyCommand } from "@aws-sdk/client-s3"; import { s3Client } from "./libs/s3Client.js"; // Helper function that creates an Amazon S3 service client module. // Create the parameters for calling export const bucketParams = { Bucket: "BUCKET_NAME" }; export const run = async () => { try { const data = await s3Client.send(new GetBucketPolicyCommand(bucketParams)); console.log("Success", data); return data; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

Geben Sie an der Eingabeaufforderung Folgendes ein.

node s3_getbucketpolicy.js

Diesen Beispielcode finden Sie hier auf GitHub.

Festlegen einer einfachen Bucket-Richtlinie

Erstellen eineslibsErstellen Sie ein Modul Node.js mit dem Dateinamens3Client.jsaus. Kopieren Sie den unten stehenden Code und fügen Sie ihn ein, wodurch das Amazon S3 S3-Clientobjekt erstellt wird. ErsetzenREGIONmit IhrerAWSRegion.

// Create service client module using ES6 syntax. import { S3Client } from "@aws-sdk/client-s3"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create an Amazon S3 service client object. const s3Client = new S3Client({ region: REGION }); export { s3Client };

Dieser Code ist verfügbarhier auf GitHubaus.

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 gezeigt, einschließlich der Installation der erforderlichen Clients und Pakete.

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 PutBucketPolicyCommand-Methode vor, einschließlich dem Namen des Buckets und der in eine Zeichenfolge konvertierten JSON-Richtlinie.

// Import required AWS SDK clients and commands for Node.js. import { CreateBucketCommand, PutBucketPolicyCommand } from "@aws-sdk/client-s3"; import { s3Client } from "./libs/s3Client.js"; // Helper function that creates an Amazon S3 service client module. const BUCKET_NAME = "BUCKET_NAME"; export const bucketParams = { Bucket: BUCKET_NAME, }; // Create the policy in JSON for the S3 bucket. const readOnlyAnonUserPolicy = { Version: "2012-10-17", Statement: [ { Sid: "AddPerm", Effect: "Allow", Principal: "*", Action: ["s3:GetObject"], Resource: [""], }, ], }; // Create selected bucket resource string for bucket policy. const bucketResource = "arn:aws:s3:::" + BUCKET_NAME + "/*"; //BUCKET_NAME readOnlyAnonUserPolicy.Statement[0].Resource[0] = bucketResource; // Convert policy JSON into string and assign into parameters. const bucketPolicyParams = { Bucket: BUCKET_NAME, Policy: JSON.stringify(readOnlyAnonUserPolicy), }; export const run = async () => { try { const data = await s3Client.send( new CreateBucketCommand(bucketParams) ); console.log('Success, bucket created.', data) try { const response = await s3Client.send( new PutBucketPolicyCommand(bucketPolicyParams) ); console.log("Success, permissions added to bucket", response); } catch (err) { console.log("Error adding policy to S3 bucket.", err); } } catch (err) { console.log("Error creating S3 bucket.", err); } }; run();

Geben Sie an der Eingabeaufforderung Folgendes ein.

node s3_setbucketpolicy.js

Diesen Beispielcode finden Sie hier auf GitHub.

Löschen einer Bucket-Richtlinie

Erstellen eineslibsErstellen Sie ein Modul Node.js mit dem Dateinamens3Client.jsaus. Kopieren Sie den unten stehenden Code und fügen Sie ihn ein, wodurch das Amazon S3 S3-Clientobjekt erstellt wird. ErsetzenREGIONmit IhrerAWSRegion.

// Create service client module using ES6 syntax. import { S3Client } from "@aws-sdk/client-s3"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create an Amazon S3 service client object. const s3Client = new S3Client({ region: REGION }); export { s3Client };

Dieser Code ist verfügbarhier auf GitHubaus.

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 gezeigt, einschließlich der Installation der erforderlichen Clients und Pakete.

Der einzige Parameter, den Sie beim Abrufen der DeleteBucketPolicy-Methode weiterleiten müssen, ist der Name des ausgewählten Buckets.

// Import required AWS SDK clients and commands for Node.js. import { DeleteBucketPolicyCommand } from "@aws-sdk/client-s3"; import { s3Client } from "./libs/s3Client.js"; // Helper function that creates an Amazon S3 service client module. // Set the bucket parameters export const bucketParams = { Bucket: "BUCKET_NAME" }; export const run = async () => { try { const data = await s3Client.send(new DeleteBucketPolicyCommand(bucketParams)); console.log("Success", data + ", bucket policy deleted"); return data; // For unit tests. } catch (err) { console.log("Error", err); } }; // Invoke run() so these examples run out of the box. run();

Geben Sie an der Eingabeaufforderung Folgendes ein.

node s3_deletebucketpolicy.js

Diesen Beispielcode finden Sie hier auf GitHub.