

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

# 使用 适用于 PHP 的 AWS SDK 版本 3 来签署 Amazon OpenSearch Service 搜索请求
<a name="service_es-data-plane"></a>

Amazon OpenSearch Service 是一项托管服务，让用户能够轻松地部署、操作和扩展 Amazon OpenSearch Service（一个流行的开源搜索和分析引擎）。OpenSearch Service 支持直接访问 Amazon OpenSearch Service API。这意味着，开发人员可以使用他们熟悉的工具以及强大的安全选项。许多 Amazon OpenSearch Service 客户端都支持请求签名，但如果您使用的客户端不支持，则可以使用 适用于 PHP 的 AWS SDK 的内置凭证提供程序和签署人对任意 PSR-7 请求签名。

以下示例演示如何：
+ 使用 [SignatureV4](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.Signature.SignatureV4.html#_signRequest) 通过 AWS 签名协议签署请求。

适用于 PHP 的 AWS SDKGitHub[ 上提供了](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)的所有示例代码。

## 凭证
<a name="examplecredentials"></a>

运行示例代码之前，请配置您的 AWS 凭证，如 [AWS 使用 适用于 PHP 的 AWS SDK 版本 3 进行身份验证](credentials.md) 中所述。然后导入 适用于 PHP 的 AWS SDK，如 [安装 适用于 PHP 的 AWS SDK 版本 3](getting-started_installation.md) 中所述。

## 签署 OpenSearch Service 请求
<a name="signing-an-es-request"></a>

OpenSearch Service 使用[签名版本 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)。这意味着，您需要根据服务的签名名称（在此示例中为 `es`）和 OpenSearch Service 域的 AWS 区域来签署请求。在 Amazon Web Services 一般参考 中的 [AWS 区域和终端节点页面上](https://docs.aws.amazon.com/general/latest/gr/rande.html)可以找到 OpenSearch Service 支持区域的完整列表。但在此示例中，我们将针对 `us-west-2` 区域中的 OpenSearch Service 域来签署请求。

您需要提供凭证，可以通过 SDK 的默认凭证提供程序链或通过 [适用于 PHP 的 AWS SDK 版本 3 的凭证](guide_credentials.md)中介绍的任何形式的凭证来提供。您还将需要一个 [PSR-7 请求](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Psr.Http.Message.RequestInterface.html)（在下面的代码中假定名为 `$psr7Request`）。

```
// Pull credentials from the default provider chain
$provider = Aws\Credentials\CredentialProvider::defaultProvider();
$credentials = call_user_func($provider)->wait();

// Create a signer with the service's signing name and Region
$signer = new Aws\Signature\SignatureV4('es', 'us-west-2');

// Sign your request
$signedRequest = $signer->signRequest($psr7Request, $credentials);
```