

O AWS SDK para JavaScript v2 chegou ao fim do suporte. Recomendamos migrar para o [AWS SDK para JavaScript v3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/). Para ver detalhes e informações sobre como migrar, consulte este [anúncio](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/).

# Configuração do SDK para JavaScript
<a name="setting-up"></a>

Os tópicos desta seção explicam como instalar o SDK para JavaScript para uso em navegadores e com Node.js. Ele também mostra como carregar o SDK para que você possa acessar os serviços web compatíveis com o SDK.

**nota**  
Desenvolvedores do React Native devem usar o AWS Amplify para criar projetos na AWS. Consulte o arquivamento [aws-sdk-react-native](https://github.com/amazon-archives/aws-sdk-react-native) para obter detalhes.

**Topics**
+ [Pré-requisitos](jssdk-prerequisites.md)
+ [Instalação do SDK for JavaScript](installing-jssdk.md)
+ [Carregando o SDK para JavaScript](loading-the-jssdk.md)
+ [Atualização da versão 1 do SDK para JavaScript](upgrading-from-v1.md)

# Pré-requisitos
<a name="jssdk-prerequisites"></a>

Antes de usar o AWS SDK para JavaScript, determine se seu código precisa rodar em Node.js ou em navegadores. Depois disso, faça o seguinte: 
+ Para Node.js, instale o Node.js nos seus servidores, se ele ainda não estiver instalado.
+ Para navegadores, identifique as versões do navegador para as quais você precisa oferecer compatibilidade.

**Topics**
+ [Configurar um ambiente Node.js da AWS](setting-up-node.md)
+ [Navegadores compatíveis](browsers-supported.md)

# Configurar um ambiente Node.js da AWS
<a name="setting-up-node"></a>

Para configurar um ambiente Node.js da AWS no qual você possa executar seu aplicativo, use qualquer um dos seguintes métodos:
+ Escolha uma imagem de máquina da Amazon (AMI) com o Node.js pré-instalado e crie uma instância do Amazon EC2 usando essa AMI. Ao criar sua instância do Amazon EC2, selecione sua AMI no AWS Marketplace. Pesquise no AWS Marketplace por Node.js e escolha uma opção de AMI que inclua uma versão do Node.js (32 ou 64 bits) pré-instalada.
+ Crie uma instância do Amazon EC2 e instale o Node.js. Para obter mais informações sobre como instalar o Node.js em uma instância do Amazon Linux, consulte [Tutorial: Configuração do Node.js em uma instância do Amazon EC2](setting-up-node-on-ec2-instance.md).
+ Crie um ambiente sem servidor usando o AWS Lambda para executar o Node.js como uma função do Lambda. Para obter mais informações sobre como usar o Node.js em uma função do Lambda, consulte [Modelo de programação (Node.js)](https://docs.aws.amazon.com/lambda/latest/dg/programming-model.html) no *Guia do desenvolvedor do AWS Lambda*.
+ Implante seu aplicativo do Node.js no AWS Elastic Beanstalk. Para obter mais informações sobre como usar o Node.js com Elastic Beanstalk, consulte [Implantar aplicativos do Node.js no AWS Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.html) no *Guia do Desenvolvedor do AWS Elastic Beanstalk*. 

# Navegadores compatíveis
<a name="browsers-supported"></a>

O SDK para JavaScript oferece suporte a todos os navegadores modernos, incluindo estas versões mínimas:


****  

| Navegador | Versão | 
| --- | --- | 
| Google Chrome | 28.0\$1 | 
| Mozilla Firefox | 26.0\$1 | 
| Opera | 17.0\$1 | 
| Microsoft Edge | 25.10\$1 | 
| Windows Internet Explorer | N/D | 
| Apple Safari | 5\$1 | 
| Navegador do Android | 4.3\$1 | 

**nota**  
Talvez as estruturas, como o AWS Amplify, não ofereçam o mesmo suporte a navegadores que o SDK para JavaScript. Verifique a documentação de uma estrutura para obter detalhes.

# Instalação do SDK for JavaScript
<a name="installing-jssdk"></a>

Se você instala o AWS SDK para JavaScript e como você faz isso depende de o código executar nos módulos do Node.js ou nos scripts do navegador.

Nem todos os serviços estão disponíveis imediatamente no SDK. Para descobrir quais serviços atualmente são compatíveis com o 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 ]

A forma preferida de instalar o AWS SDK para JavaScript para Node.js é usar [npm, o gerenciador de pacotes Node.js](https://www.npmjs.com/). Para fazer isso, digite isso na linha de comando.

```
npm install aws-sdk
```

Caso você veja essa mensagem de erro:

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

Digite estes comandos na linha de comando:

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

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

Você não precisa instalar o SDK para usá-lo em scripts de navegador. Carregue o pacote do SDK hospedado diretamente pela Amazon Web Services com um script nas suas páginas HTML. O pacote SDK hospedado é compatível com o subconjunto de serviços da AWS que impõem o CORS (cross-origin resource sharing, compartilhamento de recursos de origem cruzada). Para obter mais informações, consulte [Carregando o SDK para JavaScript](loading-the-jssdk.md).

Você pode criar uma compilação personalizada do SDK na qual seleciona os serviços web e versões específicos que deseja usar. Em seguida, faça download do pacote personalizado do SDK para desenvolvimento local e hospede-o ao seu aplicativo para usar. Para obter mais informações sobre a criação de um build personalizado do SDK, consulte [Criar o SDK para navegadores](building-sdk-for-browsers.md).

Você pode fazer download das versões minimizada e não minimizada distribuíveis do AWS SDK para JavaScript atual no GitHub em:

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

------

## Instalar usando o Bower
<a name="w2aac13c11b9"></a>

[Bower](https://bower.io) é um gerenciador de pacotes para a web. Após instalar Bower, você pode usá-lo para instalar o SDK. Para instalar o SDK usando o Bower, digite o seguinte em uma janela de terminal:

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

# Carregando o SDK para JavaScript
<a name="loading-the-jssdk"></a>

A forma como você carrega o SDK para JavaScript depende se você estiver o carregando para execução em um navegador ou em Node.js.

Nem todos os serviços estão disponíveis imediatamente no SDK. Para descobrir quais serviços atualmente são compatíveis com o 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 ]

Depois de instalar o SDK, você pode carregar o pacote da AWS no aplicativo do seu nó usando `require`. 

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

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

Para usar o SDK em um projeto React Native, primeiro instale o SDK usando npm:

```
npm install aws-sdk
```

No seu aplicativo, faça referência à versão compatível do React Native do SDK com o seguinte código:

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

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

A maneira mais rápida de começar a usar o SDK é carregar o pacote do SDK hospedado diretamente da Amazon Web Services. Para fazer isso, adicione um elemento `<script>` às suas páginas HTML no seguinte formato:

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

[Para encontrar o SDK\$1VERSION\$1NUMBER atual, consulte a Referência da API para o SDK para JavaScript no Guia de referência da API. AWS SDK para JavaScript](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/)

Depois que o SDK carregar na sua página, o SDK estará disponível na variável global `AWS` (ou `window.AWS`).

Se você agrupa seu código e as dependências do módulo usando [browserify](http://browserify.org), você carrega o SDK usando `require`, da mesma forma como em Node.js.

------

# Atualização da versão 1 do SDK para JavaScript
<a name="upgrading-from-v1"></a>

As notas a seguir ajudam você a atualizar o SDK para JavaScript da versão 1 para a versão 2.

## Conversão automática dos tipos Base64 e Timestamp Types na entrada/saída
<a name="upgrading-from-v1-base64-timestamp-conversion"></a>

O SDK agora codifica e decodifica automaticamente os valores codificados em base64, bem como valores de timestamp, em nome do usuário. Essa alteração afeta qualquer operação em que os valores de base64 ou timestamp foram enviados por uma solicitação ou retornados em uma resposta que permite valores codificados em base64.

O código do usuário que converteu previamente base64 não é mais necessário. Os valores codificados como base64 agora são apresentados como objetos de buffer de respostas do servidor e também podem ser passados como entrada do buffer. Por exemplo, os seguintes parâmetros `SQS.sendMessage` da versão 1:

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

Podem ser reescritos da forma a seguir.

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

Veja como a mensagem é lida.

```
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"
});
```

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

O SDK agora armazena IDs de solicitação para todos os serviços em um único lugar do objeto `response`, em vez de dentro da propriedade `response.data`. Isso melhora a consistência entre serviços que expõem IDs de solicitação de diferentes formas. Isso também é uma alteração inovadora que renomeia a propriedade `response.data.RequestId` para `response.requestId` (`this.requestId` dentro de uma função de retorno de chamada).

No seu código, altere o seguinte:

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

Para o seguinte:

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

## Elementos expostos do Wrapper
<a name="upgrading-from-v1-exposed-wrapper-elements"></a>

Se você usar `AWS.ElastiCache`, `AWS.RDS` ou `AWS.Redshift`, deve acessar a resposta por meio da propriedade de saída de nível superior na resposta para algumas operações. 

Por exemplo, o método `RDS.describeEngineDefaultParameters` usado para retornar o seguinte:

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

Agora retorna o seguinte:

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

A lista de operações afetadas para cada serviço é exibida na tabela a seguir.


****  

| Classe do cliente | Operações | 
| --- | --- | 
| `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` | 

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

As propriedades `.Client` e `.client` foram removidos dos objetos de serviço. Se você usar a propriedade `.Client` em uma classe de serviço ou uma propriedade `.client` na instância de um objeto de serviço, remova essas propriedades do seu código.

O código a seguir usado com a versão 1 do SDK para JavaScript:

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

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

Deve ser alterado para o código a seguir:

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