# `AWSAuth.Credentials`
[🔗](https://github.com/neilberkman/ex_aws_auth/blob/v1.4.1/lib/aws_auth/credentials.ex#L1)

AWS credentials struct for authentication.

This struct holds AWS credentials for signing requests. It can be created
manually or loaded from environment variables.

## Fields

  * `:access_key_id` - AWS Access Key ID (required)
  * `:secret_access_key` - AWS Secret Access Key (required)
  * `:session_token` - AWS Session Token for temporary credentials (optional)
  * `:region` - AWS region (optional, defaults to "us-east-1")

## Examples

    # Create credentials manually
    creds = %AWSAuth.Credentials{
      access_key_id: "AKIAIOSFODNN7EXAMPLE",
      secret_access_key: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
      region: "us-east-1"
    }

    # Load from environment variables
    creds = AWSAuth.Credentials.from_env()

    # Load from environment with fallback
    creds = AWSAuth.Credentials.from_env() || %AWSAuth.Credentials{
      access_key_id: "...",
      secret_access_key: "..."
    }

## Environment Variables

`from_env/0` reads the following environment variables:

  * `AWS_ACCESS_KEY_ID` - Access key ID
  * `AWS_SECRET_ACCESS_KEY` - Secret access key
  * `AWS_SESSION_TOKEN` - Session token (optional)
  * `AWS_REGION` or `AWS_DEFAULT_REGION` - Region (optional)

# `t`

```elixir
@type t() :: %AWSAuth.Credentials{
  access_key_id: String.t() | nil,
  region: String.t() | nil,
  secret_access_key: String.t() | nil,
  session_token: String.t() | nil
}
```

# `from_env`

```elixir
@spec from_env() :: t() | nil
```

Creates credentials from environment variables.

Returns `nil` if required environment variables are not set.

## Examples

    # With environment variables set
    System.put_env("AWS_ACCESS_KEY_ID", "AKIAIOSFODNN7EXAMPLE")
    System.put_env("AWS_SECRET_ACCESS_KEY", "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY")
    System.put_env("AWS_REGION", "us-west-2")

    creds = AWSAuth.Credentials.from_env()
    # => %AWSAuth.Credentials{
    #      access_key_id: "AKIAIOSFODNN7EXAMPLE",
    #      secret_access_key: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
    #      region: "us-west-2",
    #      session_token: nil
    #    }

    # Without required environment variables
    System.delete_env("AWS_ACCESS_KEY_ID")
    AWSAuth.Credentials.from_env()
    # => nil

# `from_map`

```elixir
@spec from_map(map() | keyword()) :: t()
```

Creates credentials from a keyword list or map.

## Examples

    AWSAuth.Credentials.from_map(%{
      access_key_id: "AKIAIOSFODNN7EXAMPLE",
      secret_access_key: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
      region: "us-east-1"
    })

---

*Consult [api-reference.md](api-reference.md) for complete listing*
