ReqLLM.Providers.AmazonBedrock.STS (ReqLLM v1.0.0)
View SourceAWS Security Token Service (STS) integration for AssumeRole.
Provides temporary credentials via AssumeRole without requiring ex_aws. Uses built-in :xmerl for XML parsing and existing ex_aws_auth for signing.
Usage
# AssumeRole with base credentials
{:ok, temp_creds} = STS.assume_role(
role_arn: "arn:aws:iam::123456789012:role/MyRole",
role_session_name: "my-session",
access_key_id: "AKIA...",
secret_access_key: "...",
region: "us-east-1"
)
# Use temporary credentials with Bedrock
model = ReqLLM.Model.from("bedrock:anthropic.claude-3-sonnet-20240229-v1:0",
access_key_id: temp_creds.access_key_id,
secret_access_key: temp_creds.secret_access_key,
session_token: temp_creds.session_token,
region: "us-east-1"
)
Summary
Functions
Assume an AWS IAM role and get temporary credentials.
Parse AWS STS AssumeRole XML response into credentials.
Functions
Assume an AWS IAM role and get temporary credentials.
Options
:role_arn(required) - ARN of the role to assume:role_session_name(required) - Name for the role session:access_key_id(required) - AWS access key ID of the caller:secret_access_key(required) - AWS secret access key of the caller:region- AWS region (default: "us-east-1"):duration_seconds- Session duration in seconds (default: 3600, max: 43200):external_id- External ID for role assumption:policy- IAM policy to further restrict permissions (JSON string)
Returns
{:ok, credentials}- Map with access_key_id, secret_access_key, session_token, expiration{:error, reason}- Error details
Examples
{:ok, creds} = STS.assume_role(
role_arn: "arn:aws:iam::123456789012:role/MyRole",
role_session_name: "bedrock-session",
access_key_id: System.get_env("AWS_ACCESS_KEY_ID"),
secret_access_key: System.get_env("AWS_SECRET_ACCESS_KEY")
)
# creds = %{
# access_key_id: "ASIAXXX...",
# secret_access_key: "xxx...",
# session_token: "xxx...",
# expiration: ~U[2025-10-14 12:00:00Z]
# }
Parse AWS STS AssumeRole XML response into credentials.
Exposed for testing purposes.
Examples
xml = "<AssumeRoleResponse>...</AssumeRoleResponse>"
{:ok, creds} = STS.parse_credentials(xml)