Signieren von benutzerdefinierten Amazon- CloudSearch Domänenanforderungen mit AWS SDK for PHP Version 3 - AWS SDK for PHP

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Signieren von benutzerdefinierten Amazon- CloudSearch Domänenanforderungen mit AWS SDK for PHP Version 3

Amazon CloudSearch -Domänenanforderungen können über das hinaus angepasst werden, was von der unterstützt wirdAWS SDK for PHP. In Fällen, in denen Sie benutzerdefinierte Anforderungen an Domains stellen müssen, die durch die IAM-Authentifizierung geschützt sind, können Sie die Anmeldeinformationsanbieter und Unterzeichner des SDK verwenden, um jede PSR-7-Anforderung zu signieren.

Wenn Sie beispielsweise das Handbuch Erste Schritte mit Cloud Search verwenden und eine IAM-geschützte Domäne für Schritt 3 verwenden wollen, müssen Sie Ihre Anforderung wie folgt signieren und ausführen.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:

  • Signieren Sie eine Anforderung mit dem AWS Signaturprotokoll mithilfe von SignatureV4.

Der gesamte Beispielcode für die AWS SDK for PHP ist hier auf GitHubverfügbar.

Anmeldeinformationen

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen, wie unter beschriebenAnmeldeinformationen. Importieren Sie dann die AWS SDK for PHP, wie unter beschriebenGrundlegende Verwendung.

Amazon CloudSearch -Domänenanforderung signieren

Importe

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

Beispiel-Code

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