Firmar solicitudes de CloudSearch dominio de Amazon personalizadas con AWS SDK for PHP la versión 3 - AWS SDK for PHP

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Firmar solicitudes de CloudSearch dominio de Amazon personalizadas con AWS SDK for PHP la versión 3

Las solicitudes de CloudSearch dominio de Amazon se pueden personalizar más allá de lo que admiteAWS SDK for PHP. En los casos en que necesite realizar solicitudes personalizadas a dominios protegidos por la autenticación de IAM, puede utilizar los proveedores de credenciales del SDK y sus signatarios para firmar cualquier solicitud de PSR-7.

Por ejemplo, si está siguiendo la Guía de introducción de Cloud Search y desea utilizar un dominio protegido por IAM en el Paso 3, tendría que firmar y ejecutar su solicitud de la siguiente manera.

Los siguientes ejemplos muestran cómo:

  • Firmar una solicitud con el protocolo de firma de AWS utilizando SignatureV4.

Todo el código de ejemplo para el AWS SDK for PHP está disponible aquí en GitHub.

Credenciales

Antes de ejecutar el código de ejemplo, configure sus credenciales de AWS, como se indica en Credentials. A continuación, importe AWS SDK for PHP, como se indica en Uso básico.

Firmar la solicitud CloudSearch de dominio de Amazon

Importaciones

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

Código de muestra

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();