版本 3 具有 Amazon Elasticsearch Service 搜索请求 AWS SDK for PHP 签名 - 适用于 PHP 的 AWS 开发工具包
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

版本 3 具有 Amazon Elasticsearch Service 搜索请求 AWS SDK for PHP 签名

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

以下示例演示如何:

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

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

Credentials

在运行示例代码之前,您需要配置 AWS 凭证,如适用于 PHP 的 AWS 开发工具包版本 3 的凭证中所述。然后导入AWS SDK for PHP,如适用于 PHP 的 AWS 开发工具包版本 3 的基本使用模式中所述。

为 Amazon ES 请求签名

Amazon ES 使用签名版本 4。这意味着,您需要根据服务的签名名称(在此示例中为 es)和 Amazon ES 域的 AWS 区域来对请求签名。在 Amazon Web Services General Reference 中的 AWS 区域和终端节点页面上可以找到 Amazon ES 支持的区域的完整列表。但在本示例中,我们将针对 Amazon ES 域中的 us-west-2 区域对请求签名。

您需要提供凭证,可以通过开发工具包的默认凭证提供程序链或通过适用于 PHP 的 AWS 开发工具包版本 3 的凭证中介绍的任何形式的凭证来提供。您还将需要一个 PSR-7 请求(在下面的代码中假定名为 $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);