http_handler option is used to integrate the SDK with other HTTP clients. An
http_handler option is a function that accepts a
Psr\Http\Message\RequestInterface object and an array of
http options applied to the command, and returns a
GuzzleHttp\Promise\PromiseInterface object that is fulfilled with a
Psr\Http\Message\ResponseInterface object or rejected with an array of the following exception data:
\Exception) the exception that was encountered.
Psr\Http\Message\ResponseInterface) the response that was received (if any).
connection_error– (bool) set to
trueto mark the error as a connection error. Setting this value to
truealso allows the SDK to automatically retry the operation, if needed.
The SDK automatically converts the given
http_handler into a normal
handler option by wrapping the provided
http_handler with a
By default, the SDK uses Guzzle as its HTTP handler. You can supply a different HTTP handler here, or provide a Guzzle client with your own custom defined options.
Setting TLS version
One use case is to set the TLS version used by Guzzle with Curl, assuming Curl is installed in your environment. Note the Curl version constraints for what version of TLS is supported. By default, the latest version is used. If the TLS version is explicitly set, and the remote server doesn’t support this version, it will produce an error instead of using an earlier TLS version.
You can determine the TLS version being used for a given client operation by setting the
debug client option to true and examining the SSL connection output. That line might look something like:
SSL connection using TLSv1.2
Example setting TLS 1.2 with Guzzle 6:
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', 'version' => 'latest', 'http_handler' => $handler ]);
http_handler option supersedes any provided