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.
Firma de solicitudes personalizadas del dominio de Amazon CloudSearch con la versión 3 de AWS SDK para PHP
Las solicitudes de dominio de Amazon CloudSearch se pueden personalizar además de la compatibilidad de AWS SDK para 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 de AWS SDK para PHP está disponible aquí en GitHub
Credenciales
Antes de ejecutar el código de ejemplo, configure sus credenciales de AWS, como se indica en Autenticación AWS con la AWS SDK para PHP versión 3. A continuación, importe AWS SDK para PHP, como se indica en Instalación del AWS SDK para PHP versión 3.
Firmar la solicitud de dominio de Amazon CloudSearch
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();