

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用第 3 適用於 PHP 的 AWS SDK 版簽署 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 用戶端支援請求簽署，但如果您使用的用戶端不是 ，您可以使用 的內建憑證提供者和簽署者簽署任意 PSR-7 請求 適用於 PHP 的 AWS SDK。

下列範例示範如何：
+ 使用 [SignatureV4](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.Signature.SignatureV4.html#_signRequest) 使用 AWS 簽署通訊協定簽署請求。

您可以在 GitHub 上 適用於 PHP 的 AWS SDK 取得 的所有範例程式碼。 [ GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## 登入資料
<a name="examplecredentials"></a>

在執行範例程式碼之前，請先設定您的 AWS 登入資料，如中所述[AWS 使用第 3 適用於 PHP 的 AWS SDK 版向 驗證](credentials.md)。然後匯入 適用於 PHP 的 AWS SDK，如 中所述[安裝第 3 適用於 PHP 的 AWS SDK 版](getting-started_installation.md)。

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

OpenSearch Service 使用 [Signature 第 4 版](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)。這表示您需要針對服務的簽署名稱 （在此案例中`es`為 ) 和 OpenSearch Service 網域 AWS 的區域簽署請求。您可以在 的區域和端點頁面上找到 OpenSearch Service 支援的區域完整清單 Amazon Web Services 一般參考。 [AWS](https://docs.aws.amazon.com/general/latest/gr/rande.html)不過，在此範例中，我們會針對`us-west-2`區域中的 OpenSearch Service 網域簽署請求。

您需要提供登入資料，您可以使用 SDK 的預設提供者鏈結或第 [3 適用於 PHP 的 AWS SDK 版登入資料中所述的任何形式的登入資料](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);
```