

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# AWS SDK for PHP 버전 3을 사용하여 AWS 서비스 요청
<a name="making-service-requests"></a>

## SDK 요청 워크플로 개요
<a name="usage-summary"></a>

 AWS SDK for PHP 버전 3으로 작업하는 것은 전체적으로 일관된 패턴을 따릅니다 AWS 서비스. 기본 워크플로는 세 가지 주요 단계로 구성됩니다.

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` 파라미터에 포함시킬 수 있는 옵션은 [“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` 객체가 반환됩니다. 서비스의 원시 XML 또는 JSON 데이터를 반환하는 대신, SDK는 응답 데이터를 결합형 배열 구조로 강제 변환합니다. SDK는 특정 서비스 및 기본 응답 구조에 대한 지식을 기반으로 데이터의 일부 측면을 정규화합니다.

`AWS\Result` 객체에서 결합형 PHP 배열처럼 데이터에 액세스할 수 있습니다.

 **가져오기** 

```
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://en.wikipedia.org/wiki/Domain-specific_language)인 [JMesPath](http://jmespath.org/)와 통합됩니다. 결과 객체에는 결과에서 데이터를 더 선언적으로 추출하기 위해 사용할 수 있는 `search()` 메서드가 포함됩니다.

 **샘플 코드** 

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

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