AWS SDK for PHP 버전 3을 위한 구성 - AWS SDK for PHP

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

AWS SDK for PHP 버전 3을 위한 구성

클라이언트 생성자를 클라이언트 생성자에 제공하거나 Aws\Sdk 클래스에 제공할 수 있습니다. 특정 유형의 클라이언트에 제공되는 옵션의 배열은 어떤 클라이언트를 생성하고 있는지에 따라 다를 수 있습니다. 이러한 사용자 지정 클라이언트 구성 옵션에 대해서는 각 클라이언트의 API 설명서에서 설명합니다.

일부 구성 옵션은 환경 변수 또는 AWS 구성 파일을 기반으로 기본값을 확인하고 사용합니다. 기본적으로 확인하는 구성 파일은 홈 디렉터리(일반적으로 ~/.aws/config)에 있는 .aws/config입니다. 그러나 AWS_CONFIG_FILE 환경 변수를 사용하여 기본 구성 파일 위치를 설정할 수 있습니다. 예를 들어 이는 open_basedir가 있는 특정 디렉터리에 대한 파일 액세스를 제한하는 경우에 유용할 수 있습니다.

공유 AWS configcredentials 파일의 위치 및 형식에 대한 자세한 내용은 AWS SDK 및 도구 참조 안내서 구성을 참조하세요.

AWS 구성 파일에서 또는 환경 변수로 설정할 수 있는 모든 글로벌 구성 설정에 대한 자세한 내용은 AWS SDK 및 도구 참조 안내서구성 및 인증 설정 참조를 참고하세요.

다음 예제에서는 옵션을 Amazon S3 클라이언트 생성자에 전달하는 방법을 보여 줍니다.

use Aws\S3\S3Client; $options = [ 'region' => 'us-west-2', 'version' => '2006-03-01', 'signature_version' => 'v4' ]; $s3Client = new S3Client($options);

클라이언트 만들기에 대한 자세한 내용은 기본 사용 설명서를 참조하세요.

api_provider

유형

callable

유형, 서비스 및 버전 인수를 받아 해당 구성 데이터의 배열을 반환하는 PHP collable입니다. 유형 값은 api, waiter, paginator 중 하나일 수 있습니다.

기본적으로 SDK는 SDK의 Aws\Api\FileSystemApiProvider 폴더에서 API 파일을 로드하는 src/data의 인스턴스를 사용합니다.

보안 인증 정보

유형

array|Aws\CacheInterface|Aws\Credentials\CredentialsInterface|bool|callable

특정 보안 인증 인스턴스에 사용할 Aws\Credentials\CredentialsInterface 객체를 전달합니다. 다음은 IAM Identity Center 보안 인증 공급자를 사용해야 한다고 지정합니다. 이 공급자를 SSO 보안 인증 공급자라고도 합니다.

$credentials = Aws\Credentials\CredentialProvider::sso('profile default'); $s3 = new Aws\S3\S3Client([ 'region' => 'us-west-2', 'credentials' => $credentials ]);

이름이 지정된 프로필을 사용하는 경우 이전 예제에서 프로필 이름을 default으로 대체하세요. 이름이 지정된 프로필을 설정하는 방법에 대한 자세한 내용은 AWS SDK 및 도구 참조 안내서공유 configcredentials 파일을 참조하세요.

사용할 보안 인증 공급자를 지정하지 않고 보안 인증 공급자 체인을 사용하는 경우 인증 실패로 인한 오류 메시지는 일반적으로 일반적입니다. 보안 인증이 유효한지 확인하는 소스 목록의 마지막 공급자로부터 생성된 것으로, 사용하려는 공급자가 아닐 수도 있습니다. 사용할 보안 인증 공급자를 지정하면 표시되는 오류 메시지는 해당 공급자에서만 발생하므로 더 유용하고 관련성이 높습니다. 보안 인증을 확인하는 소스 체인에 대해 자세히 알아보려면 AWS SDK 및 도구 참조 가이드의 보안 인증 공급자 체인을 참조하세요.

null 보안 인증을 사용하고 요청에 서명하지 않으려면 false를 전달합니다.

$s3 = new Aws\S3\S3Client([ 'region' => 'us-west-2', 'credentials' => false ]);

함수를 사용하여 보안 인증을 생성하려면 collable 보안 인증 공급자 함수를 전달합니다.

use Aws\Credentials\CredentialProvider; // Only load credentials from environment variables $provider = CredentialProvider::env(); $s3 = new Aws\S3\S3Client([ 'region' => 'us-west-2', 'credentials' => $provider ]);

여러 프로세스 간의 기본 공급자 체인에서 반환된 값을 캐시하려면 Aws\CacheInterface의 인스턴스에 캐시된 보안 인증을 전달합니다.

use Aws\Credentials\CredentialProvider; use Aws\PsrCacheAdapter; use Symfony\Component\Cache\Adapter\FilesystemAdapter; $cache = new PsrCacheAdapter(new FilesystemAdapter); $provider = CredentialProvider::defaultProvider(); $cachedProvider = CredentialProvider::cache($provider, $cache); $s3 = new Aws\S3\S3Client([ 'region' => 'us-west-2', 'credentials' => $cachedProvider ]);

AWS SDK for PHP 버전 3의 보안 인증 가이드에서 보안 인증을 클라이언트에 제공하는 방법에 대한 자세한 내용을 참조할 수 있습니다.

참고

보안 인증은 사용될 때 지연 로드되고 확인됩니다.

debug

유형

bool|array

각 전송에 대한 디버그 정보를 출력합니다. 디버그 정보에는 트랜잭션이 준비되어 네트워크를 통해 전송될 때 트랜잭션의 각 상태 변경에 대한 정보가 포함됩니다. 클라이언트에 사용되는 특정 HTTP 핸들러에 대한 정보도 디버그 출력에 포함됩니다(예: cURL 출력 디버그).

요청을 정송할 때 디버그 정보를 표시하려면 true로 설정합니다.

$s3 = new Aws\S3\S3Client([ 'region' => 'us-west-2', 'debug' => true ]); // Perform an operation to see the debug output $s3->listBuckets();

또한 다음 키와 함께 결합형 배열을 제공할 수 있습니다.

logfn (collable)

로그 메시지에서 호출되는 함수입니다. 기본적으로 PHP의 echo 함수가 사용됩니다.

stream_size (int)

스트림 크기가 이 숫자보다 크면 스트림 데이터가 로깅되지 않습니다. 스트림 데이터를 로깅하지 않으려면 0으로 설정합니다.

scrub_auth (bool)

로깅된 메시지에서 인증 데이터의 스크러빙을 비활성화하려면 false로 설정합니다(이렇게 하면 AWS 액세스 키 ID와 서명이 logfn에 전달됨).

http (bool)

하위 수준 HTTP 핸들러(예: 상세 cURL 출력)의 "디버그" 기능을 비활성화하려면 false로 설정합니다.

auth_headers (array)

매핑된 값을 교체할 값으로 교체하려고 하는 헤더의 키-값 매핑으로 설정합니다. 이러한 값은 scrub_authtrue로 설정하지 않는 한 사용되지 않습니다.

auth_strings (array)

교체에 매핑할 정규식의 키-값 매핑으로 설정합니다. 이 값은 scrub_authtrue로 설정된 경우 인증 데이터 스크러버에 사용됩니다.

$s3 = new Aws\S3\S3Client([ 'region' => 'us-west-2', 'debug' => [ 'logfn' => function ($msg) { echo $msg . "\n"; }, 'stream_size' => 0, 'scrub_auth' => true, 'http' => true, 'auth_headers' => [ 'X-My-Secret-Header' => '[REDACTED]', ], 'auth_strings' => [ '/SuperSecret=[A-Za-z0-9]{20}/i' => 'SuperSecret=[REDACTED]', ], ] ]); // Perform an operation to see the debug output $s3->listBuckets();
참고

이 옵션은 http 디버그 옵션에서 생성된 기본 HTTP 핸들러 정보도 출력합니다. 디버그 출력은 AWS SDK for PHP에서 문제를 진단할 때 매우 유용합니다. SDK에서 문제를 열 때 격리된 장애 사례에 대한 디버그 출력을 제공하세요.

stats

유형

bool|array

SDK 작업에서 반환된 오류 및 결과에 전송 통계를 바인딩합니다.

전송된 요청에 대한 전송 통계를 수집하려면 true로 설정합니다.

$s3 = new Aws\S3\S3Client([ 'region' => 'us-west-2', 'stats' => true ]); // Perform an operation $result = $s3->listBuckets(); // Inspect the stats $stats = $result['@metadata']['transferStats'];

또한 다음 키와 함께 결합형 배열을 제공할 수 있습니다.

retries (bool)

시도된 재시도에 대한 보고를 활성화하려면 true로 설정합니다. 기본적으로 재시도 통계가 수집되고 반환됩니다.

http (bool)

하위 수준 HTTP 어댑터에서 통계를 true 수집할 수 있도록 설정합니다 (예: 반환된 GuzzleHttpTransferStats 값). 이 항목이 효과를 나타내려면 HTTP 핸들러가 __on_transfer_stats 옵션을 지원해야 합니다. HTTP 통계는 결합형 배열의 인덱싱된 배열로 반환되며, 각 결합형 배열에는 클라이언트의 HTTP 핸들러에서 요청에 대해 반환된 전송 통계가 포함됩니다. 기본 설정은 "Disable"입니다.

요청을 재시도한 경우 첫 번째 요청에 대한 통계가 포함된 $result['@metadata']['transferStats']['http'][0], 두 번째 요청에 대한 통계가 포함된 $result['@metadata']['transferStats']['http'][1] 등으로 각 요청의 전송 통계가 반환됩니다.

timer (bool)

작업에 소비된 총 벽 시계(wall clock) 시간(초)을 보고하는 명령 타이머를 활성화하려면 true로 설정합니다. 기본 설정은 "Disable"입니다.

$s3 = new Aws\S3\S3Client([ 'region' => 'us-west-2', 'stats' => [ 'retries' => true, 'timer' => false, 'http' => true, ] ]); // Perform an operation $result = $s3->listBuckets(); // Inspect the HTTP transfer stats $stats = $result['@metadata']['transferStats']['http']; // Inspect the number of retries attempted $stats = $result['@metadata']['transferStats']['retries_attempted']; // Inspect the total backoff delay inserted between retries $stats = $result['@metadata']['transferStats']['total_retry_delay'];

엔드포인트

유형

string

웹 서비스의 전체 URI입니다. 이 항목은 AWS Elemental MediaConvert와 같이 계정별 엔드포인트를 사용하는 서비스에 필요합니다. 이러한 서비스의 경우 describeEndpoints 메서드를 사용하여 이 엔드포인트를 요청하세요.

이 항목은 사용자 지정 엔드포인트에 연결할 때만 필요합니다(예: Amazon S3 로컬 버전 또는 Amazon DynamoDB Local).

다음은 Amazon DynamoDB Local에 연결하는 예제입니다.

$client = new Aws\DynamoDb\DynamoDbClient([ 'version' => '2012-08-10', 'region' => 'us-east-1', 'endpoint' => 'http://localhost:8000' ]);

사용 가능한 AWS 리전과 엔드포인트의 목록은 AWS 리전 및 엔드포인트를 참조하세요.

endpoint_provider

유형

Aws\EndpointV2\EndpointProviderV2|callable

“서비스” 및 “지역” 키를 포함한 옵션 해시를 허용하는 EndpointProvider V2 또는 PHP 콜러블의 선택적 인스턴스입니다. 이 항목은 NULL 또는 엔드포인트 데이터의 해시를 반환합니다. 여기서 "엔드포인트" 키는 필수입니다.

다음은 최소 엔드포인트 공급자를 생성하는 방법을 보여주는 예제입니다.

$provider = function (array $params) { if ($params['service'] == 'foo') { return ['endpoint' => $params['region'] . '.example.com']; } // Return null when the provider cannot handle the parameters return null; });

endpoint_discovery

유형

array|Aws\CacheInterface|Aws\EndpointDiscovery\ConfigurationInterface|callable

엔드포인트 검색은 엔드포인트 검색을 지원하는 서비스 API일 경우 정확한 엔드포인트를 찾아 연결합니다. 엔드포인트 검색을 지원하지만 필요하지 않은 서비스라면 클라이언트 생성 시 endpoint_discovery를 비활성화하세요. 서비스가 엔드포인트 검색을 지원하지 않는다면 이 구성은 무시됩니다.

Aws\EndpointDiscovery\ConfigurationInterface

서비스가 지정하는 작업에 적합한 서비스 API 엔드포인트에 자동으로 연결해주는 구성 공급자(선택 사항)입니다.

Aws\EndpointDiscovery\Configuration 객체는 엔드포인트 검색의 활성화 여부를 나타내는 부울 값("enabled")과 엔드포인트 캐시의 최대 키 수를 나타내는 정수("cache_limit")를 포함해 두 가지 옵션을 허용합니다.

클라이언트가 생성될 때마다 Aws\EndpointDiscovery\Configuration 객체를 전달하여 엔드포인트 검색을 위한 특정 구성을 사용하세요.

use Aws\EndpointDiscovery\Configuration; use Aws\S3\S3Client; $enabled = true; $cache_limit = 1000; $config = new Aws\EndpointDiscovery\Configuration ( $enabled, $cache_limit ); $s3 = new Aws\S3\S3Client([ 'region' => 'us-east-2', 'endpoint_discovery' => $config, ]);

다수의 프로세스에서 엔드포인트 검색으로 반환되는 값을 캐싱하려면 Aws\CacheInterface 인스턴스를 전달합니다.

use Aws\DoctrineCacheAdapter; use Aws\S3\S3Client; use Doctrine\Common\Cache\ApcuCache; $s3 = new S3Client([ 'region' => 'us-west-2', 'endpoint_discovery' => new DoctrineCacheAdapter(new ApcuCache), ]);

배열을 엔드포인트 검색에 전달합니다.

use Aws\S3\S3Client; $s3 = new S3Client([ 'region' => 'us-west-2', 'endpoint_discovery' => [ 'enabled' => true, 'cache_limit' => 1000 ], ]);

핸들러

유형

callable

명령 객체 및 요청 객체를 받아 GuzzleHttp\Promise\PromiseInterface 객체와 함께 실행되거나 Aws\ResultInterface과 함께 거부되는 promise(Aws\Exception\AwsException)를 반환하는 핸들러입니다. 핸들러는 다음 핸들러를 받지 않습니다. 왜나하면 다음 핸들러는 터미널이며 명령을 이행할 것이기 때문입니다. 핸들러를 제공하지 않으면 기본 Guzzle 핸들러가 사용됩니다.

Aws\MockHandler를 사용하여 모의(mock) 결과를 반환하거나 모의(mock) 예외를 발생할 수 있습니다. 결과 또는 예외를 대기열에 넣으면 FIFO 순서대로 대기열에서 MockHandler 빠집니다.

use Aws\Result; use Aws\MockHandler; use Aws\DynamoDb\DynamoDbClient; use Aws\CommandInterface; use Psr\Http\Message\RequestInterface; use Aws\Exception\AwsException; $mock = new MockHandler(); // Return a mocked result $mock->append(new Result(['foo' => 'bar'])); // You can provide a function to invoke; here we throw a mock exception $mock->append(function (CommandInterface $cmd, RequestInterface $req) { return new AwsException('Mock exception', $cmd); }); // Create a client with the mock handler $client = new DynamoDbClient([ 'region' => 'us-east-1', 'handler' => $mock ]); // Result object response will contain ['foo' => 'bar'] $result = $client->listTables(); // This will throw the exception that was enqueued $client->listTables();

http

유형

array

SDK에서 생성된 HTTP 요청 및 전송에 적용되는 HTTP 옵션의 배열로 설정합니다.

SDK는 다음과 같은 구성 옵션을 지원합니다.

cert

유형

string|array

PEM 형식의 클라이언트 측 인증서를 지정합니다.

  • 인증서 파일에 대한 경로를 문자열로 설정합니다.

use Aws\S3\S3Client; $client = new S3Client([ 'region' => 'us-west-2', 'http' => ['cert' => '/path/to/cert.pem'] ]);
  • 경로 및 암호를 포함한 배열로 설정합니다.

use Aws\S3\S3Client; $client = new S3Client([ 'region' => 'us-west-2', 'http' => [ 'cert' => ['/path/to/cert.pem', 'password'] ] ]);

connect_timeout

서버에 연결하려고 시도하는 동안 대기할 시간(초)을 설명하는 부동 소수점입니다. 무한정으로 대기하려면 0을 사용합니다(기본 동작).

use Aws\DynamoDb\DynamoDbClient; // Timeout after attempting to connect for 5 seconds $client = new DynamoDbClient([ 'region' => 'us-west-2', 'http' => [ 'connect_timeout' => 5 ] ]);

debug

유형

bool|resource

기본 HTTP 핸들러에 디버그 정보를 출력하도록 지시합니다. 다른 HTTP 핸들러에서 제공되는 디버그 정보는 다를 수 있습니다.

  • 디버그 출력을 STDOUT에 쓰려면 true를 전달합니다.

  • 디버그 출력을 특정 PHP 스트림 리소스에 쓰려면 resource에서 반환되는 fopen를 전달합니다.

decode_content

유형

bool

기본 HTTP 핸들러에 압축된 응답의 본문을 inflate하도록 지시합니다. 이 항목을 활성화하지 않으면 압축된 응답 본문이 GuzzleHttp\Psr7\InflateStream으로 inflate될 수 있습니다.

참고

SDK의 기본 HTTP 핸들러에서 콘텐츠 디코딩이 기본적으로 활성화됩니다. 이전 버전과 호환성을 유지하기 위해 이 기본값을 변경할 수 없습니다. Amazon S3에서 압축된 파일을 저장하는 경우 S3 클라이언트 수준에서 콘텐츠 디코딩을 비활성화하는 것이 좋습니다.

use Aws\S3\S3Client; use GuzzleHttp\Psr7\InflateStream; $client = new S3Client([ 'region' => 'us-west-2', 'http' => ['decode_content' => false], ]); $result = $client->getObject([ 'Bucket' => 'my-bucket', 'Key' => 'massize_gzipped_file.tgz' ]); $compressedBody = $result['Body']; // This content is still gzipped $inflatedBody = new InflateStream($result['Body']); // This is now readable

delay

유형

int

요청을 전송하기 전에 지연할 시간(밀리초)입니다. 이 항목은 요청을 다시 시도하기 전에 시간을 지연하기 위해 주로 사용됩니다.

expect

유형

bool|string

이 옵션은 기본 HTTP 핸들러로 전달됩니다. 기본적으로 요청 본문이 1MB를 초과하면 Expect: 100-계속 헤더가 설정됩니다. true 또는 false는 모든 요청에서 이 헤더를 각각 활성화하거나 비활성화합니다. 정수가 사용되는 경우에는 이 설정을 초과하는 본문의 요청만 헤더를 사용합니다. 정수로 사용될 때 Expect 헤더가 전송되는 본문 크기는 알 수 없습니다.

주의

Expect 헤더를 비활성화하면 서비스가 인증 또는 기타 오류를 반환하지 못합니다. 따라서 이 옵션은 신중하게 구성해야 합니다.

progress

유형

callable

전송을 진행할 때 호출할 함수를 정의합니다. 이 함수에 사용할 수 있는 인수는 다음과 같습니다.

  1. 다운로드할 총 예상 바이트 수입니다.

  2. 지금까지 다운로드된 바이트 수입니다.

  3. 업로드할 예상 바이트 수입니다.

  4. 지금까지 업로드된 바이트 수입니다.

use Aws\S3\S3Client; $client = new S3Client([ 'region' => 'us-west-2' ]); // Apply the http option to a specific command using the "@http" // command parameter $result = $client->getObject([ 'Bucket' => 'my-bucket', 'Key' => 'large.mov', '@http' => [ 'progress' => function ($expectedDl, $dl, $expectedUl, $ul) { printf( "%s of %s downloaded, %s of %s uploaded.\n", $expectedDl, $dl, $expectedUl, $ul ); } ] ]);

proxy

유형

string|array

proxy 옵션을 사용하여 프록시를 통해 AWS 서비스에 연결할 수 있습니다.

  • 프록시에 연결하기 위한 문자열 값을 모든 유형의 URI에 제공합니다. 프록시 문자열 값에는 체계, 사용자 이름 및 암호가 포함될 수 있습니다. 예를 들어 "http://username:password@192.168.16.1:10"입니다.

  • 키가 URI의 체계이고 값이 제공된 URI에 대한 프록시인 프록시 설정의 결합형 배열을 제공합니다(즉, "http" 및 "https" 엔드포인트에 다른 프록시를 제공할 수 있음).

use Aws\DynamoDb\DynamoDbClient; // Send requests through a single proxy $client = new DynamoDbClient([ 'region' => 'us-west-2', 'http' => [ 'proxy' => 'http://192.168.16.1:10' ] ]); // Send requests through a different proxy per scheme $client = new DynamoDbClient([ 'region' => 'us-west-2', 'http' => [ 'proxy' => [ 'http' => 'tcp://192.168.16.1:10', 'https' => 'tcp://192.168.16.1:11', ] ] ]);

HTTP_PROXY 환경 변수를 사용하여 "http" 프로토콜에 특정한 프록시를 구성할 수 있으며 HTTPS_PROXY 환경 변수를 사용하여 "https"에 특정한 프록시를 구성할 수 있습니다.

sink

유형

resource|string|Psr\Http\Message\StreamInterface

sink 옵션은 작업의 응답 데이터가 다운로드되는 위치를 제어합니다.

  • 응답 본문을 PHP 스트림에 다운로드하려면 resource에서 반환되는 fopen를 제공합니다.

  • 응답 본문을 디스크의 특정 파일에 다운로드하려면 디스크의 파일에 대한 경로를 string 값으로 제공합니다.

  • 응답 본문을 특정 PSR 스트림 객체에 다운로드하려면 Psr\Http\Message\StreamInterface을 제공합니다.

참고

기본적으로 SDK는 응답 본문을 PHP 임시 스트림에 다운로드합니다. 본문 크기가 2MB에 도달할 때까지 데이터가 메모리에 유지되며, 이 크기부터는 데이터가 디스크의 임시 파일에 기록됩니다.

synchronous

유형

bool

synchronous 옵션은 사용자가 결과를 차단하려고 한다고 기본 HTTP 핸들러에 알립니다.

스트림

유형

bool

모두 사전에 다운로드하는 대신 웹 서비스에서 응답의 응답 본문을 스트리밍하려고 한다고 기본 HTTP 핸들러에 알리려면 true로 설정합니다. 예를 들어, Amazon S3 스트림 래퍼 클래스에서 이 옵션을 이용하여 데이터가 스트리밍되도록 보장합니다.

제한 시간

유형

float

요청의 제한 시간(초)을 설명하는 부동 소수점입니다. 무한정으로 대기하려면 0을 사용합니다(기본 동작).

use Aws\DynamoDb\DynamoDbClient; // Timeout after 5 seconds $client = new DynamoDbClient([ 'region' => 'us-west-2', 'http' => [ 'timeout' => 5 ] ]);

verify

유형

bool|string

verify http 옵션을 사용하여 SDK의 피어 SSL/TLS 인증서 확인 동작을 사용자 지정할 수 있습니다.

  • SSL/TLS 피어 인증서 확인을 활성화하고 운영 체제에서 제공된 기본 CA 번들을 사용하려면 true로 설정합니다.

  • 피어 인증서 확인을 비활성화하려면 false로 설정합니다. (이 설정은 안전하지 않음)

  • 사용자 지정 CA 번들을 사용하여 확인을 활성화하기 위해 CA 인증서 번들에 대한 경로를 제공하려면 문자열로 설정합니다.

시스템에 대한 CA 번들을 찾을 수 없고 오류를 수신하는 경우 CA 번들에 대한 경로를 SDK에 제공합니다. 특정 CA 번들이 필요 없는 경우 Mozilla는 여기에서 다운로드할 수 있는 일반적으로 사용되는 CA 번들을 제공합니다(이 번들은 cURL 유지 관리자가 유지 관리함). 디스크에서 사용 가능한 CA 번들이 있으면 파일에 대한 경로를 가리키도록 openssl.cafile PHP .ini 설정을 설정하여 verify 요청 옵션을 생략할 수 있습니다. cURL 웹 사이트에서 SSL 인증서에 대한 자세한 내용을 참조할 수 있습니다.

use Aws\DynamoDb\DynamoDbClient; // Use a custom CA bundle $client = new DynamoDbClient([ 'region' => 'us-west-2', 'http' => [ 'verify' => '/path/to/my/cert.pem' ] ]); // Disable SSL/TLS verification $client = new DynamoDbClient([ 'region' => 'us-west-2', 'http' => [ 'verify' => false ] ]);

http_handler

유형

callable

http_handler 옵션은 SDK를 다른 HTTP 클라이언트와 통합하기 위해 사용됩니다. http_handler 옵션은 명령에 적용되는 Psr\Http\Message\RequestInterface 객체 및 http 옵션 배열을 받아 GuzzleHttp\Promise\PromiseInterface 객체를 통해 이행되거나 다음 예외 데이터의 배열을 통해 거부되는 Psr\Http\Message\ResponseInterface 객체를 반환하는 함수입니다.

  • exception - (\Exception) 발생한 예외입니다.

  • response - (Psr\Http\Message\ResponseInterface) 수신된 응답입니다(있는 경우).

  • connection_error - (bool) 오류를 연결 오류로 표시하려면 true로 설정합니다. 이 값을 true로 설정하면 필요한 경우 SDK에서 작업을 자동으로 재시도할 수 있습니다.

SDK는 제공된 http_handlerhandler 객체로 래핑하여 제공된 http_handler를 일반 Aws\WrappedHttpHandler 옵션으로 자동으로 변환합니다.

기본적으로 SDK는 Guzzle을 HTTP 핸들러로 사용합니다. 여기에 다른 HTTP 핸들러를 제공하거나 Guzzle 클라이언트에 자체 사용자 지정 옵션을 제공할 수 있습니다.

TLS 버전 설정

한 가지 사용 사례는 Curl이 사용자 환경에 설치되어 있다고 가정할 때 Curl과 함께 Guzzle에서 사용하는 TLS 버전을 설정하는 것입니다. 지원되는 TLS 버전에 대한 Curl 버전 제약 조건에 유의하세요. 기본적으로 최신 버전이 사용됩니다. TLS 버전이 명시적으로 설정되어 있고 원격 서버가 이 버전을 지원하지 않으면 이전 TLS 버전이 사용되지 않고 오류가 발생합니다.

지정된 클라이언트 작업에 사용되고 있는 TLS 버전은 debug 클라이언트 옵션을 true로 설정하고 SSL 연결 출력을 검사하여 확인할 수 있습니다. 해당 행은 다음과 같을 것입니다. SSL connection using TLSv1.2

Guzzle 6으로 TLS 1.2를 설정하는 예제:

use Aws\DynamoDb\DynamoDbClient; use Aws\Handler\GuzzleV6\GuzzleHandler; use GuzzleHttp\Client; $handler = new GuzzleHandler( new Client([ 'curl' => [ CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1_2 ] ]) ); $client = new DynamoDbClient([ 'region' => 'us-west-2', 'http_handler' => $handler ]);
참고

http_handler 옵션은 제공된 모든 handler 옵션을 대체합니다.

profile

유형

string

“profile” 옵션은 홈 디렉터리의 보안 인증 파일 (일반적으로 ~/.aws/credentials)에서 AWS 보안 인증을 생성할 때 사용할 프로필을 지정합니다. 이 설정은 AWS_PROFILE 환경 변수를 재정의합니다.

참고

“프로필” 옵션을 지정하면 "credentials" 옵션이 무시되고 AWS 구성 파일의 보안 인증 관련 (일반적으로 ~/.aws/config)은 무시됩니다.

// Use the "production" profile from your credentials file $ec2 = new Aws\Ec2\Ec2Client([ 'version' => '2014-10-01', 'region' => 'us-west-2', 'profile' => 'production' ]);

AWS SDK for PHP 버전 3의 보안 인증 및 .ini 파일 형식 구성에 대한 자세한 내용은 버전 3의 보안 인증을 참조하세요.

region

유형

string

필수

true

연결할 AWS 리전입니다. 사용 가능한 리전의 목록은 AWS 리전 및 엔드포인트를 참조하세요.

// Set the Region to the EU (Frankfurt) Region $s3 = new Aws\S3\S3Client([ 'region' => 'eu-central-1', 'version' => '2006-03-01' ]);

retries

유형

int|array|Aws\CacheInterface|Aws\Retry\ConfigurationInterface|callable

기본값

int(3)

클라이언트에 대한 재시도 모드와 허용된 최대 재시도 횟수를 구성합니다. 재시도를 비활성화하려면 0을 전달합니다.

세 가지 재시도 모드는 다음과 같습니다.

  • legacy- 기본 레거시 재시도 구현

  • standard- 성공할 것 같지 않은 재시도를 방지하기 위해 재시도 할당량 시스템을 추가합니다

  • adaptive - 표준 모드를 기반으로 빌드하여 클라이언트 측 속도 제한기 추가. 이 모드는 실험적인 것으로 간주됩니다.

재시도 구성은 각 요청에 사용할 모드와 최대 시도 횟수로 구성됩니다. 구성은 다음과 같은 우선 순위에 따라 서로 다른 두 위치에서 설정할 수 있습니다.

우선 순위

재시도 구성의 우선 순위는 다음과 같습니다(1이 2-3보다 우선 적용).

  1. 클라이언트 구성 옵션

  2. 환경 변수

  3. AWS공유 구성 파일

환경 변수

  • AWS_RETRY_MODE - legacy, standard 또는 adaptive로 설정

  • AWS_MAX_ATTEMPTS - 요청당 최대 시도 횟수에 대해 정수 값으로 설정

공유 구성 파일 키

  • retry_mode - legacy, standard 또는 adaptive로 설정

  • max_attempts - 요청당 최대 시도 횟수에 대해 정수 값으로 설정

클라이언트 구성

다음 예제에서는 Amazon DynamoDB 클라이언트에 대한 재시도를 비활성화합니다.

// Disable retries by setting "retries" to 0 $client = new Aws\DynamoDb\DynamoDbClient([ 'version' => '2012-08-10', 'region' => 'us-west-2', 'retries' => 0 ]);

다음 예제에서는 정수를 전달합니다. 기본값은 전달된 재시도 횟수가 있는 legacy 모드입니다.

// Disable retries by setting "retries" to 0 $client = new Aws\DynamoDb\DynamoDbClient([ 'version' => '2012-08-10', 'region' => 'us-west-2', 'retries' => 6 ]);
Aws\Retry\Configuration 객체에는 두 개의 파라미터, 즉 재시도 모드와

요청당 최대 시도 횟수에 대한 정수를 사용할 수 있습니다. 이 예제에서는 재시도 구성에 대해

Aws\Retry\Configuration 객체를 전달합니다.

use Aws\EndpointDiscovery\Configuration; use Aws\S3\S3Client; $enabled = true; $cache_limit = 1000; $config = new Aws\Retry\Configuration('adaptive', 10); $s3 = new Aws\S3\S3Client([ 'region' => 'us-east-2', 'retries' => $config, ]);

이 예제에서는 재시도 구성에 대해 배열을 전달합니다.

use Aws\S3\S3Client; $s3 = new S3Client([ 'region' => 'us-west-2', 'retries' => [ 'mode' => 'standard', 'max_attempts' => 7 ], ]);

이 예제에서는 Aws\CacheInterface의 인스턴스를 전달하여 기본 재시도 구성 공급자가 반환한 값을 캐시합니다.

use Aws\DoctrineCacheAdapter; use Aws\S3\S3Client; use Doctrine\Common\Cache\ApcuCache; $s3 = new S3Client([ 'region' => 'us-west-2', 'endpoint_discovery' => new DoctrineCacheAdapter(new ApcuCache), ]);

scheme

유형

string

기본값

string(5) "https"

연결할 때 사용할 URI 체계입니다. 기본적으로 SDK는 "https" 엔드포인트를 사용합니다(즉, SSL/TLS 연결 사용). scheme을 "http"로 설정하여 암호화되지 않은 "http" 엔드포인트를 통해 서비스에 연결하려고 시도할 수 있습니다.

$s3 = new Aws\S3\S3Client([ 'version' => '2006-03-01', 'region' => 'us-west-2', 'scheme' => 'http' ]);

엔드포인트 목록과 서비스가 해당 http 체계를 지원하는지 여부는 AWS 지역 및 엔드포인트를 참조하세요.

서비스

유형

string

필수

true

사용할 서비스의 이름입니다. 이 값은 SDK에서 제공되는 클라이언트(즉, Aws\S3\S3Client)를 사용하면 기본적으로 제공됩니다. 이 옵션은 SDK에서 아직 게시되지 않았지만 디스크에서 사용할 수 있는 서비스를 테스트할 때 유용합니다.

signature_provider

유형

callable

서명 버전 이름(예: v4), 서비스 이름 및 AWS 리전을 받아 Aws\Signature\SignatureInterface 객체를 반환하거나 공급자가 지정된 파라미터에 대한 서명자를 생성할 수 있는 경우 NULL 수집 가능입니다. 이 공급자는 클라이언트에서 사용되는 서명자를 생성하는 데 사용됩니다.

Aws\Signature\SignatureProvider 클래스에는 SDK에서 제공되는 다양한 함수가 있으며 이러한 함수를 사용하여 사용자 지정 서명 공급자를 생성할 수 있습니다.

signature_version

유형

string

서비스에 사용할 사용자 지정 서명 버전을 나타내는 문자열입니다(예: v4). 작업에 따라 필요한 경우 서명 버전이 이 요청된 서명 버전을 재정의할 수 있습니다.

다음 예는 서명 버전 4를 사용하도록 Amazon S3 클라이언트를 구성하는 방법을 보여줍니다.

// Set a preferred signature version $s3 = new Aws\S3\S3Client([ 'version' => '2006-03-01', 'region' => 'us-west-2', 'signature_version' => 'v4' ]);
참고

클라이언트에서 사용되는 signature_provider는 사용자가 제공하는 signature_version 옵션을 생성할 수 있어야 합니다. SDK에서 사용되는 기본 signature_provider는 "v4" 및 "익명" 서명 버전에 대한 서명 객체를 생성할 수 있습니다.

ua_append

유형

string|string[]

기본값

[]

HTTP 핸들러에 전달된 사용자-에이전트 문자열에 추가되는 문자열 또는 문자열의 배열입니다.

use_aws_shared_config_files

유형

bool|array

기본값

bool(true)

'~/.aws/config' 및 '~/.aws/credentials'에서 공유 구성 파일 검사를 비활성화하려면 거짓으로 설정합니다. AWS_CONFIG_FILE 환경 변수를 재정의합니다.

검증

유형

bool|array

기본값

bool(true)

클라이언트 측 파라미터 확인을 비활성화하려면 false로 설정합니다. 확인을 끄면 클라이언트 성능이 약간 향상되지만 차이는 무시할 수 있는 정도입니다.

// Disable client-side validation $s3 = new Aws\S3\S3Client([ 'version' => '2006-03-01', 'region' => 'eu-west-1', 'validate' => false ]);

특정 확인 제약 조건을 활성화하려면 확인 옵션의 결합형 배열로 설정합니다.

  • required - 필수 파라미터가 있는지 확인합니다(기본적으로 켜짐).

  • min - 값의 최소 길이를 확인합니다(기본적으로 켜짐).

  • max - 값의 최대 길이를 확인합니다.

  • pattern - 값이 정규식과 일치하는지 확인합니다.

// Validate only that required values are present $s3 = new Aws\S3\S3Client([ 'version' => '2006-03-01', 'region' => 'eu-west-1', 'validate' => ['required' => true] ]);

version

유형

string

필수

false

사용할 웹 서비스의 버전입니다(예: 2006-03-01).

SDK 버전 3.277.10부터는 “버전” 옵션이 필요하지 않습니다. “version” 옵션을 지정하지 않으면 SDK에서는 최신 버전의 서비스 클라이언트를 사용합니다.

서비스 클라이언트를 만들 때 'version' 매개변수가 필요한 두 가지 상황이 있습니다.

  • 3.277.10 이전 버전의 PHP SDK를 사용합니다.

  • 버전 3.277.10 이상을 사용하고 있는데 서비스 클라이언트에 '최신' 버전이 아닌 다른 버전을 사용하려고 합니다.

예를 들어 다음 스니펫은 SDK 버전 3.279.7을 사용하지만 Ec2Client의 최신 버전은 사용하지 않습니다.

$ec2Client = new \Aws\Ec2\Ec2Client([ 'version' => '2015-10-01', 'region' => 'us-west-2' ]);

버전 제약 조건을 지정하면 서비스가 갑작스럽게 변경되더라도 코드에 영향을 미치지 않습니다.

사용 가능한 API 버전 목록은 각 클라이언트의 API 설명서 페이지에서 확인할 수 있습니다. 특정 API 버전을 로드할 수 없는 경우 설치된 SDK를 업데이트해야 할 수 있습니다.