Assinatura de solicitações de CloudSearch domínio personalizadas da Amazon com AWS SDK for PHP a 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á.

Assinatura de solicitações de CloudSearch domínio personalizadas da Amazon com AWS SDK for PHP a versão 3

As solicitações de CloudSearch domínio da Amazon podem ser personalizadas além do que é suportado peloAWS SDK for PHP. Nos casos em que você precisa fazer solicitações personalizadas para domínios protegidos por autenticação do IAM, você pode usar os provedores e assinantes de credenciais do SDK para assinar qualquer Solicitação PSR-7.

Por exemplo, se você estiver seguindo o Guia de conceitos básicos do Cloud Search e desejar usar um domínio protegido do IAM para a Etapa 3, será necessário assinar e executar sua solicitação da seguinte forma.

Os exemplos a seguir mostram como:

  • Assine uma solicitação com o protocolo de assinatura da AWS usando o SignatureV4.

Todo o código de exemplo para o AWS SDK for PHP está disponível aqui em GitHub.

Credenciais

Antes de executar o código de exemplo, configure suas credenciais da AWS, conforme descrito em Credenciais. Em seguida, importe o AWS SDK for PHP, conforme descrito em Uso básico.

Assine a solicitação de CloudSearch domínio da Amazon

Importações

require './vendor/autoload.php'; use Aws\Credentials\CredentialProvider; use Aws\Signature\SignatureV4; use GuzzleHttp\Client; use GuzzleHttp\Psr7\Request;

Código de exemplo

function searchDomain( $client, $domainName, $domainId, $domainRegion, $searchString ) { $domainPrefix = 'search-'; $cloudSearchDomain = 'cloudsearch.amazonaws.com'; $cloudSearchVersion = '2013-01-01'; $searchPrefix = 'search?'; // Specify the search to send. $request = new Request( 'GET', "https://$domainPrefix$domainName-$domainId.$domainRegion." . "$cloudSearchDomain/$cloudSearchVersion/" . "$searchPrefix$searchString" ); // Get default AWS account access credentials. $credentials = call_user_func(CredentialProvider::defaultProvider())->wait(); // Sign the search request with the credentials. $signer = new SignatureV4('cloudsearch', $domainRegion); $request = $signer->signRequest($request, $credentials); // Send the signed search request. $response = $client->send($request); // Report the search results, if any. $results = json_decode($response->getBody()); $message = ''; if ($results->hits->found > 0) { $message .= 'Search results:' . "\n"; foreach ($results->hits->hit as $hit) { $message .= $hit->fields->title . "\n"; } } else { $message .= 'No search results.'; } return $message; } function searchADomain() { $domainName = 'my-search-domain'; $domainId = '7kbitd6nyiglhdtmssxEXAMPLE'; $domainRegion = 'us-east-1'; $searchString = 'q=star+wars&return=title'; $client = new Client(); echo searchDomain( $client, $domainName, $domainId, $domainRegion, $searchString ); } // Uncomment the following line to run this code in an AWS account. // searchADomain();