

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 de credenciales en Node.js
<a name="setting-credentials-node"></a>

En Node.js hay varias formas de proporcionar sus credenciales al SDK. Algunas de ellas son más seguras y otras ofrecen más comodidad mientras se desarrolla una aplicación. Al obtener las credenciales en Node.js, sea especialmente cuidadoso si se basa en más de un origen como, por ejemplo, una variable de entorno y un archivo JSON que carga. Puede cambiar los permisos con los que se ejecuta su código sin darse cuenta de que se ha producido el cambio.

A continuación se muestran las formas de suministro de credenciales según su orden de recomendación:

1. Cargado desde roles de AWS Identity and Access Management (IAM) para Amazon EC2

1. Cargadas desde un archivo de credenciales compartidas (`~/.aws/credentials`).

1. Cargadas desde variables de entorno.

1. Cargadas desde un archivo JSON en el disco.

1. Otras clases de proveedores de credenciales que proporciona el SDK para JavaScript

Si hay más de un origen de credenciales disponible para el SDK, la prioridad de selección predeterminada es la siguiente:

1. Credenciales que se establecen explícitamente a través del constructor de cliente de servicio.

1. Variables de entorno

1. El archivo de credenciales compartidas.

1. Credenciales cargadas desde el proveedor de credenciales de ECS (si corresponde)

1. Credenciales que se obtienen utilizando un proceso de credenciales especificado en el archivo de configuración de AWS compartido o en el archivo de credenciales compartido. Para obtener más información, consulte [Loading Credentials en Node.js mediante un Proceso de credenciales configurado](loading-node-credentials-configured-credential-process.md).

1. Credenciales cargadas desde AWS IAM mediante el proveedor de credenciales de la instancia de Amazon EC2 (si se configura en los metadatos de instancia)

Para obtener más información, consulte [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Credentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Credentials.html) y [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CredentialProviderChain.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CredentialProviderChain.html) en la referencia de la API.

**aviso**  
Aunque es posible hacerlo, no le recomendamos codificar de forma rígida sus credenciales de AWS en la aplicación. Si las codifica de forma rígida, corre el riesgo de que su ID de clave de acceso y la clave de acceso secreta queden expuestos.

En los temas de esta sección se describe cómo cargar credenciales en Node.js.

**Topics**
+ [Carga de credenciales en Node.js desde roles de IAM para Amazon EC2](loading-node-credentials-iam.md)
+ [Carga de credenciales para una función Lambda de Node.js](loading-node-credentials-lambda.md)
+ [Carga de credenciales en Node.js desde el archivo de credenciales compartidas](loading-node-credentials-shared.md)
+ [Carga de credenciales en Node.js desde variables de entorno](loading-node-credentials-environment.md)
+ [Carga de credenciales en Node.js desde un archivo JSON](loading-node-credentials-json-file.md)
+ [Loading Credentials en Node.js mediante un Proceso de credenciales configurado](loading-node-credentials-configured-credential-process.md)

# Carga de credenciales en Node.js desde roles de IAM para Amazon EC2
<a name="loading-node-credentials-iam"></a>

Si ejecuta su aplicación de Node.js en una instancia de Amazon EC2, puede utilizar roles de IAM para Amazon EC2, para suministrar automáticamente credenciales a la instancia. Si configura la instancia para que utilice roles de IAM, el SDK selecciona automáticamente las credenciales de IAM para su aplicación, lo que elimina la necesidad de proporcionar las credenciales manualmente.

Para obtener más información sobre cómo agregar roles de IAM a una instancia de Amazon EC2, consulte [Uso de roles de IAM para instancias de Amazon EC2](https://docs.aws.amazon.com/sdkref/latest/guide/access-iam-roles-for-ec2.html) en la *Guía de referencia de las herramientas y los SDK de AWS*.

# Carga de credenciales para una función Lambda de Node.js
<a name="loading-node-credentials-lambda"></a>

Al crear una función de Lambda, tiene que crear un rol de IAM especial que tenga permiso para ejecutar la función. Este rol se denomina el *rol de ejecución*. Cuando configura una función de Lambda, tiene que especificar el rol de IAM que ha creado como el rol de ejecución correspondiente.

El rol de ejecución proporciona a la función de Lambda las credenciales que necesita para ejecutarse y para invocar otros servicios web. En consecuencia, no es necesario proporcionar credenciales al código Node.js que escribe dentro de una función de Lambda.

Para obtener más información sobre cómo crear un rol de ejecución de Lambda, consulte [Administración de permisos mediante un rol de IAM (rol de ejecución)](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html#lambda-intro-execution-role) en la *Guía para desarrolladores de AWS Lambda*.

# Carga de credenciales en Node.js desde el archivo de credenciales compartidas
<a name="loading-node-credentials-shared"></a>

Puede conservar los datos de sus credenciales de AWS en un archivo compartido que utilizan los SDK y la interfaz de línea de comandos. Cuando se carga el SDK para JavaScript, busca automáticamente el archivo de credenciales compartidas, que se llama “credentials”. La ubicación del archivo de credenciales compartido depende del sistema operativo:
+ El archivo de credenciales compartidas en Linux, Unix y macOS: `~/.aws/credentials`.
+ El archivo de credenciales compartidas en Windows: `C:\Users\USER_NAME\.aws\credentials`.

Si aún no tiene un archivo de credenciales compartidas, consulte [Autenticación de SDK con AWS](getting-your-credentials.md). Después de seguir estas instrucciones, debería ver un texto similar al siguiente en el archivo de credenciales, donde *<YOUR\$1ACCESS\$1KEY\$1ID>* es el ID de clave de acceso y *<YOUR\$1SECRET\$1ACCESS\$1KEY>* es la clave de acceso secreta:

```
[default]
aws_access_key_id = <YOUR_ACCESS_KEY_ID>
aws_secret_access_key = <YOUR_SECRET_ACCESS_KEY>
```

Para ver un ejemplo de uso de este archivo, consulte [Introducción a Node.js](getting-started-nodejs.md).

El encabezado de sección `[default]` especifica un perfil predeterminado y valores asociados para las credenciales. Puede crear perfiles adicionales en el mismo archivo de configuración compartido, cada uno con su propia información de credenciales. En el ejemplo siguiente se muestra un archivo de configuración con el perfil predeterminado y dos perfiles adicionales:

```
[default] ; default profile
aws_access_key_id = <DEFAULT_ACCESS_KEY_ID>
aws_secret_access_key = <DEFAULT_SECRET_ACCESS_KEY>
    
[personal-account] ; personal account profile
aws_access_key_id = <PERSONAL_ACCESS_KEY_ID>
aws_secret_access_key = <PERSONAL_SECRET_ACCESS_KEY>
    
[work-account] ; work account profile
aws_access_key_id = <WORK_ACCESS_KEY_ID>
aws_secret_access_key = <WORK_SECRET_ACCESS_KEY>
```

De forma predeterminada, el SDK comprueba la variable de entorno `AWS_PROFILE` para determinar qué perfil se va a utilizar. Si la variable `AWS_PROFILE` no se establece en su entorno, el SDK utiliza las credenciales del perfil `[default]`. Para utilizar uno de los perfiles alternativos, configure o cambie el valor de la variable de entorno `AWS_PROFILE`. Por ejemplo, dado el archivo de configuración que se muestra más arriba, para utilizar las credenciales de la cuenta de trabajo, establezca la variable de entorno `AWS_PROFILE` en `work-account` (según corresponda para su sistema operativo).

**nota**  
Cuando configure variables de entorno, asegúrese de tomar las medidas adecuadas después (según las necesidades de su sistema operativo) para que las variables estén disponibles en el entorno de shell o de comandos.

Después de configurar la variable de entorno (si es necesario), puede ejecutar un archivo de JavaScript que utiliza el SDK, como por ejemplo, un archivo llamado `script.js`.

```
$ node script.js
```

También puede seleccionar de forma explícita el perfil que el SDK utiliza, ya sea estableciendo `process.env.AWS_PROFILE` antes de cargar el SDK o seleccionando el proveedor de credenciales tal y como se muestra en el ejemplo siguiente:

```
var credentials = new AWS.SharedIniFileCredentials({profile: 'work-account'});
AWS.config.credentials = credentials;
```

# Carga de credenciales en Node.js desde variables de entorno
<a name="loading-node-credentials-environment"></a>

El SDK detecta automáticamente las credenciales de AWS establecidas como variables en el entorno y las utiliza para sus solicitudes, lo que elimina la necesidad de administrar credenciales en su aplicación. Las variables de entorno que establece para suministrar las credenciales son:
+ `AWS_ACCESS_KEY_ID`
+ `AWS_SECRET_ACCESS_KEY`
+ `AWS_SESSION_TOKEN`

Para obtener más información sobre cómo establecer variables de entorno, consulte [Compatibilidad con variables de entorno](https://docs.aws.amazon.com/sdkref/latest/guide/environment-variables.html) en la *Guía de referencia de las herramientas y los SDK de AWS*.

# Carga de credenciales en Node.js desde un archivo JSON
<a name="loading-node-credentials-json-file"></a>

Puede cargar la configuración y las credenciales desde un documento JSON en el disco mediante `AWS.config.loadFromPath`. La ruta se especifica en relación con el directorio de trabajo actual de su proceso. Por ejemplo, para cargar credenciales desde un archivo `'config.json'` con el siguiente contenido:

```
{ "accessKeyId": <YOUR_ACCESS_KEY_ID>, "secretAccessKey": <YOUR_SECRET_ACCESS_KEY>, "region": "us-east-1" }
```

A continuación, utilice el siguiente código:

```
var AWS = require("aws-sdk");
AWS.config.loadFromPath('./config.json');
```

**nota**  
Cargar datos de configuración desde un documento JSON restablece todos los datos de configuración ya existentes. Añada datos de configuración adicionales después de usar esta técnica. La carga de credenciales desde un documento JSON no se admite en scripts de navegador.

# Loading Credentials en Node.js mediante un Proceso de credenciales configurado
<a name="loading-node-credentials-configured-credential-process"></a>

Puede obtener credenciales utilizando un método que no esté integrado en el SDK. Para ello, especifique un proceso de credenciales en el archivo de configuración de AWS compartido o en el archivo de credenciales compartido. Si la variable de entorno `AWS_SDK_LOAD_CONFIG` se establece en cualquier valor, el SDK preferirá el proceso especificado en el archivo de configuración al proceso especificado en el archivo de credenciales (si existe).

Para obtener más información sobre cómo especificar un proceso de credenciales en el archivo de configuración de AWS compartido o en el archivo de credenciales compartido, consulte la *Referencia de comandos de AWS CLI*, específicamente la información sobre la [obtención de credenciales de procesos externos](https://docs.aws.amazon.com/cli/latest/topic/config-vars.html#sourcing-credentials-from-external-processes).

Para obtener información sobre el uso de la variable de entorno `AWS_SDK_LOAD_CONFIG`, consulte [Uso de un archivo de configuración compartido](setting-region.md#setting-region-config-file) en este documento.