Amazonite is an unofficial AWS SDK for Crystal.
Here's an example that creates a table in DynamoDB:
require "amazonite/dynamodb_v2"
private alias DB = Amazonite::DynamoDBV2
model = DB::CreateTableInput.new(
[
DB::AttributeDefinition.new("Artist", DB::ScalarAttributeType::S),
DB::AttributeDefinition.new("SongTitle", DB::ScalarAttributeType::S)
],
"Music",
[
DB::KeySchemaElement.new("Artist", DB::KeyType::Hash),
DB::KeySchemaElement.new("SongTitle", DB::KeyType::Range)
],
provisioned_throughput: DB::ProvisionedThroughput.new(10, 5),
)
client = DB::Client.new # read credentials from environment variables
response = client.create_table(model)
puts response.http.status_code # 200
result = response.result
puts result.table_description.try &.table_name # Music
puts result.table_description.try &.attribute_definitions.try &.[0].attribute_name # Artist
Output:
200
Music
Artist
API types that can be generated:
json
API types that are in progress:
rest-json
query
Name | Supported? | Integration Tests | Notes |
---|---|---|---|
DynamoDB | ✅ | ✅ | |
SSM | ✅ | ✅ | |
S3 | 🚫 | 🚫 | Consider using awscr-s3 |
For example usage, please look at the integration tests. If you need an API that is not listed here, please open an issue or pull request with the generated code.
-
Add the dependency to your
shard.yml
:dependencies: amazonite: github: rjnienaber/amazonite
-
Run
shards install
Once you've cloned the repo, have a look at the scripts
directory for some scripts that help with development. Some of them use the excellent watchexec tool to watch for changes.
./scripts/watch_specs.sh
- watches for code changes and runs the specs
./scripts/watch_codegen.sh
- watches for code changes and regenerates the code for apis
./scripts/watch_integration.cr
- watches for code changes and executes integration tests
- Fork it (https://github.com/rjnienaber/amazonite/fork)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
- Richard Nienaber - creator and maintainer