

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á.

# Fazer solicitações de AWS service (Serviço da AWS) usando o AWS SDK para Rust
<a name="make-request"></a>

 Para acessar os Serviços da AWS de forma programática, o AWS SDK para Rust usa uma estrutura de cliente para cada AWS service (Serviço da AWS). Por exemplo, se a aplicação precisar de acesso ao Amazon EC2, ela cria uma estrutura de cliente do EC2 para interagir com esse serviço. Em seguida, você usa o cliente de serviço para fazer solicitações para esse AWS service (Serviço da AWS). 

Para fazer uma solicitação a um AWS service (Serviço da AWS), primeiro crie e [configure](configure.md) um cliente de serviço. Para cada AWS service (Serviço da AWS) que seu código usa, ele tem sua própria caixa e seu próprio tipo dedicado para interagir com ela. O cliente expõe um método para cada operação de API exposta pelo serviço. 

 Para interagir com os Serviços da AWS no AWS SDK para Rust, crie um cliente específico para o serviço, use seus métodos de API com encadeamento fluente no estilo de construtor e chame `send()` para executar a solicitação.

O `Client` expõe um método para cada operação de API exposta pelo serviço. O valor de retorno de cada um desses métodos é um “construtor fluente”, em que diferentes entradas para a API são adicionadas pelo encadeamento de chamadas de funções no estilo do construtor. Após chamar os métodos do serviço, chame `send()` para obter um [https://doc.rust-lang.org/nightly/core/future/trait.Future.html](https://doc.rust-lang.org/nightly/core/future/trait.Future.html) que resultará em uma saída bem-sucedida ou em um `SdkError`. Para obter mais informações sobre `SdkError`, consulte [Tratamento de erros no AWS SDK para Rust](error-handling.md). 

O seguinte exemplo demonstra uma operação básica usando o Amazon S3 para criar um bucket na Região da AWS `us-west-2`: 

```
let config = aws_config::defaults(BehaviorVersion::latest())
    .load()
    .await;
  
let s3 = aws_sdk_s3::Client::new(&config);
  
let result = s3.create_bucket()
    // Set some of the inputs for the operation.
    .bucket("my-bucket")
    .create_bucket_configuration(
        CreateBucketConfiguration::builder()
            .location_constraint(aws_sdk_s3::types::BucketLocationConstraint::UsWest2)
            .build()
        )
    // send() returns a Future that does nothing until awaited.
    .send()
    .await;
```

Cada caixa de serviços tem módulos adicionais usados para entradas de API, como os seguintes: 
+ O módulo `types` tem estruturas ou enumerações para fornecer informações estruturadas mais complexas.
+  O módulo `primitives` tem tipos mais simples para representar dados, como data, hora ou blobs binários.

 Consulte a [documentação de referência da API](https://awslabs.github.io/aws-sdk-rust/) sobre a caixa de serviços para obter informações e organização mais detalhadas sobre caixas. Por exemplo, a caixa `aws-sdk-s3` do Amazon Simple Storage Service tem vários [módulos](https://docs.rs/aws-sdk-s3/latest/aws_sdk_s3/#modules). Dois dos quais são:
+ [https://docs.rs/aws-sdk-s3/latest/aws_sdk_s3/types/index.html](https://docs.rs/aws-sdk-s3/latest/aws_sdk_s3/types/index.html)
+ [https://docs.rs/aws-sdk-s3/latest/aws_sdk_s3/primitives/index.html](https://docs.rs/aws-sdk-s3/latest/aws_sdk_s3/primitives/index.html)