Firma di Amazon personalizzata CloudSearch Richieste di dominio conAWS SDK for PHPVersione 3 - AWS SDK for PHP

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Firma di Amazon personalizzata CloudSearch Richieste di dominio conAWS SDK for PHPVersione 3

Amazon CloudSearch Le richieste di dominio possono essere personalizzate oltre quanto supportato dall'AWS SDK for PHP. Nei casi in cui devi effettuare richieste personalizzate a domini protetti da autenticazione IAM, puoi utilizzare i provider di credenziali e i firmatari dell'SDK per firmare qualsiasiRichiesta PSR-7.

Ad esempio, se segui la Guida alle operazioni di base di Cloud Search e desideri utilizzare un dominio protetto di IAM per la Fase 3, devi firmare ed eseguire la tua richiesta come segue.

Gli esempi seguenti mostrano come:

  • Firma una richiesta con ilAWSprotocollo di firma utilizzandoFirma v4.

La versione integrale del codice di esempio di AWS SDK for PHP è disponibile qui su GitHub.

Credenziali

Prima di eseguire il codice di esempio, configuraAWScredenziali come descritto nellaImpostazione delle credenziali . Quindi importaAWS SDK for PHPcome descritto nellaUtilizzo di base.

Firma richiesta dominio CSlong

Importazioni

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

Codice di esempio

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