Uso de políticas de bucket de Amazon S3 - AWS SDK for JavaScript

Anunciamos la próxima AWS SDK for JavaScript versión end-of-support para la versión 2. Le recomendamos que migre a la AWS SDK for JavaScript versión 3. Para ver las fechas, los detalles adicionales y la información sobre cómo realizar la migración, consulte el anuncio enlazado.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de políticas de bucket de Amazon S3


                        JavaScript code example that applies to Node.js execution

Este ejemplo de código de Node.js muestra:

  • Cómo recuperar la política de buckets de un bucket de Amazon S3.

  • Cómo añadir o actualizar la política de buckets de un bucket de Amazon S3.

  • Cómo eliminar la política de buckets de un bucket de Amazon S3.

El escenario

En este ejemplo, se usan una serie de módulos de Node.js para recuperar, configurar o eliminar una política de bucket de un bucket de Amazon S3. Los módulos de Node.js utilizan el SDK JavaScript para configurar la política de un bucket de Amazon S3 seleccionado mediante estos métodos de la clase de cliente de Amazon S3:

Para obtener más información acerca de las políticas de bucket para Amazon S3, consulte Uso de políticas de bucket y políticas de usuario en la Guía del usuario de Amazon Simple Storage Service.

Tareas previas necesarias

Para configurar y ejecutar este ejemplo, primero debe completar estas tareas:

Configuración del SDK

Para JavaScript configurar el SDK, cree un objeto de configuración global y, a continuación, defina la región del código. En este ejemplo, la región está establecida en us-west-2.

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

Recuperación de la política de buckets actual

Cree un módulo de Node.js con el nombre de archivo s3_getbucketpolicy.js. El módulo toma un argumento de línea de comandos único que especifica el bucket cuya política quiere. Configure el SDK como le hemos mostrado anteriormente.

Cree un objeto de servicio AWS.S3. El único parámetro que necesita pasar es el nombre del bucket seleccionado al llamar al método getBucketPolicy. Si el bucket tiene actualmente una política, Amazon S3 la devuelve en el parámetro data que se pasa a la función de devolución de llamada.

Si el bucket seleccionado no tiene política, dicha información se devuelve a la función de devolución de llamada en el parámetro error.

// 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); } });

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node s3_getbucketpolicy.js BUCKET_NAME

Puedes encontrar este ejemplo de código aquí en GitHub.

Configuración una política de bucket sencilla

Cree un módulo de Node.js con el nombre de archivo s3_setbucketpolicy.js. El módulo toma un argumento de línea de comandos único que especifica el bucket cuya política quiere aplicar. Configure el SDK como le hemos mostrado anteriormente.

Cree un objeto de servicio AWS.S3. Las políticas de bucket se especifican en JSON. Primero cree un objeto JSON que contenga todos los valores para especificar la política, excepto el valor Resource que identifica el bucket.

Formatee la cadena Resource que la política exige e incorpore el nombre del bucket seleccionado. Inserte dicha cadena en el objeto JSON. Prepare los parámetros para el método putBucketPolicy, incluido el nombre del bucket y la política de JSON convertida en un valor de cadena.

// 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); } });

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node s3_setbucketpolicy.js BUCKET_NAME

Este código de ejemplo se puede encontrar aquí en GitHub.

Eliminación de una política de bucket

Cree un módulo de Node.js con el nombre de archivo s3_deletebucketpolicy.js. El módulo toma un argumento de línea de comandos único que especifica el bucket cuya política quiere eliminar. Configure el SDK como le hemos mostrado anteriormente.

Cree un objeto de servicio AWS.S3. El único parámetro que necesita pasar al llamar al método deleteBucketPolicy es el nombre del bucket seleccionado.

// 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); } });

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node s3_deletebucketpolicy.js BUCKET_NAME

Este código de ejemplo se puede encontrar aquí en GitHub.