A gleam_http request builder for AWS service APIs, generated using aws_codegen and built on top of aws4_request.
import aws_api/dynamodb import gleam/bit_array import gleam/httpc pub fn main() { // create a client for the AWS service, such as DynamoDB let dynamo_client = dynamodb.new( access_key_id: "AKIDEXAMPLE", secret_access_key: "wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY", region: "us-east-1", ) // Create the request body if necessary let body = "{ \"TableName\": \"people\", \"Key\": { \"name\": { \"S\": \"Ryan\" } } }" |> bit_array.from_string // each API endpoint is a function in the service's module let req = dynamodb.get_item(dynamo_client, body) // use a gleam_http client adapter to send the request let resp = httpc.send_bits(req) }
Ok(Response( 200, [ #("connection", "keep-alive"), #( "date", "Mon, 26 Aug 2024 01:14:37 GMT", ), #("server", "Server"), #("content-length", "48"), #( "content-type", "application/x-amz-json-1.0", ), #( "x-amzn-requestid", "9UDMAF5C9T46D39RJSCHUB7IMFVV4KQNSO5AEMVJF66Q9ASUAAJG", ), #("x-amz-crc32", "3152510195"), ], "{\"Item\":{\"name\":{\"S\":\"Ryan\"}}}", ))
Project Goals
aws_api is NOT an AWS SDK for Gleam. It intends to be a base for idiomatic SDKs.
Missing features
- other AWS partitions (gov, cn, etc.)
- fips and dualstack endpoints
- docs
- tests