

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS SDK for PHP バージョン 3 を使用した AWS のサービス リクエストの実行
<a name="making-service-requests"></a>

## SDK リクエストワークフローの概要
<a name="usage-summary"></a>

 AWS SDK for PHP バージョン 3 の操作は、すべての で一貫したパターンに従います AWS のサービス。基本的なワークフローには、主に 3 つのステップがあります。

1. [**サービスクライアントを作成する**](#creating-a-client) — 使用する の**クライアント**オブジェクトをインスタンス化 AWS のサービス します。

1. [**オペレーションの実行**](#executing-service-operations) — サービスの API のオペレーションに対応するクライアントでメソッドを呼び出します。

1. [**結果の処理**](#result-objects) — 成功時に返された配列のような**結果**オブジェクトを使用するか、失敗時にスローされた**例外**を処理します。

以下のセクションでは、これらの各ステップについて詳しく説明します。まずはサービスクライアントを作成および設定する方法を説明します。

## 基本的なサービスクライアントの作成
<a name="creating-a-client"></a>

クライアントのコンストラクタにオプションの連想配列を渡すことによって、クライアントを作成できます。

 **インポート** 

```
require 'vendor/autoload.php';

use Aws\S3\S3Client;
use Aws\Exception\AwsException;
```

 **サンプルコード** 

```
//Create an S3Client
$s3 = new Aws\S3\S3Client([
    'region' => 'us-east-2'  // Since version 3.277.10 of the SDK,
]);                          // the 'version' parameter defaults to 'latest'.
```

オプションの「version」パラメーターに関する情報は、「[設定オプション](guide_configuration.md#cfg-version)」のトピックに記載されています。

このクライアントには明示的に認証情報を**指定していない**ことがわかります。これは、SDK が[デフォルトの認証情報プロバイダーチェーン](guide_credentials_default_chain.md)を使用して認証情報を検索するためです。

すべての一般的なクライアント設定オプションについては、「[AWS SDK for PHP バージョン 3 のクライアントコンストラクタオプション](guide_configuration.md)」で詳しく説明されています。クライアントに指定されるオプションの配列は、作成するクライアントによって異なります。これらのカスタムクライアント設定オプションについては、各クライアントの [API ドキュメント](https://docs.aws.amazon.com/aws-sdk-php/latest/)で説明されています。

上記の例は基本的なクライアント作成を示していますが、特定の要件を満たすようにサービスクライアントをカスタマイズできます。コードによるサービスクライアントの設定の詳細については、「[AWS SDK for PHP バージョン 3 のコードでサービスクライアントを設定する](configuring-service-clients-code.md)」を参照してください。外部設定ファイルまたは環境変数を使用してサービスクライアントを設定する必要がある場合は、「[AWS SDK for PHP バージョン 3 のサービスクライアントを外部で設定する](configuring-service-clients-ext.md)」を参照してください。

## リクエストの実行
<a name="executing-service-operations"></a>

サービスリクエストは、クライアントオブジェクトにある同じ名前のメソッドを呼び出すことによって実行できます。たとえば、Amazon S3 の [PutObject オペレーション](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html)を実行するには、`Aws\S3\S3Client::putObject()` メソッドを呼び出します。

 **インポート** 

```
require 'vendor/autoload.php';

use Aws\S3\S3Client;
```

 **サンプルコード** 

```
// Use the us-east-2 region and latest version of each client.
$sharedConfig = [
    'profile' => 'default',
    'region' => 'us-east-2'
];

// Create an SDK class used to share configuration across clients.
$sdk = new Aws\Sdk($sharedConfig);

// Use an Aws\Sdk class to create the S3Client object.
$s3Client = $sdk->createS3();

// Send a PutObject request and get the result object.
$result = $s3Client->putObject([
    'Bucket' => 'amzn-s3-demo-bucket',
    'Key' => 'my-key',
    'Body' => 'this is the body!'
]);

// Download the contents of the object.
$result = $s3Client->getObject([
    'Bucket' => 'amzn-s3-demo-bucket',
    'Key' => 'my-key'
]);

// Print the body of the result by indexing into the result object.
echo $result['Body'];
```

クライアントで使用可能なオペレーションおよび入力と出力の構造体は、サービス記述ファイルに基づいて実行時に定義されます。クライアントを作成するときに、サービスモデルの `version` パラメータ (「*2006-03-01*」 や「*latest*」など) を指定しない場合、クライアントはデフォルトで最新バージョンになります。SDK は、提供されたバージョンに基づいて、対応する設定ファイルを見つけます。

`putObject()` などのオペレーションメソッドはすべて、オペレーションのパラメーターを表す連想配列である単一の引数を受け入れます。この配列の構造体 (および結果オブジェクトの構造体) は、SDK の API ドキュメント (たとえば、[putObject オペレーション](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putobject)の API ドキュメントを参照) で各オペレーションに対して定義されています。

### HTTP ハンドラーオプション
<a name="http-handler-options"></a>

特別な `@http` パラメーターを使用することによって、基になるハンドラーでリクエストがどのように実行されるかを調整することもできます。`@http` パラメータに含めることができるオプションは、[「http」クライアントオプション](guide_configuration.md#config-http)を使用してそのクライアントをインスタンス化するときに設定できるオプションと同じです。

```
// Send the request through a proxy
$result = $s3Client->putObject([
    'Bucket' => 'amzn-s3-demo-bucket',
    'Key'    => 'my-key',
    'Body'   => 'this is the body!',
    '@http'  => [
        'proxy' => 'http://192.168.16.1:10'
    ]
]);
```

## 結果オブジェクトの使用
<a name="result-objects"></a>

オペレーションの実行が正常に終了すると、`Aws\Result` オブジェクトが返されます。SDK では、サービスの RAW XML データまたは RAW JSON データを返すのではなく、レスポンスデータが連想配列の構造体に配置されます。特定のサービスおよび基になるレスポンス構造体に関する知識に基づいて、データの一部の側面が正規化されます。

PHP 連想配列などの `AWS\Result` オブジェクトからデータにアクセスできます。

 **インポート** 

```
require 'vendor/autoload.php';
use Aws\S3\S3Client;
use Aws\Exception\AwsException;
```

 **サンプルコード** 

```
// Use the us-east-2 region and latest version of each client.
$sharedConfig = [
    'profile' => 'default',
    'region' => 'us-east-2',
];

// Create an SDK class used to share configuration across clients.
$sdk = new Aws\Sdk($sharedConfig);

// Use an Aws\Sdk class to create the S3Client object.
$s3 = $sdk->createS3();
$result = $s3->listBuckets();
foreach ($result['Buckets'] as $bucket) {
    echo $bucket['Name'] . "\n";
}

// Convert the result object to a PHP array
$array = $result->toArray();
```

結果オブジェクトの内容は、実行されたオペレーションやサービスのバージョンによって異なります。各 API オペレーションの結果の構造体は、各オペレーションの API ドキュメントに記載されています。

SDK には、JSON データや PHP 配列の検索および操作に使用される [DSL](http://jmespath.org/) である [JMESPath](http://en.wikipedia.org/wiki/Domain-specific_language) が組み込まれています。結果オブジェクトには、より詳細な宣言によって結果からデータを抽出できる `search()` メソッドが含まれています。

 **サンプルコード** 

```
$s3 = $sdk->createS3();
$result = $s3->listBuckets();
```

```
$names = $result->search('Buckets[].Name');
```