

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

# Criar e chamar objetos de serviço
<a name="creating-and-calling-service-objects"></a>

A API JavaScript oferece suporte para a maioria dos serviços da AWS disponíveis. Cada classe de serviço na API JavaScript fornece acesso a cada chamada de API em seu serviço. Para obter mais informações sobre classes de serviço, operações e parâmetros na API JavaScript, consulte a [referência da API](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/index.html).

Ao usar o SDK em Node.js, você adiciona o pacote do SDK para seu aplicativo usando `require`, que fornece suporte a todos os serviços atuais.

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

Ao usar o SDK com o JavaScript do navegador, você carrega o pacote do SDK para os scripts do navegador usando o pacote do SDK hospedado pela AWS. Para carregar o pacote do SDK, adicione o seguinte elemento `<script>`:

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

O pacote do SDK hospedado padrão oferece suporte a um subconjunto dos serviços da AWS disponíveis. Para obter uma lista dos serviços padrão no pacote do SDK hospedado para o navegador, consulte [Serviços compatíveis](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/#Supported_Services) na Referência de API. Você poderá usar o SDK com outros serviços se a verificação de segurança do CORS estiver desabilitada. Nesse caso, você pode criar uma versão personalizada do SDK para incluir os serviços adicionais de que precisa. Para obter mais informações sobre a criação de uma versão personalizada do SDK, consulte [Criar o SDK para navegadores](building-sdk-for-browsers.md).

## Exigir serviços individuais
<a name="requiring-individual-services"></a>

Exigir o SDK para JavaScript, como mostrado anteriormente, inclui todo o SDK no seu código. Como alternativa, você pode optar por solicitar apenas os serviços individuais usados pelo seu código. Considere o código a seguir usado para criar um objeto de serviço do Amazon S3.

```
// Import the AWS SDK
var AWS = require('aws-sdk');

// Set credentials and Region
// This can also be done directly on the service client
AWS.config.update({region: 'us-west-1', credentials: {YOUR_CREDENTIALS}});

var s3 = new AWS.S3({apiVersion: '2006-03-01'});
```

No exemplo anterior, a função `require` especifica todo o SDK. A quantidade de código para transporte pela rede, bem como a sobrecarga de memória do seu código, seriam substancialmente menores se for incluída apenas a parte do SDK de que você precisa para o serviço do Amazon S3. Para exigir um serviço individual, chame a função `require`, conforme mostrado, incluindo o construtor do serviço, com todas as letras minúsculas.

```
require('aws-sdk/clients/SERVICE');
```

Veja como é o código para criar o objeto de serviço do Amazon S3 quando inclui apenas a parte do SDK referente ao Amazon S3.

```
// Import the Amazon S3 service client
var S3 = require('aws-sdk/clients/s3');
 
// Set credentials and Region
var s3 = new S3({
    apiVersion: '2006-03-01',
    region: 'us-west-1', 
    credentials: {YOUR_CREDENTIALS}
  });
```

Você ainda pode acessar o namespace global da AWS sem todos os serviços anexados a ele.

```
require('aws-sdk/global');
```

Essa é uma técnica útil ao aplicar a mesma configuração em vários serviços individuais para, por exemplo, fornecer as mesmas credenciais a todos os serviços. Exigir serviços individuais deve reduzir o tempo de carregamento e o consumo de memória em Node.js. Quando feito juntamente com uma ferramenta de empacotamento, como Browserify ou webpack, exigir serviços individuais faz com que o SDK tenha uma fração do tamanho total. Isso ajuda com ambientes com restrição de memória ou espaço em disco, como um dispositivo com IoT ou uma função do Lambda.

## Criar objetos de serviço
<a name="creating-service-objects"></a>

Para acessar recursos de serviços por meio da API JavaScript, primeiro você deve criar um *objeto de serviço* e, por meio dele, acessar uma série de recursos fornecidos pela classe de cliente subjacente. Em geral, há uma classe de cliente para cada serviço. No entanto, alguns serviços dividem o acesso a seus recursos entre várias classes de cliente.

Para usar um recurso, você deve criar uma instância da classe que fornece acesso a ele. O exemplo a seguir mostra como criar um objeto de serviço para o DynamoDB a partir da classe de cliente do `AWS.DynamoDB`.

```
var dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});
```

Por padrão, o objeto de serviço vem configurado com as configurações globais também usadas para configurar o SDK. No entanto, você pode configurar o objeto de serviço com dados de configuração do tempo de execução específicos desse objeto de serviço. Dados de configuração específicos do serviço são aplicados após a aplicação das configurações globais.

No exemplo a seguir, um objeto de serviço do Amazon EC2 é criado com a configuração de uma região específica, mas usando a configuração global.

```
var ec2 = new AWS.EC2({region: 'us-west-2', apiVersion: '2014-10-01'});
```

Além de oferecer suporte a configurações específicas do serviço aplicadas a um objeto de serviço individual, você também pode aplicar configurações específicas do serviço a todos os objetos de serviço recém-criados de uma determinada classe. Por exemplo, para configurar todos os objetos de serviço criados com base na classe Amazon EC2 para usar a região (`us-west-2`) Oeste dos EUA (Oregon), adicione o seguinte ao objeto de configuração global `AWS.config`.

```
AWS.config.ec2 = {region: 'us-west-2', apiVersion: '2016-04-01'};
```

## Bloquear a versão da API de um objeto de serviço
<a name="locking-api-version-of-service-objects"></a>

Você pode bloquear um objeto de serviço para usar uma determinada versão da API de um serviço ao especificar a opção `apiVersion` quando for criar o objeto. No exemplo a seguir, é criado um objeto de serviço do DynamoDB e ele está bloqueado para uma determinada versão da API.

```
var dynamodb = new AWS.DynamoDB({apiVersion: '2011-12-05'});
```

Para obter mais informações sobre como bloquear a versão da API de um objeto de serviço, consulte [Bloquear versões de API](locking-api-versions.md).

## Especificar os parâmetros do objeto de serviço
<a name="specifying-service-object-parameters"></a>

Ao chamar um método de um objeto de serviço, passe os parâmetros em JSON, conforme exigido pela API. Por exemplo, no Amazon S3, para obter um objeto para bucket e chave especificados, passe os seguintes parâmetros para o método . Para obter mais informações sobre como passar os parâmetros JSON, consulte [Trabalhar com o JSON](working-with-json.md).

```
s3.getObject({Bucket: 'bucketName', Key: 'keyName'});
```

Para obter mais informações sobre parâmetros do Amazon S3, consulte [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html) na Referência a APIs.

Além disso, você pode vincular valores a parâmetros individuais ao criar um objeto de serviço usando o parâmetro `params`. O valor do parâmetro `params` de objetos de serviço é um mapa que especifica um ou mais dos valores de parâmetro definidos pelo objeto de serviço. O exemplo a seguir mostra o parâmetro `Bucket` de um objeto de serviço do que está sendo vinculado a um bucket chamado `amzn-s3-demo-bucket`.

```
var s3bucket = new AWS.S3({params: {Bucket: 'amzn-s3-demo-bucket'}, apiVersion: '2006-03-01' });
```

Ao vincular o objeto de serviço a um bucket, o objeto de serviço `s3bucket` trata o valor do parâmetro `amzn-s3-demo-bucket` como padrão, que não precisa mais ser especificado para operações subsequentes. Quaisquer valores de parâmetro vinculados são ignorados ao usar o objeto para operações em que o valor do parâmetro não é aplicável. Você pode substituir esse parâmetro vinculado ao fazer chamadas no objeto de serviço, para tanto especificando um novo valor. 

```
var s3bucket = new AWS.S3({ params: {Bucket: 'amzn-s3-demo-bucket'}, apiVersion: '2006-03-01' });
s3bucket.getObject({Key: 'keyName'});
// ...
s3bucket.getObject({Bucket: 'amzn-s3-demo-bucket3', Key: 'keyOtherName'});
```

Detalhes sobre os parâmetros disponíveis para cada método são encontrados na referência da API.