/aws-elixir

AWS clients for Elixir

Primary LanguageElixirOtherNOASSERTION

AWS clients for Elixir

Actions Status

🌳 With this library you can talk to almost all AWS services without hassle. ⚡

Features

  • A clean API separated per service. Each module has a correspondent service.
  • Support for most of AWS services.
  • Configurable HTTP client and JSON parser.
  • Generated by aws-codegen using the same JSON descriptions of AWS services used to build the AWS SDK for Go.
  • Documentation is updated from the official AWS docs.

Usage

Here is an example of listing Amazon Kinesis streams. First you need to start a console with iex -S mix. After that, type the following:

iex> client = AWS.Client.create("your-access-key-id", "your-secret-access-key", "us-east-1")

iex> {:ok, result, resp} = AWS.Kinesis.list_streams(client, %{})

iex> IO.inspect(result)
%{"HasMoreStreams" => false, "StreamNames" => []}

If you are using S3, you can upload a file with integrity check doing:

iex> client = AWS.Client.create("your-access-key-id", "your-secret-access-key", "us-east-1")
iex> file =  File.read!("./tmp/your-file.txt")
iex> md5 = :crypto.hash(:md5, file) |> Base.encode64()

iex> AWS.S3.put_object(client, "your-bucket-name", "foo/your-file-on-s3.txt", %{"Body" => file, "ContentMD5" => md5})

Installation

  • Add aws to your list of dependencies in mix.exs. It also requires hackney for the default HTTP client. Optionally, you can implement your own (Check AWS.Client docs).

    def deps do
      [
        {:aws, "~> 0.7.0"},
        {:hackney, "~> 1.17"}
      ]
    end
  • Run mix deps.get to install.

Development

Most of the code is generated using the aws-codegen library from the JSON descriptions of AWS services provided by Amazon. They can be found in lib/aws/generated.

Code outside lib/aws/generated is manually written and used as support for the generated code.

Documentation

Online

Local

  • Run MIX_ENV=docs mix docs
  • Open docs/index.html

note: Arguments, errors and reponse structure can be found by viewing the model schemas used to generate this module at aws-sdk-go/models/apis/<aws-service>/<version>/. An example is aws-sdk-go/models/apis/rekognition/2016-06-27/api-2.json. Alternatively you can access the documentation for the service you want at AWS docs page.

Tests

mix test

Release

  • Make sure the CHANGELOG.md is up-to-date and and reflects the changes for the new version.
  • Bump the version here in the README.md and in mix.exs.
  • Run git tag v$VERSION to tag the version that was just published.
  • Run git push --tags origin master to push tags to Github.
  • Run mix hex.publish to publish the new version.

License

© 2015-2017 Jamshed Kakar jkakar@kakar.ca. See LICENSE file for details.