# Change Log ## NOT RELEASED ## 1.19.0 ### Added - Support for Symfony 7 - Support for Athena - Support for MediaConvert - Support for IMDS v2 authentication - Support for using endpoint discovery with parameters passed in the query string or the path ### Fixed - Fix potential malformed URI in discovered endpoints ## 1.18.1 ### Changed - AWS enhancement: Documentation updates. - Fix deprecation by adding return type on reset methods ## 1.18.0 ### Added - Support for Scheduler ## 1.17.0 ### Added - Support for Iot Data ## 1.16.0 ### Added - Support for endpoint discovery - Support for Iot Core ## 1.15.0 ### Added - Support for CodeBuild - Support for CodeCommit - Support for TimestreamQuery - Support for TimestreamWrite - AWS enhancement: Documentation updates. - Reverted the automated decoration of the injected HttpClient - Added an AwsHttpClientFactory to help people creating retryable clients - Add 403 errors in the list of potential retryiable operations ### Changed - Set default value to `false` for the `sendChunkedBody` option. ## 1.14.0 ### Added - Make the injected HttpClient decorated by our `RetryableHttpClient` - Support for KMS ### Fixed - Issue with symfony http-client when posting empty payload ## 1.13.0 ### Added - AWS api-change: Added `us-iso-west-1` region - AWS api-change: Used regional endpoint for `us` regions - AWS enhancement: Documentation updates. - Support for AppSync - Support for XRay ## 1.12.0 ### Added - Support for Firehose - Support for ElastiCache - Support for CloudWatchClient - Support for psr/log 2.0 and 3.0 ## 1.11.0 ### Added - Support for StepFunctions - Support for Kinesis - Support for SecretsManager - Support for Symfony contracts v3 - AWS enhancement: Documentation updates for AWS Security Token Service. ### Fixed - Wrap the HttpClient's decoding exception in UnparsableResponse. ## 1.10.0 ### Added - AWS enhancement: STS now supports assume role with Web Identity using JWT token length upto 20000 characters - AWS api-change: This release adds the SourceIdentity parameter that can be set when assuming a role. - Support for Symfony 6 ## 1.9.2 ### Fixed - Support for psr/cache v2 and v3 - Fix forming signature with multiple spaces ## 1.9.1 ### Fixed - Make sure mocked results have a response with `Response::$bodyDownloaded = true`. ## 1.9.0 ### Added - Changed case of object's properties to camelCase. - Added documentation in class headers. - Removed `final` from `ClientException` and `ServerException`. - Make Responses thrown Business Exception when AwsErrorCode <-> Exception class mapping provided through RequestContext. - Added domain exceptions. - Improved Aws Error parsing by using specialized AwsErrorFactory. ### Fixed - Exception thrown twice by waiters. ## 1.8.0 ### Added - Added option `sendChunkedBody` dedicated to S3. ## 1.7.2 - Make sure we can get credentials even if the cache storage fails - Clear `realpath` cache to make sure we get the latest credentials token ## 1.7.1 ### Fixed - Fix for an edge case where aws config file could be a directory - Fix when AWS profile name is only digits ## 1.7.0 ### Added - A `AwsRetryStrategy` to define what HTTP request we retry - Support for Elastic Container Registry (ECR) in `AwsClientFactory` - Read "region" from ini files. - Support for hard coded `roleArn` in `ConfigurationProvider` - Added exception `AsyncAws\Core\Exception\UnexpectedValue` and `AsyncAws\Core\Exception\UnparsableResponse` ### Fixed - Merge configuration if a profile is spread out over multiple files. Ie if `[profile company]` is defined in both `~/.aws/config` and `~/.aws/credentials`. - All exceptions thrown must extend `AsyncAws\Core\Exception\Exception` ## 1.6.0 ### Added - Support for Rekognition in `AwsClientFactory` ## 1.5.0 ### Added - Support for `debug` configuration option to log HTTP requests and responses - Use Symfony `RetryableHttpClient` when available. ### Fixed - Allow signing request with non-standard region when using custom endpoint? - Fix unresolved Env Variable in some php configuration ## 1.4.2 ### Fixed - Fixed logic in `AbstractApi::getSigner()` when passing `@region` to an API operation ## 1.4.1 ### Fixed - Make sure passing `@region` to an API operation has effect. - Check that both AWS access id and secret exists before using them. ## 1.4.0 ### Added - Allow to pass additional content to `ResultMockFactory::createFailing()` ## 1.3.0 ### Added - Support for PHP 8 - Added second parameter `$preferredChunkSize` to `StreamFactory::create()` - Support for CloudFront in `AwsClientFactory` - Support for RdsDataService in `AwsClientFactory` ### Fixed - Allows non-AWS regions when using custom endpoints ### Changed - Add more context to error logs - Log level for 404 responses changed to "info". ## 1.2.0 ### Added - Support for EventBridge in `AwsClientFactory` - Support for IAM in `AwsClientFactory` - Add a `PsrCacheProvider` and `SymfonyCacheProvider` to persists crendentials in a cache pool - Add a `Credential::adjustExpireDate` method for adjusting the time according to the time difference with AWS clock - Support for global and regional endpoints - Add a `Configuration::optionExists` to allow third parties to check if an option is available (needed by libraries supporting several versions of core) ### Deprecation - Clients extending `AbstractApi` should override `getEndpointMetata`. The method will be abstract in 2.0 - Custom endpoints should not contain `%region%` and `%service` placeholder. They won't be replaced anymore in 2.0 - Protected methods `getServiceCode`, `getSignatureVersion` and `getSignatureScopeName` of AbstractApi are deprecated and will be removed in 2.0 ### Fixed - Fix signing of requests with a header containing a date (like `expires` in `S3`). - Fix thread safety regarding env vars by using `$_SERVER` instead of `getenv()`. ## 1.1.0 ### Added - Support for ECS Credentials Provider - Support for Cognito Identity Provider client in `AwsClientFactory` - Support for Cloud Watch Log client in `AwsClientFactory` ### Fixed - Fixed invalid chunking of request with large body for most clients but S3. This version removed the invalid code from SignerV4 to make sure requests are not chunked. - Use camelCase for all getter methods. ## 1.0.0 ### Added - Support for CodeDeploy client in `AwsClientFactory` ### Fixed - Handle Aws Error type in JsonRest error responses ## 0.5.4 ### Added - Logging on HTTP exceptions. ## 0.5.3 ### Added - Support for SSM client in `AwsClientFactory` - Support for Waiters in `ResultMockFactory` ## 0.5.2 ### Fixed - Add support for `Content-Type: application/x-amz-json-1.1` in test case. ## 0.5.1 ### Added - Add `Configuration::isDefault` methods. ### Fixed - Allow mocking of Results classes named "*Result" ## 0.5.0 ### Added - Add support for multiregion via `@region` input parameter. - DynamoDB support. - `ResultMockFactory` was updated with `createFailing()` and support for pagination. - `AbstractApi::presign()`. - `Result::wait()` for multiplexing downloads. - Interface `AsyncAws\Core\Input`. - `AsyncAws\Core\Stream\ResponseBodyResourceStream` and `AsyncAws\Core\Stream\ResponseBodyStream`. - Internal `AsyncAws\Core\Response` to encapsulate the HTTP client. - Internal `AsyncAws\Core\RequestContext`. - Internal `AsyncAws\Core\Stream\RewindableStream`. ### Removed - The input's `validate()` function was merged with the `request()` function. - `Configuration::isDefault()`. - Protected property `AbstractApi::$logger`. - `AsyncAws\Core\StreamableBody` in favor of `AsyncAws\Core\Stream\ResponseBodyStream`. ### Changed - Exceptions will contain more information from the HTTP response. - Moved STS value objects to a dedicated namespace. - The `AsyncAws\Core\Sts\Input\*` and `AsyncAws\Core\Sts\ValueObject*` classes are marked final. - Using `DateTimeImmutable` instead of `DateTimeInterface`. - Protected properties `AbstractApi::$httpClient`, `AbstractApi::$configuration` and `AbstractApi::$credentialProvider` are now private. - `AbstractApi::getResponse()` has new signature. New optional second argument `?RequestContext $context = null` and the return type is `AsyncAws\Core\Response`. - The `CredentialProvider`s and `Configuration` are now `final`. - Renamed `AsyncAws\Core\Stream\Stream` to `AsyncAws\Core\Stream\RequestStream`. - Renamed `AsyncAws\Core\StreamableBodyInterface` to `AsyncAws\Core\Stream\ResultStream`. - The `ResultStream::getChunks()` now returns a iterable of string. ### Fixed - Bugfix in `WebIdentityProvider` ## 0.4.0 ### Added - Test class `AsyncAws\Core\Test\SimpleStreamableBody` ### Changed - Moved `AsyncAws\Core\Signer\Request` to `AsyncAws\Core\Request`. - Added constructor argument to `AsyncAws\Core\Request::__construct()` to support query parameters. - Renamed `AsyncAws\Core\Request::getUrl()` to `AsyncAws\Core\Request::getEndpoint()` - Class `AsyncAws\Core\Stream\StreamFactory` is not internal anymore. - Removed `requestBody()`, `requestHeaders()`, `requestQuery()` and `requestUri()` input classes. They are replaced with `request()`. ### Removed - Public `AbstractApi::request()` was removed. - Protected function `AbstractApi::getEndpoint()` was made private. ### Fixed - Fix Instance Provider Role fetching ## 0.3.3 ### Added - Added a `ResultMockFactory` to helps creating tests ### Fixed - Http method is replaced by PUT in REST calls ## 0.3.2 ### Fixed - `Configuration` don't mix anymore attributes injected by php array and env variables. ## 0.3.1 ### Added - `AbstractApi::getConfiguration()` ### Fixed - Make sure `Configuration::create(['foo'=>null])` is using the default value of "foo". ## 0.3.0 ### Added - Requests can now be streamed - Streamable request accepts iterable alongside string, callable, resource - Support for getting credentials from Web Identity or OpenID Connect Federation. (`WebIdentityProvider`) ### Changed - Rename namespace `Signers` into `Signer`. ## 0.2.0 ### Added - Class `AsyncAws\Core\Credentials\NullProvider` - Methods `AwsClient::cloudFormation()`, `AwsClient::lambda()`, `AwsClient::sns()` - Protected methods `Result::registerPrefetch()` and `Result::unregisterPrefetch()` - Timeout parameter to `InstanceProvider::__construct()` ### Changed - Removed `AwsClient` and replaced it with `AwsClientFactory` - Class `AsyncAws\Core\Signer\Request` is marked as internal - Make sure behavior of calling `Result::resolve()` is consistent ## 0.1.0 First version