guides
Intended Documentation
AWS Connector Setup (Beta)
Connect Intended to AWS. Create a least-privilege IAM user or role for iam:PutRolePolicy and ec2:StopInstances, paste the access key, secret, and region, and run Test connection. SigV4-signed; host-pinned to *.amazonaws.com with IMDS blocked. Beta until validated against your live AWS account.
AWS Connector Setup (Beta)#
Connect Intended to AWS so approved intents can attach an IAM role policy and stop EC2 instances through the real AWS adapter (packages/execution-engine/src/adapters/aws.ts). The adapter uses a hand-rolled SigV4 signer (no AWS SDK on the hot path). Every write is Authority-Token-verified and ESCALATEs for approval under the starter policy.
This connector is Beta
The adapter is real and covered by hermetic (mocked-HTTP) tests that pass in CI with no live tenant. Live proof against your real AWS account is pending — treat AWS as Beta, not GA. See the Capability Truth Matrix.
What the adapter does#
| Property | Value |
|---|---|
| Actions | aws.policy.attach (IAM PutRolePolicy), aws.instance.stop (EC2 StopInstances) |
| Auth | AWS SigV4 request signing (Authorization: AWS4-HMAC-SHA256 …) |
| Pinned hosts | Service hosts under *.amazonaws.com only — STS sts.<region>.amazonaws.com, IAM iam.amazonaws.com (signed in us-east-1), EC2 ec2.<region>.amazonaws.com |
| SSRF hardening | IMDS/ECS metadata explicitly blocked: 169.254.169.254, 169.254.170.2, any 169.254.*, and metadata.google.internal |
| Test connection | STS GetCallerIdentity |
Service hostnames are constructed from pinned constants and the region — never from caller input. region must match ^[a-z]{2}(-[a-z]+)+-\d{1,2}$ (e.g. us-east-1, eu-west-2).
Provider-side steps#
Create a dedicated, least-privilege IAM principal for Intended.
1. Access key ID + secret access key (accessKeyId, secretAccessKey, required)#
- In the AWS IAM console, create a dedicated IAM user (or role for STS temporary credentials — see session token below).
- Attach a least-privilege policy granting only the two shipped actions (below), ideally resource-scoped.
- Under Security credentials → Create access key, copy the Access key ID and Secret access key once.
2. Region (region, required)#
The AWS region token for EC2 operations, e.g. us-east-1. IAM is global (signed in us-east-1 regardless).
3. Session token (sessionToken, optional)#
If you use STS temporary credentials (assume-role), also supply the sessionToken — it is forwarded as x-amz-security-token. Prefer temporary credentials for tighter rotation.
Least-privilege IAM policy#
Matrix scopes for this connector: iam:PutRolePolicy, ec2:StopInstances. Grant only those, scoped to the target role/instances:
sts:GetCallerIdentity is unconditionally allowed for every caller, but listing it documents the probe. Do not attach broad managed policies like AdministratorAccess.
Fields to paste into the connect dialog#
Open Connectors → Connect a system → AWS → Configure auth:
| Field label | Key | Required | Value |
|---|---|---|---|
| Access Key ID | accessKeyId | Yes | AKIA… |
| Secret Access Key | secretAccessKey | Yes | The IAM secret access key |
| Region | region | Yes | us-east-1 (a valid region token) |
| Session Token | sessionToken | Optional | STS session token, for temporary credentials |
Credentials are stored per-tenant, AES-256-GCM-encrypted, and never displayed back.
Run Test connection#
- Finish the connect wizard to store the credential.
- On the connector card, click Test connection.
- The adapter performs STS
GetCallerIdentity, SigV4-signed. A green result means the keys are valid and the signature verified.
Next steps#
- Connectors index — all 15 connector guides
- Enterprise-System Connectors (Beta) — shared reference
- Capability Truth Matrix — per-connector status