/** * The multi-region client constructor accepts the following options: * * - client_factory: (callable) An optional callable that takes an array of * client configuration arguments and returns a regionalized client. * - partition: (Aws\Endpoint\Partition|string) AWS partition to connect to. * Valid partitions include "aws," "aws-cn," and "aws-us-gov." Used to * restrict the scope of the mapRegions method. * - region: (string) Region to connect to when no override is provided. * Used to create the default client factory and determine the appropriate * AWS partition when present. * * @param array $args Client configuration arguments. */ public function __construct(array $args = []) { if (!isset($args['service'])) { $args['service'] = $this->parseClass(); } $argDefinitions = static::getArguments(); $resolver = new ClientResolver($argDefinitions); $args = $resolver->resolve($args, new HandlerList()); $this->config = $args['config']; $this->factory = $args['client_factory']; $this->partition = $args['partition']; $this->args = array_diff_key($args, $args['config']); }
/** * The client constructor accepts the following options: * * - api_provider: (callable) An optional PHP callable that accepts a * type, service, and version argument, and returns an array of * corresponding configuration data. The type value can be one of api, * waiter, or paginator. * - credentials: * (Aws\Credentials\CredentialsInterface|array|bool|callable) Specifies * the credentials used to sign requests. Provide an * Aws\Credentials\CredentialsInterface object, an associative array of * "key", "secret", and an optional "token" key, `false` to use null * credentials, or a callable credentials provider used to create * credentials or return null. See Aws\Credentials\CredentialProvider for * a list of built-in credentials providers. If no credentials are * provided, the SDK will attempt to load them from the environment. * - debug: (bool|array) Set to true to display debug information when * sending requests. Alternatively, you can provide an associative array * with the following keys: logfn: (callable) Function that is invoked * with log messages; stream_size: (int) When the size of a stream is * greater than this number, the stream data will not be logged (set to * "0" to not log any stream data); scrub_auth: (bool) Set to false to * disable the scrubbing of auth data from the logged messages; http: * (bool) Set to false to disable the "debug" feature of lower level HTTP * adapters (e.g., verbose curl output). * - stats: (bool|array) Set to true to gather transfer statistics on * requests sent. Alternatively, you can provide an associative array with * the following keys: retries: (bool) Set to false to disable reporting * on retries attempted; http: (bool) Set to true to enable collecting * statistics from lower level HTTP adapters (e.g., values returned in * GuzzleHttp\TransferStats). HTTP handlers must support an * `http_stats_receiver` option for this to have an effect; timer: (bool) * Set to true to enable a command timer that reports the total wall clock * time spent on an operation in seconds. * - endpoint: (string) The full URI of the webservice. This is only * required when connecting to a custom endpoint (e.g., a local version * of S3). * - endpoint_provider: (callable) An optional PHP callable that * accepts a hash of options including a "service" and "region" key and * returns NULL or a hash of endpoint data, of which the "endpoint" key * is required. See Aws\Endpoint\EndpointProvider for a list of built-in * providers. * - handler: (callable) A handler that accepts a command object, * request object and returns a promise that is fulfilled with an * Aws\ResultInterface object or rejected with an * Aws\Exception\AwsException. A handler does not accept a next handler * as it is terminal and expected to fulfill a command. If no handler is * provided, a default Guzzle handler will be utilized. * - http: (array, default=array(0)) Set to an array of SDK request * options to apply to each request (e.g., proxy, verify, etc.). * - http_handler: (callable) An HTTP handler is a function that * accepts a PSR-7 request object and returns a promise that is fulfilled * with a PSR-7 response object or rejected with an array of exception * data. NOTE: This option supersedes any provided "handler" option. * - profile: (string) Allows you to specify which profile to use when * credentials are created from the AWS credentials file in your HOME * directory. This setting overrides the AWS_PROFILE environment * variable. Note: Specifying "profile" will cause the "credentials" key * to be ignored. * - region: (string, required) Region to connect to. See * http://docs.aws.amazon.com/general/latest/gr/rande.html for a list of * available regions. * - retries: (int, default=int(3)) Configures the maximum number of * allowed retries for a client (pass 0 to disable retries). * - scheme: (string, default=string(5) "https") URI scheme to use when * connecting connect. The SDK will utilize "https" endpoints (i.e., * utilize SSL/TLS connections) by default. You can attempt to connect to * a service over an unencrypted "http" endpoint by setting ``scheme`` to * "http". * - signature_provider: (callable) A callable that accepts a signature * version name (e.g., "v4"), a service name, and region, and * returns a SignatureInterface object or null. This provider is used to * create signers utilized by the client. See * Aws\Signature\SignatureProvider for a list of built-in providers * - signature_version: (string) A string representing a custom * signature version to use with a service (e.g., v4). Note that * per/operation signature version MAY override this requested signature * version. * - validate: (bool, default=bool(true)) Set to false to disable * client-side parameter validation. * - version: (string, required) The version of the webservice to * utilize (e.g., 2006-03-01). * * @param array $args Client configuration arguments. * * @throws \InvalidArgumentException if any required options are missing or * the service is not supported. */ public function __construct(array $args) { list($service, $exceptionClass) = $this->parseClass(); if (!isset($args['service'])) { $args['service'] = manifest($service)['endpoint']; } if (!isset($args['exception_class'])) { $args['exception_class'] = $exceptionClass; } $this->handlerList = new HandlerList(); $resolver = new ClientResolver(static::getArguments()); $config = $resolver->resolve($args, $this->handlerList); $this->api = $config['api']; $this->signatureProvider = $config['signature_provider']; $this->endpoint = new Uri($config['endpoint']); $this->credentialProvider = $config['credentials']; $this->region = isset($config['region']) ? $config['region'] : null; $this->config = $config['config']; $this->defaultRequestOptions = $config['http']; $this->addSignatureMiddleware(); $this->addInvocationId(); if (isset($args['with_resolved'])) { $args['with_resolved']($config); } }
/** * The client constructor accepts the following options: * * - api_provider: (callable) An optional PHP callable that accepts a * type, service, and version argument, and returns an array of * corresponding configuration data. The type value can be one of api, * waiter, or paginator. * - client: (GuzzleHttp\ClientInterface) Optional Guzzle client used to * transfer requests over the wire. If you do not specify a client, the * SDK will create a new client that uses a shared Ring HTTP handler * with other clients. * - credentials: * (array|Aws\Credentials\CredentialsInterface|bool|callable) An * Aws\Credentials\CredentialsInterface object to use with each, an * associative array of "key", "secret", and "token" key value pairs, * `false` to utilize null credentials, or a callable credentials * provider function to create credentials using a function. If no * credentials are provided, the SDK will attempt to load them from the * environment. * - debug: (bool|resource) Set to true to display debug information * when sending requests. Provide a stream resource to write debug * information to a specific resource. * - endpoint: (string) The full URI of the webservice. This is only * required when connecting to a custom endpoint (e.g., a local version * of S3). * - endpoint_provider: (callable) An optional PHP callable that * accepts a hash of options including a service and region key and * returns a hash of endpoint data, of which the endpoint key is * required. * - http: (array) Set to an array of Guzzle client request options * (e.g., proxy, verify, etc.). See * http://docs.guzzlephp.org/en/latest/clients.html#request-options for a * list of available options. * - profile: (string) Allows you to specify which profile to use when * credentials are created from the AWS credentials file in your HOME * directory. This setting overrides the AWS_PROFILE environment * variable. Note: Specifying "profile" will cause the "credentials" key * to be ignored. * - region: (string, required) Region to connect to. See * http://docs.aws.amazon.com/general/latest/gr/rande.html for a list of * available regions. * - retries: (int, default=int(3)) Configures the maximum number of * allowed retries for a client (pass 0 to disable retries). * - retry_logger: (string|Psr\Log\LoggerInterface) When the string "debug" * is provided, all retries will be logged to STDOUT. Provide a PSR-3 * logger to log retries to a specific logger instance. * - ringphp_handler: (callable) RingPHP handler used to transfer HTTP * requests (see http://ringphp.readthedocs.org/en/latest/). * - scheme: (string, default=string(5) "https") URI scheme to use when * connecting connect. * - service: (string, required) Name of the service to utilize. This * value will be supplied by default. * - signature_provider: (callable) A callable that accepts a signature * version name (e.g., v4, s3), a service name, and region, and returns a * SignatureInterface object. This provider is used to create signers * utilized by the client. * - signature_version: (string) A string representing a custom * signature version to use with a service (e.g., v4, s3, v2). Note that * per/operation signature version MAY override this requested signature * version. * - validate: (bool, default=bool(true)) Set to false to disable * client-side parameter validation. * - version: (string, required) The version of the webservice to * utilize (e.g., 2006-03-01). * * @param array $args Client configuration arguments. * * @throws \InvalidArgumentException if any required options are missing */ public function __construct(array $args) { $service = $this->parseClass(); $withResolved = null; if (!isset($args['service'])) { $args['service'] = $service; } $resolver = new ClientResolver(static::getArguments()); $config = $resolver->resolve($args, $this->getEmitter()); $this->api = $config['api']; $this->serializer = $config['serializer']; $this->errorParser = $config['error_parser']; $this->signatureProvider = $config['signature_provider']; $this->endpoint = $config['endpoint']; $this->credentials = $config['credentials']; $this->region = isset($config['region']) ? $config['region'] : null; $this->applyParser(); $this->initSigners($config['config']['signature_version']); parent::__construct($config['client'], $config['config']); // Make sure the user agent is prefixed by the SDK version. $client = $this->getHttpClient(); $client->setDefaultOption('allow_redirects', false); $client->setDefaultOption('headers/User-Agent', 'aws-sdk-php/' . Sdk::VERSION . ' ' . Client::getDefaultUserAgent()); if (isset($args['with_resolved'])) { /** @var callable $withResolved */ $args['with_resolved']($config); } }