package smaws-lib

  1. Overview
  2. Docs
Support library for AWS SDKs generated from Smithy definitions

Install

Dune Dependency

Authors

Maintainers

Sources

0.1.preview1.tar.gz
md5=18fb70dbc45e8d81a341b9bed6871bab
sha512=7607dc98acaeed5803b44c9ca32d90c88e7813d4b3e3ae4ec661a0bad16c88dc1476bc780877527ea4cd5a4b7398453c1bb600ce0db14d39afa05dc4762b5ba5

Description

Support library for AWS SDKs generated from Smithy definitions

Published: 19 Nov 2024

README

smaws

This is an experimental project to generate OCaml bindings for the AWS SDK using Smithy definitions.

This is a work in progress. Only some services are defined as SDKs, and the protocol generators may only be able to work on some services (and their implementations may incomplete or untested).

Installation

The code in this repository is not currently available through opam.

However, you can use it by pinning the opam repository:

opam pin https://github.com/chris-armstrong/smaws.git

You will also need to pin some of its dependencies too:

(you should be asked to pin eio-ssl when you pin smaws)

Usage

Before you start

  • The SDKs provided by this package use eio for async communication. If you're using lwt or async or riot or miou, you may need a bridge library to plug into.

  • SDK Clients are stored in the smaws-clients package

  • You import the client you want from Smaws_Clients.<ClientName> e.g. Smaws_Clients.DynamoDB => aws-smssdk-dynamodb.

  • SDKs are not generated for every service - check the /sdks directory for supported services.

Installing the clients

opam pin https://github.com/chris-armstrong/smaws

opam install smaws-clients

Developing

See the Developers Guide

Status

Protocols

Internally, AWS uses a number of serialisation protocols, which differ between services

Protocol Basic SDK Generation All Annotations Services
AwsJson_1.0 :tick: :cross: SQS, DynamoDB
AwsJson_1.1 :tick: :cross:
AwsQuery :cross: :cross:
restJson :cross: :cross: about 2/3 of services
EC2 Query :cross: :cross: EC2?

Services

At the moment, we can generate bindings for the AwsJson_1.0/1.1 protocol, which covers a significant number of SDKs but has not been thoroughly tested for completeness or compliance. (If you know of good compliance suites for AWS service implementations, please reach out!)

  • acm

  • apprunner

  • backup-gateway

  • cloudtrail

  • codeconnections

  • cognito-identity

  • config-service

  • dax

  • directory-service

  • dynamodb

  • dynamodb-streams

  • eventbridge

  • fms

  • kendra

  • keyspaces

  • kinesis

  • kinesis-analytics

  • kinesis-analytics-v2

  • kms

  • lightsail

  • marketplace-agreement

  • migration-hub

  • opensearchserverless

  • pi

  • proton

  • resource-groups-tagging-api

  • route53-recovery-cluster

  • servicediscovery

  • sfn

  • shield

  • snowball

  • sqs

  • ssm

  • swf

  • transcribe

  • waf

  • wafv2

  • workmail

Note that we do not have any compliance suites to test our implementations for each service - if you have any ideas, please get in touch.

Licence

Copyright (C) Christopher Armstrong 2024

MIT Licence, see LICENCE.md

Dependencies (14)

  1. ppx_deriving >= "5.0"
  2. stdio >= "v0.17.0"
  3. httpun-eio >= "0.2.0"
  4. httpun >= "0.2.0"
  5. logs >= "0.7.0"
  6. uri >= "4.2.0"
  7. eio-ssl >= "0.3.0"
  8. digestif >= "1.1.4"
  9. base64 >= "3.4.0"
  10. xmlm >= "1.4.0"
  11. fmt >= "0.9.0"
  12. yojson >= "2.0.0"
  13. ocaml >= "5.0"
  14. dune >= "3.15"

Dev Dependencies (3)

  1. odoc with-doc
  2. eio_main with-dev
  3. alcotest with-test

Used by (1)

  1. smaws-clients

Conflicts

None

OCaml

Innovation. Community. Security.