AWS SDK for PHP 버전 3을 사용한 사용자 지정 Amazon CloudSearch 도메인 요청에 서명 - AWS SDK for PHP

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS SDK for PHP 버전 3을 사용한 사용자 지정 Amazon CloudSearch 도메인 요청에 서명

AWS SDK for PHP가 지원하는 범위를 초과하여 Amazon CloudSearch 도메인 요청을 사용자 지정할 수 있습니다. IAM 인증으로 보호되는 도메인에 사용자 지정 요청을 수행해야 하는 경우 SDK의 보안 인증 공급자 및 서명자를 사용하여 모든 PSR-7 요청에 서명할 수 있습니다.

예를 들어, Cloud Search 시작 안내서를 따라 IAM으로 보호되는 도메인을 3단계에 사용하려는 경우 다음과 같이 요청에 서명하고 요청을 실행해야 합니다.

다음 예제에서는 다음과 같은 작업을 하는 방법을 보여줍니다.

  • SignatureV4를 사용해 AWS 서명 프로토콜에 따라 요청에 서명합니다.

AWS SDK for PHP에 대한 모든 예제 코드는 GitHub에서 사용할 수 있습니다.

보안 인증 정보

예제 코드를 실행하기 전에 AWS SDK for PHP 버전 3을 AWS 사용하여 로 인증에 설명된 대로 AWS 보안 인증을 구성합니다. 그 다음 AWS SDK for PHP 버전 3 설치에 설명된 AWS SDK for PHP를 가져옵니다.

Amazon CloudSearch 도메인 요청에 서명

가져옵니다.

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

샘플 코드

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