aws php环境变量,版本 3

2022-04-27 00:00:00 专区 示例 请求 自定义 签名

AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

版本 3 具有 Amazon CloudSearch 对自定义 AWS SDK for PHP 域请求进行签名

可以在AWS SDK for PHP支持的范围之外对 Amazon CloudSearch 域请求进行自定义。当您需要向受 IAM 身份验证保护的域发出自定义请求时,可以使用开发工具包的凭证提供程序和签署人对任何

PSR-7 请求进行签名。

例如,如果您要按照 Cloud Search 的入门指南操作,并想在第 3 步中使用受 IAM 保护的域,则需要按以下方式签署并执行请求。

以下示例演示如何:

使用 SignatureV4 通过 AWS 签名协议对请求签名。

版本 3 的所有示例代码在 AWS SDK for PHP 上的此处提供。GitHub

Credentials

签署 CSlong 域请求

导入

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)

{undefined

$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) {undefined

$message .= 'Search results:' . "\n";

foreach($results->hits->hit as $hit)

{undefined

$message .= $hit->fields->title . "\n";

}

} else {undefined

$message .= 'No search results.';

}

return $message;

}

function searchADomain()

{undefined

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

相关文章