

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

# Perguntas frequentes sobre o AWS SDK para PHP versão 3
<a name="faq"></a>

## Quais métodos estão disponíveis em um cliente?
<a name="what-methods-are-available-on-a-client"></a>

O AWS SDK para PHP usa descrições de serviços e [métodos magic \$1\$1call()](http://www.php.net/manual/en/language.oop5.overloading.php#object.call) dinâmicos para executar operações de API. É possível encontrar uma lista completa dos métodos disponíveis para um cliente de Web service na [documentação da API](https://docs.aws.amazon.com/aws-sdk-php/v3/api/index.html) do cliente.

## O que eu faço sobre um erro de certificado SSL cURL?
<a name="what-do-i-do-about-a-curl-ssl-certificate-error"></a>

Esse problema pode ocorrer ao usar um pacote CA desatualizado com cURL e SSL. Você pode resolver esse problema atualizando o pacote CA no servidor ou fazendo download de um pacote CA mais atualizado diretamente no [site do cURL](http://curl.haxx.se/docs/caextract.html).

Por padrão, o AWS SDK para PHP usará o pacote CA que é configurado quando o PHP é compilado. Você pode alterar o pacote CA padrão usado pelo PHP modificando a definição da configuração de .ini do PHP de `openssl.cafile` a ser definida para o caminho de um arquivo CA no disco.

## Quais versões da API estão disponíveis para um cliente?
<a name="what-api-versions-are-available-for-a-client"></a>

Uma opção de `version` é necessária ao criar um cliente. Uma lista de versões disponíveis da API pode ser encontrada em cada página da documentação da API do cliente ::aws-php-class:<index.html>. Se você não puder carregar uma versão específica da API, poderá ser necessário atualizar sua cópia do AWS SDK para PHP.

Você pode fornecer a sequência `latest` para o valor de configuração de "version" para usar a versão da API mais recente disponível que o provedor de API do cliente pode encontrar (o api-provider padrão verificará o diretório `src/data` do SDK para localizar os modelos da API).

**Atenção**  
Não recomendamos usar `latest` em um aplicativo de produção, pois a extração de uma nova versão secundária do SDK que inclui uma atualização da API pode interromper o aplicativo de produção.

## Quais versões de região estão disponíveis para um cliente?
<a name="what-region-versions-are-available-for-a-client"></a>

Uma opção `region` é necessária ao criar um cliente, e é especificada usando um valor de sequência. Para obter uma lista das regiões e endpoints da AWS disponíveis, consulte [Regiões e endpoints da AWS](https://docs.aws.amazon.com/general/latest/gr/rande.html) na Referência geral da AWS.

```
// Set the Region to the EU (Frankfurt) Region.
$s3 = new Aws\S3\S3Client([
    'region'  => 'eu-central-1',
    'version' => '2006-03-01'
]);
```

## Por que não é possível fazer upload e download de arquivos maiores que 2 GB?
<a name="why-can-t-i-upload-or-download-files-larger-than-2-gb"></a>

Como o tipo inteiro do PHP é assinado, e muitas plataformas usam 32 bits inteiros, o AWS SDK para PHP não trata corretamente arquivos maiores que 2 GB em uma pilha de 32 bits (em que a "pilha" inclui CPU, sistema operacional, servidor web e PHP binário). Esse é um [problema bem-conhecido do PHP](http://www.google.com/search?q=php+2gb+32-bit). No caso do Microsoft Windows, apenas as compilações do PHP 7 são compatíveis com inteiros de 64 bits.

A solução recomendada é usar uma [pilha de 64 bits do Linux](https://aws.amazon.com/amazon-linux-ami/), como a AMI do Amazon Linux de 64 bits, com a versão do PHP mais recente instalada.

Para obter mais informações, consulte [Tamanho de arquivo do PHP: valores de retorno](http://docs.php.net/manual/en/function.filesize.php#refsect1-function.filesize-returnvalues).

## Como posso ver quais dados são enviados pela rede?
<a name="how-can-i-see-what-data-is-sent-over-the-wire"></a>

Você pode obter informações de depuração, incluindo os dados enviados pela rede, usando a opção `debug` em um construtor de cliente. Quando essa opção está definida como `true`, todas as mutações do comando que está sendo executado, a solicitação que está sendo enviada, a resposta que está sendo recebida e o resultado que está sendo processado são emitidos para STDOUT. Isso inclui os dados enviados e recebidos pela conexão.

```
$s3Client = new Aws\S3\S3Client([
    'region'  => 'us-standard',
    'version' => '2006-03-01',
    'debug'   => true
]);
```

## Como posso definir cabeçalhos arbitrários em uma solicitação?
<a name="how-can-i-set-arbitrary-headers-on-a-request"></a>

Você pode adicionar cabeçalhos arbitrários a uma operação de serviço adicionando um middleware personalizado à `Aws\HandlerList` de uma `Aws\CommandInterface` ou `Aws\ClientInterface`. O exemplo a seguir mostra como adicionar um cabeçalho `X-Foo-Baz` a uma operação `PutObject` específica do Amazon S3 usando o método auxiliar `Aws\Middleware::mapRequest`.

Consulte [mapRequest](guide_handlers-and-middleware.md#map-request) para obter mais informações.

## Como posso assinar uma solicitação arbitrária?
<a name="how-can-i-sign-an-arbitrary-request"></a>

É possível assinar uma classe :aws-php-class arbitrária: *solicitação PSR-7 <class-Psr.Http.Message.RequestInterface.html>* usando a classe :aws-php-class do SDK: *classe SignatureV4 </class-Aws.Signature.SignatureV4.html>*.

Consulte [Assinar solicitações de domínio personalizadas do Amazon CloudSearch com o AWS SDK para PHP versão 3](service_cloudsearch-custom-requests.md) para obter um exemplo completo de como fazer isso.

## Como posso modificar um comando antes de enviá-lo?
<a name="how-can-i-modify-a-command-before-sending-it"></a>

Você pode modificar um comando antes de enviá-lo adicionando um middleware personalizado à `Aws\HandlerList` de uma `Aws\CommandInterface` ou `Aws\ClientInterface`. O exemplo a seguir mostra como adicionar parâmetros de comando personalizados a um comando antes que ele seja enviado, essencialmente adicionando opções padrão. Este exemplo usa o método auxiliar `Aws\Middleware::mapCommand`.

Consulte [mapCommand](guide_handlers-and-middleware.md#map-command) para obter mais informações.

## O que é uma CredentialsException?
<a name="what-is-a-credentialsexception"></a>

Se estiver vendo uma `Aws\Exception\CredentialsException` ao usar o AWS SDK para PHP, isso significa que o SDK não foi fornecido com as credenciais e não pôde encontrar as credenciais no ambiente.

Se você instanciar um cliente *sem* credenciais, na primeira vez que você executar uma operação de serviço, o SDK tentará localizar as credenciais. Ele primeiro verifica algumas variáveis de ambiente específicas, depois, procura as credenciais do perfil de instância, que só estão disponíveis em instâncias do Amazon EC2 configuradas. Se nenhuma credencial for fornecida ou localizada, uma `Aws\Exception\CredentialsException` será gerada.

Se estiver vendo esse erro e tiver a intenção de usar as credenciais do perfil de instância, você precisará ter certeza de que a instância do Amazon EC2 que o SDK está executando está configurada com um perfil do IAM adequado.

Se estiver vendo esse erro e **não** pretender usar credenciais do perfil da instância, você precisará ter certeza de que está fornecendo credenciais corretamente para o SDK.

Para obter mais informações, consulte [Credenciais do AWS SDK para PHP versão 3](guide_credentials.md).

## O AWS SDK para PHP funciona no HHVM?
<a name="does-the-sdk-php-work-on-hhvm"></a>

Atualmente, o AWS SDK para PHP não executa no HHVM e não poderá executá-lo até que o [problema com a semântica de rendimento no HHVM](https://github.com/facebook/hhvm/issues/6807) seja resolvido.

## Como desabilito o SSL?
<a name="how-do-i-disable-ssl"></a>

Você pode desabilitar o SSL configurando o parâmetro `scheme` em um método de fábrica de cliente como “http”. É importante observar que nem todos os serviços são compatíveis com o acesso `http`. Consulte [Regiões e endpoints da AWS](https://docs.aws.amazon.com/general/latest/gr/rande.html) na Referência geral da AWS para obter uma lista de regiões, endpoints e esquemas compatíveis.

```
$client = new Aws\DynamoDb\DynamoDbClient([
    'version' => '2012-08-10',
    'region'  => 'us-west-2',
    'scheme'  => 'http'
]);
```

**Atenção**  
Como o SSL exige que todos os dados sejam criptografados e requer mais pacotes TCP para concluir o handshake de uma conexão além do TCP, a desativação do SSL pode fornecer uma pequena melhoria de desempenho. No entanto, com o SSL desabilitado, todos os dados são enviados pela rede não criptografados. Antes de desabilitar o SSL, você deve considerar cuidadosamente as implicações de segurança e o potencial de interceptação pela rede.

## O que fazer com relação a um "Erro de análise"?
<a name="what-do-i-do-about-a-parse-error"></a>

O mecanismo do PHP lançará erros de análise ao encontrar sintaxe que não entende. Isso é quase sempre encontrado ao tentar executar o código que foi escrito para uma versão diferente do PHP.

Se você encontrar um erro de análise, verifique o sistema e certifique-se de que ele atenda aos [Requisitos e recomendações para o AWS SDK para PHP versão 3](getting-started_requirements.md) do SDK.

## Por que o cliente do Amazon S3 está descompactando arquivos gzip?
<a name="why-is-the-s3-client-decompressing-gzipped-files"></a>

Alguns manipuladores HTTP, incluindo o manipulador HTTP padrão Guzzle 6, inflarão os corpos de resposta compactados por padrão. Você pode substituir esse comportamento definindo a opção HTTP [decode\$1content](guide_configuration.md#http-decode-content) como `false`. Por motivos de compatibilidade com versões anteriores, esse padrão não pode ser alterado, mas recomendamos que você desative a decodificação de conteúdo no nível do cliente do S3.

Consulte [decode\$1content](guide_configuration.md#http-decode-content) para obter um exemplo de como desabilitar a decodificação automática do conteúdo.

## Como desabilitar a assinatura do corpo no Amazon S3?
<a name="how-do-i-disable-body-signing-in-s3"></a>

Você pode desativar a assinatura do corpo definindo o parâmetro `ContentSHA256` no objeto do comando como `Aws\Signature\S3SignatureV4::UNSIGNED_PAYLOAD`. Depois, o AWS SDK para PHP o usará como o cabeçalho "x-amz-content-sha-256' e a soma de verificação do corpo na solicitação canônica.

```
$s3Client = new Aws\S3\S3Client([
    'version' => '2006-03-01',
    'region'  => 'us-standard'
]);

$params = [
    'Bucket' => 'foo',
    'Key'    => 'baz',
    'ContentSHA256' => Aws\Signature\S3SignatureV4::UNSIGNED_PAYLOAD
];

// Using operation methods creates command implicitly
$result = $s3Client->putObject($params);

// Using commands explicitly.
$command = $s3Client->getCommand('PutObject', $params);
$result = $s3Client->execute($command);
```

## Como o esquema de repetição é tratado no AWS SDK para PHP?
<a name="how-is-retry-scheme-handled-in-the-sdk-php"></a>

O AWS SDK para PHP tem um `RetryMiddleware` que controla o comportamento de repetição. Em termos de códigos de status HTTP 5xx para erros do servidor, o SDK repete em 500, 502, 503 e 504.

Exceções de limitação, incluindo `RequestLimitExceeded`. `Throttling`, `ProvisionedThroughputExceededException`, `ThrottlingException`, `RequestThrottled` e `BandwidthLimitExceeded`, também são tratadas com repetições.

O AWS SDK para PHP também integra o atraso exponencial com um algoritmo de recuo e variação no esquema de repetição. Além disso, o comportamento de repetição padrão é configurado como `3` para todos os serviços, exceto o Amazon DynamoDB, que é `10`.

## Como faço para tratar exceções com códigos de erro?
<a name="how-do-i-handle-exceptions-with-error-codes"></a>

Além das classes de `Exception` personalizadas pelo AWS SDK para PHP, cada cliente de serviço da AWS tem sua própria classe de exceção que herda de [AwsExceptionAwsException](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.Exception.AwsException.html). Você pode determinar tipos de erro mais específicos para capturar com os erros específicos à API listados na seção `Errors` de cada método.

As informações sobre o código do erro estão disponíveis com [getAwsErrorCode()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.Exception.AwsException.html#_getAwsErrorCode) em `Aws\Exception\AwsException`.

```
$sns = new \Aws\Sns\SnsClient([
    'region' => 'us-west-2',
    'version' => 'latest',
]);

try {
    $sns->publish([
        // parameters
        ...
    ]);
    // Do something
} catch (SnsException $e) {
    switch ($e->getAwsErrorCode()) {
        case 'EndpointDisabled':
        case 'NotFound':
            // Do something
            break;
    }
}
```