Perguntas frequentes sobre o AWS SDK for PHP Versão 3 - AWS SDK for PHP

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 for PHP Versão 3

Quais métodos estão disponíveis em um cliente?

O AWS SDK for PHP usa descrições de serviços e métodos magic __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 do cliente.

O que eu faço sobre um erro de certificado SSL cURL?

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.

Por padrão, o AWS SDK for 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?

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 for 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?

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 no 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?

Como o tipo inteiro do PHP é assinado, e muitas plataformas usam 32 bits inteiros, o AWS SDK for 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. 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, 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.

Como posso ver quais dados são enviados pela rede?

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?

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 PutObjectespecífica do Amazon S3 usando o método auxiliar Aws\Middleware::mapRequest.

Consulte mapRequest para obter mais informações.

Como posso assinar uma solicitação arbitrária?

É 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 for PHP Versão 3 para obter um exemplo completo de como fazer isso.

Como posso modificar um comando antes de enviá-lo?

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 para obter mais informações.

O que é uma CredentialsException?

Se estiver vendo uma Aws\Exception\CredentialsException ao usar o AWS SDK for 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, em seguida, procura as credenciais do perfil da 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 da 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 for PHP Versão 3.

O AWS SDK for PHP funciona no HHVM?

Atualmente, o AWS SDK for PHP não executa no HHVM e não poderá executá-lo até que o problema com a semântica de rendimento no HHVM seja resolvido.

Como desabilito o SSL?

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 AWSRegiões e endpoints no 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"?

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 for PHP Versão 3 do SDK.

Por que o cliente do Amazon S3 está descompactando arquivos gzip?

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_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_content para obter um exemplo de como desabilitar a decodificação automática do conteúdo.

Como desativar a assinatura do corpo no Amazon S3?

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 for 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 for PHP?

O AWS SDK for 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 for 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?

Além das classes de Exception personalizadas pelo AWS SDK for PHP, cada cliente de serviço da AWS tem sua própria classe de exceção que herda de AwsExceptionAwsException. 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() 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; } }