适用于 PHP 的 AWS 开发工具包
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

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 签名协议签署请求。

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

凭证

在运行示例代码之前,您需要配置 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);