README.md

# aws_credentials_gleam

Type-safe AWS credentials management for Gleam, built on top of the robust [aws_credentials](https://hex.pm/packages/aws_credentials) Erlang library.

**Note:** This is an independent project that provides Gleam bindings for AWS credential management. It is not affiliated with the aws-erlang project.

## Quick Start

### Installation

```sh
gleam add aws_credentials_gleam
```

### Usage

```gleam
import gleam/io
import gleam/option
import gleam/string
import aws_credentials_client as aws

pub fn main() {
  // Start the credentials service
  case aws.start() {
    Ok(_) -> {
      io.println("AWS credentials service started successfully")
      
      // Get current credentials
      case aws.get_credentials() {
        Ok(option.Some(creds)) -> {
          io.println("Found AWS credentials:")
          io.println("  Access Key ID: " <> creds.access_key_id)
          io.println("  Provider: " <> creds.credential_provider)
        }
        Ok(option.None) -> io.println("No AWS credentials found")
        Error(err) -> io.println("Error: " <> string.inspect(err))
      }
    }
    Error(err) -> {
      io.println("Failed to start: " <> string.inspect(err))
    }
  }
}
```

## Features

- **Type-safe** credential management with Gleam's type system
- **Automatic credential discovery** from multiple sources:
  - Environment variables
  - AWS credentials file (`~/.aws/credentials`)
  - IAM roles (EC2, ECS, EKS)
- **Automatic refresh** of expiring credentials
- **Zero configuration** - just start and use

## API

- `start() -> Result(Nil, CredentialError)` - Start the credentials service
- `get_credentials() -> Result(Option(Credentials), CredentialError)` - Get current credentials
- `has_credentials() -> Bool` - Check if credentials are available
- `force_refresh() -> Result(Option(Credentials), CredentialError)` - Force credential refresh
- `stop() -> Nil` - Stop the credentials service

## Credits

This project is built on top of the excellent [aws_credentials](https://hex.pm/packages/aws_credentials) library from the [aws-erlang](https://github.com/aws-beam/aws-erlang) project. If you find this Gleam wrapper useful, please consider supporting the underlying aws-erlang project:

- ⭐ Star the [aws-erlang repository](https://github.com/aws-beam/aws-erlang)

## License

Apache 2.0