Summary
Getting started
Low-level AWS wrapper for ZIO for all AWS services using the AWS Java SDK v2.
The library's goal is to have access to all AWS functionality for cases when only a simple, direct access is needed from a ZIO application, and to be used as a building block for higher level wrappers around specific services.
Check the list of available artifacts to get started.
The wrapper page shows in details how the library wraps the underlying Java SDK. On the configuration page you can learn more about how set the common properties of the AWS clients in addition to setting up one of the HTTP implementations.
Features
- Common configuration layer
- ZIO layer per AWS service
- Wrapper for all operations on all services
- Http service implementations for functional Scala http libraries, injected through ZIO's module system
- ZStream wrapper around paginated and streaming operations
- Service-specific extra configuration
- More idiomatic Scala request and response types wrapping the Java classes
- Aspects to take care of additional concerns like logging, metrics, circuit breaking, etc.
Design
The library consists of a core module and one generated library for each AWS service, based on the official JSON schema from the AWS Java SDK's repository. By only providing a wrapper on top of the Java SDK the code generator does not have to know all the implementation details and features of the schema.
Higher level AWS libraries
The following libraries are built on top of zio-aws
providing higher level interfaces for specific AWS services:
Additional resources
- There is a blog post explaining how the code generator is implemented.
- This post shows an example of using
zio-aws
together with ZIO Query - Talk about generating libraries from Functional Scala 2021