

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/).

# Configuración del SDK para JavaScript
<a name="setting-up"></a>

En los temas de esta sección se explica cómo instalar el SDK para JavaScript para usarlo en navegadores web y con Node.js. También se muestra cómo cargar el SDK para que pueda obtener acceso a los servicios web que son compatibles con él.

**nota**  
Los desarrolladores de React Native deben usar AWS Amplify para crear nuevos proyectos en AWS. Consulte el archivo [aws-sdk-react-native](https://github.com/amazon-archives/aws-sdk-react-native) para obtener más detalles.

**Topics**
+ [Requisitos previos](jssdk-prerequisites.md)
+ [Instalación del SDK para JavaScript](installing-jssdk.md)
+ [Carga del SDK para JavaScript](loading-the-jssdk.md)
+ [Actualización desde la versión 1 del SDK para JavaScript](upgrading-from-v1.md)

# Requisitos previos
<a name="jssdk-prerequisites"></a>

Antes de usar AWS SDK para JavaScript, establezca si el código necesita ejecutarse en Node.js o bien en navegadores web. Después realice la siguiente operación: 
+ En el caso de Node.js, instale Node.js en los servidores si todavía no lo tiene instalado.
+ En el caso de los navegadores web, determine cuáles son las versiones de navegador que debe admitir.

**Topics**
+ [Configuración de un entorno Node.js de AWS](setting-up-node.md)
+ [Navegadores web compatibles](browsers-supported.md)

# Configuración de un entorno Node.js de AWS
<a name="setting-up-node"></a>

Para configurar un entorno Node.js de AWS en el que pueda ejecutar su aplicación, utilice uno de los siguientes métodos:
+ Elija una imagen de máquina de Amazon (AMI) que tenga Node.js preinstalado y cree una instancia de Amazon EC2 mediante dicha AMI. Cuando cree la instancia de Amazon EC2, seleccione su AMI en AWS Marketplace. Busque Node.js en AWS Marketplace y elija una opción de AMI que contenga una versión de Node.js (32 bits o 64 bits) preinstalada.
+ Cree una instancia de Amazon EC2 e instale en ella Node.js. Para obtener más información acerca de cómo instalar Node.js en una instancia de Amazon Linux consulte [Tutorial: Configuración de Node.js en una instancia de Amazon EC2](setting-up-node-on-ec2-instance.md).
+ Cree con Lambda un entorno sin servidor para ejecutar Node.js como función de Lambda. Para obtener más información acerca de cómo utilizar Node.js dentro de una función de Lambda, consulte [Modelos de programación (Node.js)](https://docs.aws.amazon.com/lambda/latest/dg/programming-model.html) en la *Guía para desarrolladores de AWS Lambda*.
+ Implemente su aplicación de Node.js en AWS Elastic Beanstalk. Para obtener más información acerca de cómo usar Node.js con Elastic Beanstalk, consulte [Implementación de aplicaciones Node.js en AWS Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.html) en la *Guía para desarrolladores de AWS Elastic Beanstalk*. 

# Navegadores web compatibles
<a name="browsers-supported"></a>

El SDK para JavaScript es compatible con todos los navegadores web modernos, incluidas las versiones mínimas siguientes:


****  

| Navegador | Versión | 
| --- | --- | 
| Google Chrome | 28.0\$1 | 
| Mozilla Firefox | 26.0\$1 | 
| Opera | 17.0\$1 | 
| Microsoft Edge | 25.10\$1 | 
| Windows Internet Explorer | N/A | 
| Apple Safari | 5\$1 | 
| Navegador Android | 4.3\$1 | 

**nota**  
Es posible que algunos marcos, como AWS Amplify, no ofrezcan la misma compatibilidad de navegadores que el SDK para JavaScript. Consulte la documentación de los marcos en cuestión para ver información detallada.

# Instalación del SDK para JavaScript
<a name="installing-jssdk"></a>

La instalación de AWS SDK para JavaScript y cómo lo instala depende de si el código se va a ejecutar en módulos de Node.js o en scripts de navegador.

No todos los servicios están disponibles de forma inmediata en el SDK. Para informarse de qué servicios son actualmente compatibles con AWS SDK para JavaScript, consulte [https://github.com/aws/aws-sdk-js/blob/master/SERVICES.md](https://github.com/aws/aws-sdk-js/blob/master/SERVICES.md).

------
#### [ Node ]

El método preferido de instalación de AWS SDK para JavaScript para Node.js es utilizar [npm, el administrador de paquetes de Node.js](https://www.npmjs.com/). Para hacerlo, escriba lo siguiente en la línea de comandos:

```
npm install aws-sdk
```

En el caso de que vea el mensaje de error siguiente:

```
npm WARN deprecated node-uuid@1.4.8: Use uuid module instead
```

Escriba estos comandos en la línea de comandos:

```
npm uninstall --save node-uuid
npm install --save uuid
```

------
#### [ Browser ]

No es preciso que instale el SDK para poder utilizarlo en scripts de navegador. Puede cargar el paquete del SDK alojado directamente desde Amazon Web Services con un script dentro de sus páginas HTML. El paquete del SDK alojado es compatible con el subconjunto de servicios de AWS que aplican el uso compartido de recursos entre orígenes (CORS). Para obtener más información, consulte [Carga del SDK para JavaScript](loading-the-jssdk.md).

Puede crear una compilación personalizada del SDK en la que se pueden seleccionar las versiones y los servicios web concretos que desea utilizar. Después deberá descargar el paquete del SDK personalizado para desarrollarlo localmente y alojarlo para que su aplicación lo utilice. Para obtener más información acerca de cómo crear una compilación personalizada del SDK, consulte [Creación del SDK para navegadores](building-sdk-for-browsers.md).

Puede descargar versiones distribuibles minimizadas y sin minimizar de la versión de AWS SDK para JavaScript actual desde GitHub en:

[https://github.com/aws/aws-sdk-js/tree/master/dist](https://github.com/aws/aws-sdk-js/tree/master/dist)

------

## Instalación mediante Bower
<a name="w2aac13c11b9"></a>

[Bower](https://bower.io) es un administrador de paquetes para la web. Una vez que haya instalado Bower podrá utilizarlo para instalar el SDK. Para instalar el SDK con Bower, escriba lo siguiente en una ventana del terminal:

```
bower install aws-sdk-js
```

# Carga del SDK para JavaScript
<a name="loading-the-jssdk"></a>

El modo de cargar el SDK para JavaScript dependerá de si lo hace para ejecutarlo en un navegador web o en Node.js.

No todos los servicios están disponibles de forma inmediata en el SDK. Para informarse de qué servicios son actualmente compatibles con AWS SDK para JavaScript, consulte [https://github.com/aws/aws-sdk-js/blob/master/SERVICES.md](https://github.com/aws/aws-sdk-js/blob/master/SERVICES.md).

------
#### [ Node.js ]

Después de instalar el SDK, puede cargar el paquete de AWS en su aplicación de nodo usando `require`. 

```
var AWS = require('aws-sdk');
```

------
#### [ React Native ]

Para utilizar el SDK en un proyecto React Native, primero tiene que instalar el SDK mediante npm:

```
npm install aws-sdk
```

En la aplicación, haga referencia a la versión compatible con React Native del SDK con el siguiente código:

```
var AWS = require('aws-sdk/dist/aws-sdk-react-native');
```

------
#### [ Browser ]

Para comenzar a utilizar el SDK lo antes posible, cargue directamente desde Amazon Web Services el paquete del SDK alojado. Para ello, añada un elemento `<script>` a las páginas de código HTML en la forma siguiente:

```
<script src="https://sdk.amazonaws.com/js/aws-sdk-SDK_VERSION_NUMBER.min.js"></script>
```

Para encontrar el SDK\$1VERSION\$1NUMBER actual, consulte la referencia de API para el SDK para JavaScript en la [Guía de referencia de la API de AWS SDK para JavaScript](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/).

Una vez que el SDK se haya cargado en su página, estará disponible desde la variable global `AWS` (o `window.AWS`).

Si usa [browserify](http://browserify.org) para agrupar el código y las dependencias del módulo, deberá cargar el SDK con `require`, igual que en Node.js.

------

# Actualización desde la versión 1 del SDK para JavaScript
<a name="upgrading-from-v1"></a>

Las siguientes notas le serán útiles para actualizar el SDK para JavaScript de la versión 1 a la versión 2.

## Conversión automática de tipos de marca temporal y de Base64 en la entrada y la salida
<a name="upgrading-from-v1-base64-timestamp-conversion"></a>

Ahora el SDK codifica y descodifica automáticamente los valores con codificación base64, así como los valores de marca temporal, en lugar del usuario. Este cambio afecta a todas las operaciones en las que se envían valores con codificación base64 o de marca temporal a través de solicitudes o a las operaciones en que dichos valores se devuelven en una respuesta en la que se pueden usar valores con codificación base64.

Ahora ya no se necesita el código de usuario que anteriormente convertía valores con codificación base64. Ahora los valores con codificación base64 se devuelven como objetos de búfer desde respuestas de servidor y también se pueden transferir como entradas de búfer. Por ejemplo, los siguientes parámetros `SQS.sendMessage` de la versión 1:

```
var params = {
   MessageBody: 'Some Message',
   MessageAttributes: {
      attrName: {
         DataType: 'Binary',
         BinaryValue: new Buffer('example text').toString('base64')
      }
   }
};
```

Se pueden reescribir como se indica a continuación.

```
var params = {
   MessageBody: 'Some Message',
   MessageAttributes: {
      attrName: {
         DataType: 'Binary',
         BinaryValue: 'example text'
      }
   }
};
```

Aquí vemos cómo se lee el mensaje.

```
sqs.receiveMessage(params, function(err, data) {
  // buf is <Buffer 65 78 61 6d 70 6c 65 20 74 65 78 74>
  var buf = data.Messages[0].MessageAttributes.attrName.BinaryValue;
  console.log(buf.toString()); // "example text"
});
```

## Cambio de response.data.RequestId a response.requestId
<a name="upgrading-from-v1-response-requestid"></a>

Ahora el SDK almacena los ID de solicitudes de todos los servicios en un lugar coherente, en el objeto `response`, en lugar de almacenarlos dentro de la propiedad `response.data`. Esto mejora la coherencia entre los servicios que exponen los ID de las solicitudes de diferentes maneras. También es una modificación importante el hecho de cambiar el nombre de la propiedad `response.data.RequestId` por `response.requestId` (`this.requestId` dentro de una función de devolución de llamada).

En el código, cambie lo siguiente:

```
svc.operation(params, function (err, data) {
  console.log('Request ID:', data.RequestId);
});
```

A lo siguiente:

```
svc.operation(params, function () {
  console.log('Request ID:', this.requestId);
});
```

## Elementos de encapsulador expuestos
<a name="upgrading-from-v1-exposed-wrapper-elements"></a>

Si utiliza `AWS.ElastiCache`, `AWS.RDS` o `AWS.Redshift`, debe obtener acceso a la respuesta a través de la propiedad de salida de nivel superior en la respuesta a algunas operaciones. 

Por ejemplo, el método `RDS.describeEngineDefaultParameters` que se utiliza para devolver lo siguiente:

```
{ Parameters: [ ... ] }
```

Ahora devuelve lo siguiente:

```
{ EngineDefaults: { Parameters: [ ... ] } }
```

En la siguiente tabla se muestra la lista de operaciones afectadas por cada servicio:


****  

| Clase de cliente | Operaciones | 
| --- | --- | 
| `AWS.ElastiCache` | `authorizeCacheSecurityGroupIngress` `createCacheCluster` `createCacheParameterGroup` `createCacheSecurityGroup` `createCacheSubnetGroup` `createReplicationGroup` `deleteCacheCluster` `deleteReplicationGroup` `describeEngineDefaultParameters` `modifyCacheCluster` `modifyCacheSubnetGroup` `modifyReplicationGroup` `purchaseReservedCacheNodesOffering` `rebootCacheCluster` `revokeCacheSecurityGroupIngress` | 
| `AWS.RDS` | `addSourceIdentifierToSubscription` `authorizeDBSecurityGroupIngress` `copyDBSnapshot` `createDBInstance` `createDBInstanceReadReplica` `createDBParameterGroup` `createDBSecurityGroup` `createDBSnapshot` `createDBSubnetGroup` `createEventSubscription` `createOptionGroup` `deleteDBInstance` `deleteDBSnapshot` `deleteEventSubscription` `describeEngineDefaultParameters` `modifyDBInstance` `modifyDBSubnetGroup` `modifyEventSubscription` `modifyOptionGroup` `promoteReadReplica` `purchaseReservedDBInstancesOffering` `rebootDBInstance` `removeSourceIdentifierFromSubscription` `restoreDBInstanceFromDBSnapshot` `restoreDBInstanceToPointInTime` `revokeDBSecurityGroupIngress` | 
| `AWS.Redshift` | `authorizeClusterSecurityGroupIngress` `authorizeSnapshotAccess` `copyClusterSnapshot` `createCluster` `createClusterParameterGroup` `createClusterSecurityGroup` `createClusterSnapshot` `createClusterSubnetGroup` `createEventSubscription` `createHsmClientCertificate` `createHsmConfiguration` `deleteCluster` `deleteClusterSnapshot` `describeDefaultClusterParameters` `disableSnapshotCopy` `enableSnapshotCopy` `modifyCluster` `modifyClusterSubnetGroup` `modifyEventSubscription` `modifySnapshotCopyRetentionPeriod` `purchaseReservedNodeOffering` `rebootCluster` `restoreFromClusterSnapshot` `revokeClusterSecurityGroupIngress` `revokeSnapshotAccess` `rotateEncryptionKey` | 

## Propiedades de cliente eliminadas
<a name="upgrading-from-v1-dropped-client-properties"></a>

Las propiedades `.Client` y `.client` se han eliminado de los objetos de servicio. Si utiliza la propiedad `.Client` en una clase de servicio o una propiedad `.client` en una instancia de objeto de servicio, elimine estas propiedades de su código.

El código siguiente que se utiliza con la versión 1 del SDK para JavaScript:

```
var sts = new AWS.STS.Client();
// or
var sts = new AWS.STS();

sts.client.operation(...);
```

Debe cambiarse por el siguiente código:

```
var sts = new AWS.STS();
sts.operation(...)
```