{"id":15683414,"url":"https://github.com/zio/zio-aws","last_synced_at":"2025-04-12T19:48:27.138Z","repository":{"id":36961489,"uuid":"285686038","full_name":"zio/zio-aws","owner":"zio","description":"Low level ZIO interface for the full AWS","archived":false,"fork":false,"pushed_at":"2025-04-08T23:54:07.000Z","size":5507,"stargazers_count":145,"open_issues_count":19,"forks_count":34,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-04-09T00:35:42.609Z","etag":null,"topics":["aws","scala","zio"],"latest_commit_sha":null,"homepage":"https://zio.dev/zio-aws","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-06T22:45:01.000Z","updated_at":"2025-04-08T23:48:42.000Z","dependencies_parsed_at":"2023-12-25T04:21:57.871Z","dependency_job_id":"f0dacdf9-6e61-4515-a803-bfdb5f4b96cb","html_url":"https://github.com/zio/zio-aws","commit_stats":{"total_commits":1336,"total_committers":15,"mean_commits":89.06666666666666,"dds":0.1729041916167665,"last_synced_commit":"ff5045bbaf17c794b3f6a898b724c120552f27e7"},"previous_names":[],"tags_count":1061,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zio%2Fzio-aws","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zio%2Fzio-aws/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zio%2Fzio-aws/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zio%2Fzio-aws/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zio","download_url":"https://codeload.github.com/zio/zio-aws/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248625500,"owners_count":21135513,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","scala","zio"],"created_at":"2024-10-03T17:05:09.454Z","updated_at":"2025-04-12T19:48:27.119Z","avatar_url":"https://github.com/zio.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"[//]: # (This file was autogenerated using `zio-sbt-website` plugin via `sbt generateReadme` command.)\n[//]: # (So please do not edit it manually. Instead, change \"docs/index.md\" file or sbt setting keys)\n[//]: # (e.g. \"readmeDocumentation\" and \"readmeSupport\".)\n\n# ZIO AWS\n\n[ZIO AWS](https://zio.dev/zio-aws) is AWS wrapper for [ZIO](https://zio.dev) for _all_ AWS services using the AWS Java SDK v2.\n\n[![Production Ready](https://img.shields.io/badge/Project%20Stage-Production%20Ready-brightgreen.svg)](https://github.com/zio/zio/wiki/Project-Stages) ![CI Badge](https://github.com/zio/zio-aws/workflows/CI/badge.svg) [![Sonatype Releases](https://img.shields.io/nexus/r/https/oss.sonatype.org/dev.zio/zio-aws-core_2.13.svg?label=Sonatype%20Release)](https://oss.sonatype.org/content/repositories/releases/dev/zio/zio-aws-core_2.13/) [![Sonatype Snapshots](https://img.shields.io/nexus/s/https/oss.sonatype.org/dev.zio/zio-aws-core_2.13.svg?label=Sonatype%20Snapshot)](https://oss.sonatype.org/content/repositories/snapshots/dev/zio/zio-aws-core_2.13/) [![javadoc](https://javadoc.io/badge2/dev.zio/zio-aws-docs_2.13/javadoc.svg)](https://javadoc.io/doc/dev.zio/zio-aws-docs_2.13) [![ZIO AWS](https://img.shields.io/github/stars/zio/zio-aws?style=social)](https://github.com/zio/zio-aws)\n\n## Introduction\n\nThe goal is to have access to all AWS functionality for cases when only a simple, direct access is needed from a ZIO application, or to be used as a building block for higher level wrappers around specific services.\n\nKey features of ZIO AWS:\n\n- Common configuration layer\n- ZIO module layer per AWS service\n- Wrapper for all operations on all services\n- HTTP service implementations for functional Scala HTTP libraries, injected through ZIO’s module system\n- ZStream wrapper around paginated operations\n- Service-specific extra configuration\n- More idiomatic Scala request and response types wrapping the Java classes\n\n## Installation\n\nThere are tones of artifacts [published](docs/artifacts.md) for each AWS service. We can pick whichever services we need.\n\n## Example\n\nThe following example uses the _ElasticBeanstalk_ and _EC2_ APIs:\n\n\u003e **Note**\n\u003e \n\u003e See the [artifacts](docs/artifacts.md) page for the latest release.\n\n```scala\nlibraryDependencies += \"dev.zio\" %% \"zio-aws-core\"             % \"\u003cversion\u003e\"\nlibraryDependencies += \"dev.zio\" %% \"zio-aws-ec2\"              % \"\u003cversion\u003e\"\nlibraryDependencies += \"dev.zio\" %% \"zio-aws-elasticbeanstalk\" % \"\u003cversion\u003e\"\nlibraryDependencies += \"dev.zio\" %% \"zio-aws-netty\"            % \"\u003cversion\u003e\"\n```\n\nAnd here is the example code:\n\n```scala\nimport zio.aws.core.AwsError\nimport zio.aws.core.config.AwsConfig\nimport zio.aws.ec2.Ec2\nimport zio.aws.ec2.model._\nimport zio.aws.ec2.model.primitives._\nimport zio.aws.elasticbeanstalk.ElasticBeanstalk\nimport zio.aws.elasticbeanstalk.model._\nimport zio.aws.elasticbeanstalk.model.primitives._\nimport zio.aws.netty.NettyHttpClient\nimport zio._\nimport zio.stream._\n\nobject ZIOAWSExample extends ZIOAppDefault {\n  val program: ZIO[Ec2 \u0026 ElasticBeanstalk, AwsError, Unit] =\n    for {\n      appsResult \u003c- ElasticBeanstalk.describeApplications(\n        DescribeApplicationsRequest(applicationNames = Some(List(ApplicationName(\"my-service\"))))\n      )\n      app \u003c- appsResult.getApplications.map(_.headOption)\n      _ \u003c- app match {\n        case Some(appDescription) =\u003e\n          for {\n            applicationName \u003c- appDescription.getApplicationName\n            _ \u003c- Console\n              .printLine(\n                s\"Got application description for $applicationName\"\n              )\n              .ignore\n\n            envStream = ElasticBeanstalk.describeEnvironments(\n              DescribeEnvironmentsRequest(applicationName =\n                Some(applicationName)\n              )\n            )\n\n            _ \u003c- envStream.run(ZSink.foreach { env =\u003e\n              env.getEnvironmentName.flatMap { environmentName =\u003e\n                (for {\n                  environmentId \u003c- env.getEnvironmentId\n                  _ \u003c- Console\n                    .printLine(\n                      s\"Getting the EB resources of $environmentName\"\n                    )\n                    .ignore\n\n                  resourcesResult \u003c-\n                    ElasticBeanstalk.describeEnvironmentResources(\n                      DescribeEnvironmentResourcesRequest(environmentId =\n                        Some(environmentId)\n                      )\n                    )\n                  resources \u003c- resourcesResult.getEnvironmentResources\n                  _ \u003c- Console\n                    .printLine(\n                      s\"Getting the EC2 instances in $environmentName\"\n                    )\n                    .ignore\n                  instances \u003c- resources.getInstances\n                  instanceIds \u003c- ZIO.foreach(instances)(_.getId)\n                  _ \u003c- Console\n                    .printLine(\n                      s\"Instance IDs are ${instanceIds.mkString(\", \")}\"\n                    )\n                    .ignore\n\n                  reservationsStream = Ec2.describeInstances(\n                    DescribeInstancesRequest(instanceIds = Some(instanceIds.map(id =\u003e zio.aws.ec2.model.primitives.InstanceId(ResourceId.unwrap(id)))))\n                  )\n                  _ \u003c- reservationsStream.run(ZSink.foreach { reservation =\u003e\n                    reservation.getInstances\n                      .flatMap { instances =\u003e\n                        ZIO.foreach(instances) { instance =\u003e\n                          for {\n                            id \u003c- instance.getInstanceId\n                            typ \u003c- instance.getInstanceType\n                            launchTime \u003c- instance.getLaunchTime\n                            _ \u003c- Console.printLine(s\"  instance $id:\").ignore\n                            _ \u003c- Console.printLine(s\"    type: $typ\").ignore\n                            _ \u003c- Console\n                              .printLine(\n                                s\"    launched at: $launchTime\"\n                              )\n                              .ignore\n                          } yield ()\n                        }\n                      }\n                  })\n                } yield ()).catchAll { error =\u003e\n                  Console\n                    .printLineError(\n                      s\"Failed to get info for $environmentName: $error\"\n                    )\n                    .ignore\n                }\n              }\n            })\n          } yield ()\n        case None =\u003e\n          ZIO.unit\n      }\n    } yield ()\n\n  override def run: URIO[ZIOAppArgs, ExitCode] = {\n    val httpClient = NettyHttpClient.default\n    val awsConfig = httpClient \u003e\u003e\u003e AwsConfig.default\n    val aws = awsConfig \u003e\u003e\u003e (Ec2.live ++ ElasticBeanstalk.live)\n\n    program\n      .provideLayer(aws)\n      .either\n      .flatMap {\n        case Left(error) =\u003e\n          Console.printLineError(s\"AWS error: $error\").ignore.as(ExitCode.failure)\n        case Right(_) =\u003e\n          ZIO.unit.as(ExitCode.success)\n      }\n  }\n}\n```\n\n## Documentation\n\nLearn more on the [ZIO AWS homepage](https://github.com/zio/zio-aws)!\n\n## Contributing\n\nFor the general guidelines, see ZIO [contributor's guide](https://zio.dev/about/contributing).\n\n## Code of Conduct\n\nSee the [Code of Conduct](https://zio.dev/about/code-of-conduct)\n\n## Support\n\nCome chat with us on [![Badge-Discord]][Link-Discord].\n\n[Badge-Discord]: https://img.shields.io/discord/629491597070827530?logo=discord \"chat on discord\"\n[Link-Discord]: https://discord.gg/2ccFBr4 \"Discord\"\n\n## License\n\n[License](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzio%2Fzio-aws","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzio%2Fzio-aws","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzio%2Fzio-aws/lists"}