

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

# Fazendo AWS service (Serviço da AWS) solicitações usando a AWS SDK para PHP versão 3
<a name="making-service-requests"></a>

## Visão geral do fluxo de trabalho de solicitação do SDK
<a name="usage-summary"></a>

Trabalhar com a AWS SDK para PHP versão 3 segue um padrão consistente em todos Serviços da AWS. O fluxo de trabalho básico envolve três etapas principais:

1. [**Crie um cliente de serviço**](#creating-a-client) — Instancie um objeto **Client** para o AWS service (Serviço da AWS) que você deseja usar.

1. [**Executar operações**](#executing-service-operations): chame métodos no cliente que correspondam às operações na API do serviço.

1. [**Processar resultados**](#result-objects): trabalhe com o objeto **Resultado** semelhante a uma matriz, retornado em caso de sucesso, ou trate qualquer **exceção** gerada em caso de falha.

As seções a seguir explicam cada uma dessas etapas em detalhes, começando com a criação e configuração de clientes de serviço.

## Criar um cliente de serviço básico
<a name="creating-a-client"></a>

Você pode criar um cliente passando uma matriz associativa de opções para um construtor do cliente.

 **Importações** 

```
require 'vendor/autoload.php';

use Aws\S3\S3Client;
use Aws\Exception\AwsException;
```

 **Código de exemplo** 

```
//Create an S3Client
$s3 = new Aws\S3\S3Client([
    'region' => 'us-east-2'  // Since version 3.277.10 of the SDK,
]);                          // the 'version' parameter defaults to 'latest'.
```

Informações sobre o parâmetro opcional “versão” estão disponíveis no tópico de [opções de configuração](guide_configuration.md#cfg-version).

Observe que **não** fornecemos explicitamente credenciais ao cliente. Isso porque o SDK usa a [cadeia de provedores de credenciais padrão](guide_credentials_default_chain.md) para procurar informações de credencial.

Todas as opções de configuração geral do cliente estão descritas em detalhes no [Opções de construtor de clientes para a AWS SDK para PHP versão 3](guide_configuration.md). A matriz de opções fornecidas a um cliente pode variar com base no cliente que você está criando. Essas opções de configuração personalizada de cliente são descritas na [documentação da API](https://docs.aws.amazon.com/aws-sdk-php/latest/) para cada cliente.

Embora o exemplo acima mostre a criação de cliente básico, você pode personalizar seus clientes de serviço para atender a requisitos específicos. Para obter informações mais detalhadas sobre como configurar clientes de serviço por meio de código, consulte [Configurando clientes de serviço em código para a AWS SDK para PHP versão 3](configuring-service-clients-code.md). Se você precisar configurar clientes de serviço usando arquivos de configuração externos ou variáveis de ambiente, consulte [Configurando clientes de serviço para a AWS SDK para PHP versão 3 externamente](configuring-service-clients-ext.md).

## Fazer solicitações de
<a name="executing-service-operations"></a>

É possível fazer solicitações de serviço chamando o método de mesmo nome em um objeto de cliente. Por exemplo, para realizar a [PutObjectoperação](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html) do Amazon S3, você chama o `Aws\S3\S3Client::putObject()` método.

 **Importações** 

```
require 'vendor/autoload.php';

use Aws\S3\S3Client;
```

 **Código de exemplo** 

```
// Use the us-east-2 region and latest version of each client.
$sharedConfig = [
    'profile' => 'default',
    'region' => 'us-east-2'
];

// Create an SDK class used to share configuration across clients.
$sdk = new Aws\Sdk($sharedConfig);

// Use an Aws\Sdk class to create the S3Client object.
$s3Client = $sdk->createS3();

// Send a PutObject request and get the result object.
$result = $s3Client->putObject([
    'Bucket' => 'amzn-s3-demo-bucket',
    'Key' => 'my-key',
    'Body' => 'this is the body!'
]);

// Download the contents of the object.
$result = $s3Client->getObject([
    'Bucket' => 'amzn-s3-demo-bucket',
    'Key' => 'my-key'
]);

// Print the body of the result by indexing into the result object.
echo $result['Body'];
```

As operações disponíveis para um cliente e a estrutura de entrada e saída são definidas em tempo de execução com base em um arquivo de descrição do serviço. Ao criar um cliente, se você não fornecer um parâmetro `version` (por exemplo, *“2006-03-01”* ou *“mais recente”*) do modelo de serviço, o cliente usará como padrão a versão mais recente. O SDK localiza o arquivo de configuração correspondente com base na versão fornecida.

Todos os métodos de operação, como o `putObject()`, aceitam um único argumento, uma matriz associativa que representa os parâmetros da operação. A estrutura dessa matriz (e a estrutura do objeto do resultado) é definida para cada operação na Documentação da API do SDK (por exemplo, consulte a documentação da API para a [operação putObject](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putobject)).

### Opções do manipulador HTTP
<a name="http-handler-options"></a>

Você também pode ajustar como o manipulador HTTP subjacente executa a solicitação usando o parâmetro especial `@http`. As opções que podem ser incluídas no parâmetro `@http` são as mesmas que podem ser definidas ao instanciar o cliente com a [opção de cliente "http"](guide_configuration.md#config-http).

```
// Send the request through a proxy
$result = $s3Client->putObject([
    'Bucket' => 'amzn-s3-demo-bucket',
    'Key'    => 'my-key',
    'Body'   => 'this is the body!',
    '@http'  => [
        'proxy' => 'http://192.168.16.1:10'
    ]
]);
```

## Trabalhar com objetos de resultados
<a name="result-objects"></a>

A execução de uma operação bem-sucedida retorna um objeto `Aws\Result`. Em vez de retornar os dados brutos XML ou JSON de um serviço, o SDK força os dados da resposta em uma estrutura de matriz associativa. Ele normaliza alguns aspectos dos dados com base em seu conhecimento do serviço específico e da estrutura da resposta subjacente.

É possível acessar os dados no objeto `AWS\Result` como uma matriz PHP associativa.

 **Importações** 

```
require 'vendor/autoload.php';
use Aws\S3\S3Client;
use Aws\Exception\AwsException;
```

 **Código de exemplo** 

```
// Use the us-east-2 region and latest version of each client.
$sharedConfig = [
    'profile' => 'default',
    'region' => 'us-east-2',
];

// Create an SDK class used to share configuration across clients.
$sdk = new Aws\Sdk($sharedConfig);

// Use an Aws\Sdk class to create the S3Client object.
$s3 = $sdk->createS3();
$result = $s3->listBuckets();
foreach ($result['Buckets'] as $bucket) {
    echo $bucket['Name'] . "\n";
}

// Convert the result object to a PHP array
$array = $result->toArray();
```

O conteúdo do objeto do resultado depende da operação executada e da versão de um serviço. A estrutura do resultado de cada operação da API é documentada na documentação da API para cada operação.

O SDK é integrado com [JMESPath](http://jmespath.org/)uma [DSL](http://en.wikipedia.org/wiki/Domain-specific_language) usada para pesquisar e manipular dados JSON ou, no nosso caso, matrizes PHP. O objeto do resultado contém um método `search()` que você pode usar para extrair dados de forma declarativa do resultado.

 **Código de exemplo** 

```
$s3 = $sdk->createS3();
$result = $s3->listBuckets();
```

```
$names = $result->search('Buckets[].Name');
```