Skip to content

v5.0.0

Compare
Choose a tag to compare
@adam-fowler adam-fowler released this 07 Dec 08:00
· 84 commits to 5.x.x since this release

Major changes

  • Soto: The rename to Soto is complete. The package name is "soto" and all libraries are prefixed with the name "Soto".
  • AWSClient has now been split from the service objects. So you can have one AWSClient that is used by many services.
  • HTTP Client: We are now using the swift server async-http-client instead of our custom http client. We also provide the ability for the user to replace this client with their own.
  • Credential providers: Abstracted credential acquisition to make it easier to write credential providers and control which credential providers you want to use. Added new credential providers for STS and Cognito.
  • Swift server eco-system: On top of using async-http-client we have added support for swift-log and swift-metrics.
  • Crypto: There is no dependency on openssl libraries anymore. Instead we use swift-crypto on Linux and CommonCrypto on macOS and iOS.
  • Request/Response encoding/decoding:
    • We have added a Codable based QueryEncoder so all protocols now use Codable for serialisation.
    • Added property wrappers for Collection types Array and Dictionary to define how they are serialised. We have also included property wrappers for Date which has allowed us to remove Timestamp and replace it with Date.
    • Fixed many serialisation bugs.
  • Request Signing: The V4 signer has been completely re-written and is available as a separate library. This also added support for signing streamed S3 requests.
  • Streaming: We have added support for both streaming of request data and streaming of response data thus allowing the uploading and downloading of large files without requiring a large memory footprint. Added AWSPayload for raw payloads. Allows the user to supply a payload as a String, Data, ByteBuffer or closure supplying a stream of ByteBuffers.
  • Retrying Requests: AWSClient now retries requests that have failed. You can define how the client does this using a RetryPolicy object.
  • DynamoDB Codable: Added Codable encoder and decoder for DynamoDB AttributeValue arrays. Wrapped versions of standard functions (getItem, putItem, updateItem, queryItem, scanItem) to use the encoder or decoder where applicable. This simplifies working with DynamoDB considerably.
  • S3 Multipart upload: Added support for resuming S3 multipart uploads, and S3 multipart copying and the upload part functions now stream their payloads to reduce memory impact.
  • Errors: Errors thrown by Soto are now structs and not enums. They also hold additional data like the response code and http headers returned.
  • Added AWSService protocol with support for signing URLs and creating edited versions of services. All service objects now conform to this protocol.
  • Added new Array.reduce style paginator functions.

New AWS Services include

  • AppRegistry: Provides a repository of your applications, their resources, and the application metadata.
  • GlueDataBrew: A visual, cloud-scale data-preparation service.
  • MWAA: Amazon Managed Workflows for Apache Airflow.
  • NetworkFirewall: A managed service that makes it easy to deploy essential network protections for all of your Amazon Virtual Private Clouds.
  • S3Outposts: Access S3 from AWS Outposts.
  • TimestreamQuery and TimestreamWrite: Time series database service for IoT and operational applications.
  • AmplifyBackend: AWS Amplify Administration API.
  • AppIntegrationsService: Enables you to configure and reuse connections to external applications.
  • ConnectContactLens: Contact Lens for Amazon Connect.
  • CustomerProfiles: Amazon Connect Customer Profiles.
  • DevOpsGuru: Help Identify Application Errors and Fixes.
  • ECRPublic: Public Amazon Elastic Container Registry.
  • LookoutforVision: Machine learning (ML) service that spots defects and anomalies in visual representations.
  • SageMakerFeatureStoreRuntime: A fully managed, purpose-built repository for machine learning (ML) features.

Using v5.0.0 of soto-core.
Sync'ed service models to v1.36.0 of aws-sdk-go.