amazonite
Version, currently 0.2.1229 versions
- 0.2.27latestOct 31, 2026
- 0.2.26not indexedOct 31, 2026
- 0.2.25not indexedOct 31, 2026
- 0.2.24Oct 27, 2026
- 0.2.23not indexedOct 27, 2026
- 0.2.22Oct 22, 2026
- 0.2.21not indexedOct 22, 2026
- 0.2.20not indexedOct 22, 2026
- 0.2.19Oct 15, 2026
- 0.2.18not indexedOct 15, 2026
- 0.2.17Oct 9, 2026
- 0.2.16Oct 2, 2026
- 0.2.15not indexedOct 2, 2026
- 0.2.14not indexedOct 2, 2026
- 0.2.13Sep 25, 2026
- 0.2.12not indexedSep 25, 2026
- 0.2.11not indexedSep 25, 2026
- 0.2.10Sep 19, 2026
- 0.2.9not indexedSep 19, 2026
- 0.2.8Sep 17, 2026
- 0.2.7not indexedSep 17, 2026
- 0.2.6Sep 12, 2026
- 0.2.5not indexedSep 12, 2026
- 0.2.4not indexedSep 12, 2026
- 0.2.3not indexedSep 12, 2026
- 0.2.2Sep 5, 2026
- 0.2.1Jan 1, 2023
- 0.1.2not indexedFeb 21, 2023
- 0.1.1not indexedFeb 21, 2023
github.com/rjnienaber/amazonite
An unofficial SDK for Crystal, supporting popular AWS APIs
Nothing has been indexed for 0.2.12 yet. The tag is recorded, its shard.yml has not been read, so the manifest and dependency list below are empty because they are unknown rather than because they are absent.
Installation
# Add this to your shard.yml
dependencies:
amazonite:
github: rjnienaber/amazonite
version: ~> 0.2.12Then run:
shards installshard.yml
No shard.yml has been indexed for 0.2.12. You can read it on the repository.
Dependencies
Unknown: the shard.yml for this version has not been read yet.
README
This README is the one indexed from the repository at its latest ref, not from the tag for this version.
Amazonite AWS SDK
Amazonite is an unofficial AWS SDK for Crystal, generated directly from AWS's own API models so
service coverage tracks AWS rather than a hand-maintained subset. It resolves credentials the same
way the official SDKs do (env vars, profiles, SSO, ECS, EC2 instance metadata) and refreshes
temporary credentials automatically, so a Client.new behaves the way you'd expect coming from
boto3 or the AWS SDK for JS/Go/etc.
API documentation is generated with crystal docs and published on every push to master.
Amazonite is not affiliated with, endorsed by, or sponsored by Amazon.com, Inc. or its affiliates. "AWS" and "Amazon" are trademarks of Amazon.com, Inc. or its affiliates.
- Typed clients and models generated from AWS's own API definitions, not maintained by hand
- Automatic credential resolution across env vars, profiles, SSO, ECS, and EC2 instance metadata
- Automatic refresh of temporary credentials (AssumeRole, SSO, ECS, EC2) as they near expiry
- 17 AWS services supported today, with integration tests for each - see Supported services
- API docs regenerated and published on every push to
master
Contents
Usage
Here's an example that creates a table in DynamoDB:
require "amazonite/dynamodb"
private alias DB = Amazonite::DynamoDB
model = DB::CreateTableInput.new(
"Music",
[
DB::AttributeDefinition.new("Artist", DB::ScalarAttributeType::S),
DB::AttributeDefinition.new("SongTitle", DB::ScalarAttributeType::S)
],
[
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 # resolves credentials from the default provider chain
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
Credentials
Amazonite follows the same credential provider chain as the official AWS SDKs, so you generally don't
need to configure credentials yourself. Client.new/Config.new accept access_key_id/secret_access_key/region
directly, but if you leave them out, credentials are resolved automatically from the following sources, in order:
- Environment variables (
AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY/AWS_SESSION_TOKEN) - A static profile in
~/.aws/credentials(viaAWS_PROFILEorConfig.new(profile: "...")) role_arn/source_profilechaining in~/.aws/config(calls STSAssumeRole)- An SSO cached token from
aws sso login(calls SSOGetRoleCredentials) - ECS/Fargate container credentials (
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI/_FULL_URI) - EC2 instance metadata (IMDSv2) - set
AWS_EC2_METADATA_DISABLED=trueto skip this check on non-EC2 hosts (e.g. local development, CI) so it doesn't add latency to every client
Temporary credentials (from AssumeRole, SSO, ECS, or EC2) are refreshed automatically as they near expiry.
Supported services
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.
Installation
-
Add the dependency to your
shard.yml:dependencies: amazonite: github: rjnienaber/amazonite -
Run
shards install
Development
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
./scripts/regenerate.sh- regenerates every service and syncs the result from
tmp/intosrc/andservices/
- regenerates every service and syncs the result from
codegen/codegen.cr (built as bin/codegen, or run directly with crystal run codegen/codegen.cr --) accepts flags to point it at a different api-models-aws checkout, change the output directory, control log verbosity, and restrict which services/protocols get generated. Run it with -h for the full list, e.g.:
crystal run codegen/codegen.cr -- --models-dir ../api-models-aws --output-dir tmp --service dynamodb --service ssm --log-level debug
Releases
The Update AWS models workflow runs nightly. It pulls the latest
api-models-aws, regenerates every service and checks whether anything changed
beyond each module's VERSION constant (which tracks that service's own version in api-models-aws, so a bump with no
generated change isn't worth a release on its own). If nothing did, the run stops there. Otherwise it pushes the regenerated code to automated/aws-models, runs the
full CI suite against that branch and - only if it passes - fast-forwards master, bumps the patch version in
shard.yml and tags a release, so the new version is picked up by the shard directories.
Contributing
- 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
Contributors
- Richard Nienaber - creator and maintainer
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This release
- Version
0.2.12- Tagged
- Sep 25, 2026
- Commit
fb50acab99dc- Indexed
- not yet
Dependents
No indexed shard depends on this one yet.
Repository
github.com/rjnienaber/amazonite
Metadata
- Created
- Aug 12, 2026
- Updated
- Nov 3, 2026
- Synced
- Nov 2, 2026
- Versions
- 29