Skip to content

feat(coderd_ai_provider): add Bedrock role_arn for STS assume-role#372

Open
ethanndickson wants to merge 2 commits into
ethan/agents-model-resourcefrom
ethan/bedrock-role-arn
Open

feat(coderd_ai_provider): add Bedrock role_arn for STS assume-role#372
ethanndickson wants to merge 2 commits into
ethan/agents-model-resourcefrom
ethan/bedrock-role-arn

Conversation

@ethanndickson

@ethanndickson ethanndickson commented Jun 26, 2026

Copy link
Copy Markdown
Member

Background

A customer running AWS Bedrock needs runtime IAM role assumption across multiple AWS accounts so usage bills to the correct account: a pod starts with its ambient AWS identity (IRSA / EKS Pod Identity / instance profile), then assumes a downstream role in another account via STS before calling Bedrock, with temp credentials cached and rotated by the AWS SDK. Static keys are not acceptable, and the base identity alone is insufficient since it's shared across providers.

This gap (AIGOV-371) was fixed server-side in coder/coder#26527 (backend: assume a configured role ARN via STS before calling Bedrock; whether the role is same- or cross-account is purely a matter of its trust policy) and coder/coder#26578 (web UI follow-up). The only piece reaching this provider is one new role_arn field on codersdk.AIProviderBedrockSettings, plus server-side ARN validation. Everything else lives in aibridge / coderd / cli / UI, which this provider doesn't import.

What this PR does

Adds an optional role_arn to coderd_ai_provider's settings.bedrock block so the assume-role workflow is configurable via Terraform, not only the UI. When set, the gateway uses its base identity to assume that IAM role via STS and signs Bedrock requests with the resulting temporary credentials; the role can live in the same account or a different one, depending entirely on its trust policy. A deployment that needs several roles configures several providers. Omitting it preserves today's behavior. Also updates the example and regenerates docs/.

SDK bump

role_arn isn't in any tagged codersdk release yet (latest v2.34.3 predates it), so go.mod is pinned to a pseudo-version of the coder/coder#26527 merge commit; re-pin to a real tag once one ships.

Closes CODAGT-607. Refs AIGOV-371. Refs coder/coder#26527, coder/coder#26578.

ethanndickson commented Jun 26, 2026

Copy link
Copy Markdown
Member Author

@linear-code

linear-code Bot commented Jun 26, 2026

Copy link
Copy Markdown

AIGOV-371

CODAGT-607

Comment thread docs/resources/ai_provider.md Outdated
Comment thread docs/resources/ai_provider.md Outdated
@ethanndickson ethanndickson force-pushed the ethan/bedrock-role-arn branch from f39b9dd to 6e87fa3 Compare June 27, 2026 03:50
@ethanndickson ethanndickson changed the title feat(coderd_ai_provider): add Bedrock role_arn for cross-account assume-role feat(coderd_ai_provider): add Bedrock role_arn for STS assume-role Jun 27, 2026
@ethanndickson ethanndickson force-pushed the ethan/bedrock-role-arn branch from 6e87fa3 to 6d0f35e Compare June 27, 2026 07:03
@ethanndickson ethanndickson force-pushed the ethan/agents-model-resource branch from 86ac6f2 to 877f8dc Compare June 27, 2026 07:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants