aws_gleam_runtime
Runtime core for the aws-gleam SDK. Provides everything that’s shared across every AWS service typed client:
- Credentials chain — env vars → IRSA → SSO (modern + legacy) →
shared credentials file →
credential_process→aws configure export-credentials→ ECS metadata → EC2 IMDSv2. Per-client cache actor that coalesces concurrent fetches. - Region resolution — env vars + shared config.
- SigV4 + SigV4a signing — including IAM-credentials-derived signing keys, session-token handling, path normalization.
- Endpoint resolver — Smithy
endpointRuleSetevaluator; each service package embeds its rule set and threads it through here. - Retry strategies — standard + adaptive (per-token-bucket rate
limiter); pluggable via
runtime.with_retry_strategy. - Protocol codecs — restXml, restJson1, awsJson1.0/1.1, awsQuery,
ec2Query, rpcv2Cbor (framing), plus the Smithy
application/vnd.amazon.eventstreamframing codec. - Streaming HTTP transport —
aws_streaming_ffi:streaming_sendin OTPhttpcasync-self mode (HTTP/1.1 + HTTP/2 variants). - Waiters + paginators — generic helpers each service’s
generated client wires into per-op
wait_until_*/paginate_*wrappers.
Not directly consumed: import a typed service client instead
(aws_s3, aws_sqs, aws_dynamodb, …) — each one declares this
package as a dependency.
Example
import aws/credentials
import aws/region
pub fn debug_chain() {
let resolved_region =
region.resolve(profile: "default") |> result.unwrap("us-east-1")
case credentials.default_chain() |> credentials.fetch() {
Ok(creds) ->
io.println("got creds in region " <> resolved_region <> " from "
<> creds.source_name)
Error(reason) ->
io.println_error("no creds: " <> string.inspect(reason))
}
}
In practice you don’t reach for these directly — service clients
take care of the SigV4 + credentials wiring in their generated
new() constructor. The exception is config tweaks; every service
client exposes <service>.with_retry_strategy, .with_http_send,
.with_endpoint_param, etc., which thread their argument through
to this package’s types.
Documentation
Full docs at https://hexdocs.pm/aws_gleam_runtime.
License
Apache 2.0. See LICENSE.