

La versión 2 de AWS SDK para JavaScript ha llegado al final del soporte. Se recomienda que migre a [AWS SDK para JavaScript v3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/). Para ver detalles e información adicionales sobre cómo realizar la migración, consulte este [anuncio](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/).

# Uso de políticas de bucket de Amazon S3
<a name="s3-example-bucket-policies"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/es_es/sdk-for-javascript/v2/developer-guide/images/nodeicon.png)

**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
<a name="w2aac20c25c27c15b9"></a>

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 usan el SDK para JavaScript para configurar la política de un bucket de Amazon S3 seleccionado utilizando estos métodos de la clase de cliente de Amazon S3:
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getBucketPolicy-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getBucketPolicy-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putBucketPolicy-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putBucketPolicy-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#deleteBucketPolicy-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#deleteBucketPolicy-property)

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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-iam-policies.html) en la *Guía del usuario de Amazon Simple Storage Service*.

## Tareas previas necesarias
<a name="w2aac20c25c27c15c11"></a>

Para configurar y ejecutar este ejemplo, primero debe completar estas tareas:
+ Instale Node.js. Para obtener más información acerca de la instalación de Node.js consulte el [sitio web de Node.js](https://nodejs.org).
+ Cree un archivo de configuraciones compartidas con sus credenciales de usuario. Para obtener más información acerca de cómo crear un archivo de credenciales compartidas, consulte [Carga de credenciales en Node.js desde el archivo de credenciales compartidas](loading-node-credentials-shared.md).

## Configuración del SDK
<a name="s3-example-bucket-policies-configure-sdk"></a>

Configure el SDK para JavaScript creando un objeto de configuración global y luego configurando la región para su 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
<a name="s3-example-bucket-policies-get-policy"></a>

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
```

Este código de ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javascript/example_code/s3/s3_getbucketpolicy.js).

## Configuración una política de bucket sencilla
<a name="s3-example-bucket-policies-set-policy"></a>

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](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javascript/example_code/s3/s3_setbucketpolicy.js).

## Eliminación de una política de bucket
<a name="s3-example-bucket-policies-delete-policy"></a>

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](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javascript/example_code/s3/s3_deletebucketpolicy.js).