Packages
aws
0.7.0
1.0.14
1.0.13
1.0.12
1.0.11
1.0.10
1.0.9
1.0.8
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
0.14.1
0.14.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.0
0.11.0
0.10.1
0.10.0
0.9.2
0.9.1
0.9.0
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.3
0.0.2
0.0.1
AWS clients for Elixir
Current section
Files
Jump to
Current section
Files
README.md
# AWS clients for Elixir
[](https://github.com/aws-beam/aws-elixir/actions)
:deciduous_tree: With this library you can talk to almost all AWS services without hassle. :zap:
## 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](https://github.com/aws-beam/aws-codegen) using the
same JSON descriptions of AWS services used to build the
[AWS SDK for Go](https://github.com/aws/aws-sdk-go/tree/master/models/apis).
* 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:
```elixir
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:
```elixir
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](https://github.com/benoitc/hackney) for the default HTTP client. Optionally, you can implement your own (Check AWS.Client docs).
```elixir
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](https://github.com/aws-beam/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
* [Hex Docs](https://hexdocs.pm/aws)
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`](https://github.com/aws/aws-sdk-go/blob/master/models/apis/rekognition/2016-06-27/api-2.json).
Alternatively you can access the documentation for the service you want at [AWS docs page](https://docs.aws.amazon.com/).
## 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.