

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Configurando o AWS SDK para clientes do serviço Rust em código
<a name="config-code"></a>

Quando a configuração é tratada diretamente no código, o escopo da configuração é limitado à aplicação que usa esse código. Dentro dessa aplicação, há opções para a configuração global de todos os clientes de serviço, a configuração para todos os clientes de determinado tipo de AWS service (Serviço da AWS) ou a configuração para uma instância específica do cliente de serviço.

Para fazer uma solicitação a um AWS service (Serviço da AWS), primeiro você instancia um cliente para esse serviço. Você pode definir configurações comuns para clientes de serviço, como tempos limite, o cliente HTTP e configuração de repetição. 

Cada cliente de serviço exige um Região da AWS e um provedor de credenciais. O SDK usa esses valores para enviar solicitações à região correta para seus recursos e para assinar solicitações com as credenciais corretas. Você pode especificar esses valores de modo programático no código ou fazer com que sejam carregados automaticamente do ambiente.

**nota**  
Os clientes de serviços podem ser caros para construir e geralmente devem ser compartilhados. Para facilitar isso, todas as estruturas `Client` implementam `Clone`.

## Configurar um cliente do ambiente
<a name="configure-a-client-from-the-environment"></a>

Para criar um cliente com configuração baseada no ambiente, use métodos estáticos da caixa `aws-config`:

```
let config = aws_config::defaults(BehaviorVersion::latest())
    .load()
    .await;

let s3 = aws_sdk_s3::Client::new(&config);
```

Criar um cliente dessa forma é útil quando executado no Amazon Elastic Compute Cloud ou em qualquer outro contexto em que a configuração de um cliente de serviço esteja disponível diretamente do ambiente. AWS Lambda Isso separa seu código do ambiente em que ele está sendo executado e facilita a implantação de seu aplicativo em vários Regiões da AWS sem alterar o código.

Você pode substituir explicitamente propriedades específicas. A configuração explícita tem precedência sobre a configuração resolvida no ambiente de execução. O seguinte exemplo carrega a configuração do ambiente, mas substitui explicitamente a Região da AWS:

```
let config = aws_config::defaults(BehaviorVersion::latest())
    .region("us-east-1")
    .load()
    .await;
    
let s3 = aws_sdk_s3::Client::new(&config);
```

**nota**  
Nem todos os valores de configuração são fornecidos pelo cliente no momento da criação. As configurações relacionadas a credenciais, como chaves de acesso temporárias e configuração do Centro de Identidade do IAM, são acessadas pela camada do provedor de credenciais quando o cliente é usado para fazer uma solicitação.

O código `BehaviorVersion::latest()` mostrado nos exemplos anteriores indica a versão do SDK a ser usada como padrão. O `BehaviorVersion::latest()`é adequado para a maioria dos casos. Para obter detalhes, consulte [Usando versões de comportamento no AWS SDK para Rust](behavior-versions.md).

## Use o padrão do builder para configurações específicas do serviço
<a name="configure-a-client-builder"></a>

Há algumas opções que só podem ser configuradas em um tipo específico de cliente de serviço. No entanto, na maioria das vezes, será importante carregar a maioria das configurações do ambiente e, em seguida, adicionar especificamente as opções adicionais. O padrão do construtor é um padrão comum dentro das AWS SDK para Rust caixas. Primeiro, você carrega a configuração geral usando `aws_config::defaults` e, em seguida, usa o método `from` para carregar essa configuração no construtor do serviço com o qual você está trabalhando. Em seguida, você pode definir valores de configuração exclusivos para esse serviço e chamada `build`. Por fim, o cliente é criado com base nessa configuração modificada. 

```
// Call a static method on aws-config that sources default config values.
let config = aws_config::defaults(BehaviorVersion::latest())
    .load()
    .await;

// Use the Builder for S3 to create service-specific config from the default config.
let s3_config = aws_sdk_s3::config::Builder::from(&config)
    .accelerate(true) // Set an S3-only configuration option
    .build();

// Create the client.
let s3 = aws_sdk_s3::Client::from_conf(s3_config);
```

Uma forma de descobrir métodos adicionais disponíveis para um tipo específico de cliente de serviço é usar a documentação da API, como para [https://docs.rs/aws-sdk-s3/latest/aws_sdk_s3/config/struct.Builder.html](https://docs.rs/aws-sdk-s3/latest/aws_sdk_s3/config/struct.Builder.html).

## Configuração avançada explícita do cliente
<a name="configure-a-client-explicitly"></a>

Para configurar um cliente de serviço com valores específicos em vez de carregar uma configuração do ambiente, você pode especificá-los no builder `Config` do cliente, conforme mostrado abaixo:

```
let conf = aws_sdk_s3::Config::builder()
    .region("us-east-1")
    .endpoint_resolver(my_endpoint_resolver)
    .build();

let s3 = aws_sdk_s3::Client::from_conf(conf);
```

Quando você cria uma configuração de serviço como `aws_sdk_s3::Config::builder()`, *nenhuma configuração padrão é carregada*. Os padrões só são carregados ao criar uma configuração baseada em `aws_config::defaults`. 

Há algumas opções que só podem ser configuradas em um tipo específico de cliente de serviço. O exemplo anterior mostra um exemplo disso usando a função `endpoint_resolver` em um cliente Amazon S3.