本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
第 3 AWS SDK for PHP 版的組態
用戶端建構器選項可在用戶端建構器中提供,或提供給 Aws\Sdk
類別。提供給特定類型用戶端的選項陣列可能不同,取決於您所建立的用戶端。這些自訂用戶端組態選項會在每個用戶端的 API 文件中說明。
請注意,某些組態選項會根據環境變數或 AWS 組態檔案來檢查並使用預設值。依預設,正在檢查的組態檔案會位於您主目錄中的 .aws/config
,通常為 ~/.aws/config
。但是,您可以使用環境變數 AWS_CONFIG_FILE
來設訂預設組態檔案的位置。例如,如果您使用 限制對特定目錄的檔案存取,這可能很有用open_basedir
。
如需共用 AWS 和credentials
檔案的位置config
和格式的詳細資訊,請參閱 AWS SDKs and Tools 參考指南中的組態。
如需您可以在組態檔案或環境變數中 AWS 設定的所有全域組態設定的詳細資訊,請參閱 Word and Tools 參考指南中的組態和身分驗證設定參考。 AWS SDKs
組態選項
下列範例顯示如何將選項傳遞至 Amazon S3 用戶端建構器。
use Aws\S3\S3Client; $options = [ 'region' => 'us-west-2', 'version' => '2006-03-01', 'signature_version' => 'v4' ]; $s3Client = new S3Client($options);
如需有關建構用戶端的詳細資訊,請參閱基本使用指南。
api_provider
- Type
-
callable
可呼叫的 PHP,可接受類型、服務和版本引數,並傳回對應組態資料的陣列。類型值可以是 api
、waiter
或 paginator
其中之一。
根據預設,SDK 會使用 執行個體Aws\Api\FileSystemApiProvider
,該執行個體會從 API 的src/data
資料夾載入 SDK 檔案。
登入資料
- Type
-
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 SDKs and Tools 參考指南中的共用和config
credentials
檔案。
如果您未指定要使用的憑證提供者,並依賴憑證提供者鏈,則驗證失敗所產生的錯誤訊息通常是一般的。這是從正在檢查有效憑證的來源清單中的最後一個提供者產生,這可能不是您嘗試使用的提供者。當您指定要使用的憑證提供者時,任何產生的錯誤訊息都更實用且相關,因為其僅由該提供者產生。若要進一步了解檢查憑證的來源鏈,請參閱 AWS SDKs and Tools 參考指南中的憑證提供者鏈。
傳遞 false
以使用 null 登入資料,而且不簽署請求。
$s3 = new Aws\S3\S3Client([ 'region' => 'us-west-2', 'credentials' => false ]);
傳遞可呼叫的登入資料供應商函數以使用函數建立登入資料。
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 ]);
您可以在第 3 AWS SDK for PHP 版的憑證指南中找到有關提供憑證給用戶端的詳細資訊。
注意
登入資料會在被使用時延遲載入和驗證。
偵錯
- Type
-
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 (可呼叫)
-
以日誌訊息叫用的函數。根據預設,會使用 PHP 的
echo
函數。 - stream_size (int)
-
當串流的大小大於此數字時,將不會記錄串流資料。設定為
0
將不記錄任何串流資料。 - scrub_auth (bool)
-
將 設定為
false
以停用從記錄的訊息中清除身分驗證資料 (這表示您的 AWS 存取金鑰 ID 和簽章會傳遞至logfn
)。 - http (bool)
-
設定為 以
false
停用較低層級 HTTP 處理常式的「偵錯」功能 (例如,詳細 cURL 輸出)。 - auth_headers (陣列)
-
設定為您要替換的標頭金鑰值映射,對應到您希望取代它們的值。除非
scrub_auth
設定為true
,否則將不會使用這些值。 - auth_strings (陣列)
-
設定為規則表達式金鑰值映射以對應到它們的替換。如果
scrub_auth
設定為true
,這些值將由身分驗證資料清除程式使用。
$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 問題時,請提供隔離失敗案例的偵錯輸出。
統計資料
- Type
-
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'];
或者,您可以使用以下金鑰提供關聯陣列。
- 重試 (bool)
-
設定為
true
以啟用嘗試重試的報告。在預設情況下,會收集並傳回重試統計資料。 - http (bool)
-
設定為
true
以啟用從較低層級的 HTTP 轉接器收集統計資料 (例如,傳回的 in GuzzleHttpTransferStats 值)。HTTP 處理常式必須支援 __on_transfer_stats 選項,此選項才會生效。HTTP 統計資料會以關聯陣列的索引陣列傳回;每個關聯陣列包含用戶端 HTTP 處理常式針對請求傳回的傳輸統計資料。預設為停用。如果重試請求,將會傳回每個請求的傳輸統計資料,其中
$result['@metadata']['transferStats']['http'][0]
會包含第一個請求的統計資料,$result['@metadata']['transferStats']['http'][1]
則會包含第二個請求的統計資料,以此類推。 - 計時器 (bool)
-
設定為
true
以啟用命令計時器,它會報告用於操作的總計時鐘時間,以秒為單位。預設為停用。
$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'];
端點
- Type
-
string
Web 服務的完整 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
- Type
-
Aws\EndpointV2\EndpointProviderV2|callable
選用的 EndpointProviderV2 或 PHP 可呼叫執行個體,可接受雜湊的選項,包括「服務」和「區域」金鑰。其會傳回 NULL
或端點資料的雜湊,其中需要 “endpoint” 鍵。
以下是如何建立最小端點提供者的範例。
$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
- Type
-
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 ], ]);
處理常式
- Type
-
callable
接受命令物件和請求物件的處理常式,而且會傳回承諾 (GuzzleHttp\Promise\PromiseInterface
),其中包含 Aws\ResultInterface
物件 Aws\Exception\AwsException
。處理常式不會接受下一個處理常式,因為其為終端機且預期要完成命令。如果沒有提供處理常式,將使用預設的 Guzzle 處理常式。
您可以使用 Aws\MockHandler
以傳回模擬結果或擲回模擬例外狀況。您查詢結果或例外狀況,而 MockHandler 會以 FIFO 順序將其取消佇列。
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
- Type
-
array
設定為 HTTP 選項陣列,這些選項會套用至 HTTP 請求和 SDK 建立的傳輸。
SDK 支援下列組態選項:
cert
- Type
-
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 ] ]);
偵錯
- Type
-
bool|resource
指示基礎 HTTP 處理常式輸出偵錯資訊。不同 HTTP 處理常式提供的偵錯資訊會有所不同。
-
傳遞
true
以將偵錯輸出寫入 STDOUT。 -
將
resource
傳回的 傳遞給特定 PHP 串流資源fopen
,以寫入偵錯輸出。
decode_content
- Type
-
bool
指示基礎 HTTP 處理常式膨脹壓縮回應的內文。在未啟用時,可使用 GuzzleHttp\Psr7\InflateStream
擴大壓縮回應的主體。
注意
內容解碼預設為在 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' => 'amzn-s3-demo-bucket', 'Key' => 'massize_gzipped_file.tgz' ]); $compressedBody = $result['Body']; // This content is still gzipped $inflatedBody = new InflateStream($result['Body']); // This is now readable
延遲
- Type
-
int
在傳送請求之前的延遲毫秒數。這通常用於重試請求之前的延遲。
expect
- Type
-
bool|string
此選項會傳遞至基礎 HTTP 處理常式。在預設情況下,當請求內文超過 1 MB 時會設定 Expect: 100-Continue 標頭。true
或 false
會啟用或停用所有請求的標頭。如果使用的是整數,只有內文超過此設定的請求會使用該標頭。使用方式為整數時,如果內文大小不明,則會傳送 Expect 標頭。
警告
停用 Expect 標頭可避免該服務傳回身分驗證或其他錯誤。此選項的設定請務必謹慎進行。
進度
- Type
-
callable
定義傳輸進度進行時叫用的函數。此函數接受以下引數:
-
預期要下載的位元組總數。
-
目前已下載的位元組數。
-
預期要上傳的位元組數。
-
目前已上傳的位元組數。
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' => 'amzn-s3-demo-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
- Type
-
string|array
您可以使用 proxy
選項,透過代理連線到 AWS 服務。
-
提供字串值,以連線至所有類型 URIs 的代理。代理字串值可以包含結構描述、使用者名稱和密碼。例如:
"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” 特定的代理。
接收
- Type
-
resource|string|Psr\Http\Message\StreamInterface
sink
選項控制將操作的回應資料下載至何處。
-
提供 傳回
resource
的fopen
,以將回應內文下載至 PHP 串流。 -
提供磁碟上的檔案路徑做為
string
值,以便將回應內文下載至磁碟上的特定檔案。 -
提供
Psr\Http\Message\StreamInterface
將回應內文下載至特定 PSR 串流物件。
注意
根據預設,SDK 會將回應內文下載至 PHP 暫存串流。這表示資料會保持在記憶體中,直到內文的大小達到 2 MB,此時資料將寫入磁碟上的臨時檔案。
同步
- Type
-
bool
synchronous
選項會通知基礎 HTTP 處理常式,您要封鎖結果。
串流
- Type
-
bool
設定為 true
,告訴基礎 HTTP 處理常式,您希望從 Web 服務串流回應的回應內文,而不是全部下載。例如,Amazon S3 串流包裝程式類別中依賴此選項,以確保資料串流。
timeout
- Type
-
float
浮點數,描述請求的逾時 (以秒為單位)。使用 0
以無限期等待 (預設的行為)。
use Aws\DynamoDb\DynamoDbClient; // Timeout after 5 seconds $client = new DynamoDbClient([ 'region' => 'us-west-2', 'http' => [ 'timeout' => 5 ] ]);
驗證
- Type
-
bool|string
您可以使用 verify
http
選項自訂 SDK 的對等 SSL/TLS 憑證驗證行為。
-
設定為
true
以啟用 SSL/TLS 對等憑證驗證,並使用作業系統提供的預設 CA 套件。 -
設定為
false
以停用對等憑證驗證。(這是不安全的!) -
設定為字串以提供 CA 憑證套件的路徑,以使用自訂 CA 套件來啟用驗證。
如果找不到系統的 CA 套件,且您收到錯誤,請將 CA 套件的路徑提供給 SDK。如果您不需要特定的 CA 套件,Mozilla 會提供常用的 CA 套件,您可以在這裡openssl.cafile
PHP .ini 設定以指向檔案的路徑,讓您省略verify
請求選項。您可以在 cSSL 網站上找到有關 Word 憑證的詳細資訊。 URL
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
- Type
-
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 會自動將提供的 轉換為一般handler
選項http_handler
,方法是將 http_handler
物件隨附的 包裝起來Aws\WrappedHttpHandler
。
根據預設,SDK 會使用 Guzzle 作為其 HTTP 處理常式。您可以在這裡提供不同的 HTTP 處理常式,或提供 Guzzle 用戶端您自己的自訂定義選項。
設定 TLS 版本
其中一個使用案例是設定 Guzzle 搭配 Curl 使用的 TLS 版本,假設 Curl 已安裝在您的環境中。請注意支援哪些 TLS 版本的 Curl 版本限制
您可以將debug
用戶端選項設定為 true 並檢查 TLS 連線輸出,以判斷用於指定用戶端操作的 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
- Type
-
string
「設定檔」選項指定從 HOME 目錄中的 AWS 憑證檔案建立憑證時要使用的設定檔 (通常為 ~/.aws/credentials
)。此設定將覆寫 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' ]);
如需設定憑證和 .ini 檔案格式的詳細資訊,請參閱 AWS SDK for PHP 版本 3 的憑證。
region
- Type
-
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
- Type
-
int|array|Aws\CacheInterface|Aws\Retry\ConfigurationInterface|callable
- 預設
-
int(3)
設定用戶端的重試模式和允許重試次數上限。傳遞 0
以停用重試。
三種重試模式為:
-
legacy
- 預設舊版重試實作 -
standard
- 新增重試配額系統,以防止不太可能成功的重試 -
adaptive
- 在標準模式上建立,新增一個用戶端速率限制器。請注意,此模式為實驗性質。
重試的組態包含模式和每個請求所使用的嘗試次數上限。組態可以按照下列優先順序在幾個不同的位置進行設定。
優先順序
重試組態的優先順序如下 (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), ]);
結構描述
- Type
-
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' ]);
如需端點清單AWS ,以及服務是否支援 方案,請參閱 區域和端點。 http
服務
- Type
-
string
- 必要
-
true
要使用的名稱服務。使用 SDK 提供的用戶端 (即 Aws\S3\S3Client
) 時,預設會提供此值。此選項在測試尚未在 SDK 中發佈,但磁碟上有可用的服務時非常有用。
signature_provider
- Type
-
callable
可呼叫,可接受簽章版本名稱 (例如 v4
)、服務名稱和 AWS 區域,並傳回Aws\Signature\SignatureInterface
物件,或者NULL
如果提供者能夠為指定參數建立簽署者。此供應商用於建立由用戶端使用的簽署者。
Aws\Signature\SignatureProvider
類別中的 SDK 提供各種函數,可用於建立自訂簽章提供者。
signature_version
- Type
-
string
字串,表示要搭配服務 (例如,v4
等) 使用的自訂簽章版本。如有需要,每個操作簽章版本 MAY 會覆寫此請求的簽章版本。
下列範例示範如何設定 Amazon S3 用戶端以使用簽章第 4 版:
// Set a preferred signature version $s3 = new Aws\S3\S3Client([ 'version' => '2006-03-01', 'region' => 'us-west-2', 'signature_version' => 'v4' ]);
注意
用戶端 MUST signature_provider
使用的 可以建立您提供的signature_version
選項。SDK signature_provider
使用的預設值可以建立「v4」和「匿名」簽章版本的簽章物件。
ua_append
- Type
-
string|string[]
- 預設
-
[]
新增至傳遞給 HTTP 處理常式的使用者代理程式字串的字串或字串陣列。
use_aws_shared_config_files
- Type
-
bool|array
- 預設
-
bool(true)
設定為 false,以停用 ‘~/.aws/config’ and ‘~/.aws/credentials’ 中的共用組態檔案檢查。這將覆寫 AWS_CONFIG_FILE 環境變數。
validate
- Type
-
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
- Type
-
string
- 必要
-
false
此選項指定要使用的 Web 服務版本 (例如 2006-03-01
)。
從 SDK 的 3.277.10 版開始,不需要「版本」選項。如果您未指定「版本」選項,則 SDK 會使用最新版本的服務用戶端。
當您建立服務用戶端時,兩種情況都需要「版本」參數。
-
您使用的 SDKPHP 版本早於 3.277.10。
-
您使用 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 的副本。