Skip to content

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.

PartialSource: codeValidated: 2026-07-09

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#

PropertyValue
Actionsaws.policy.attach (IAM PutRolePolicy), aws.instance.stop (EC2 StopInstances)
AuthAWS SigV4 request signing (Authorization: AWS4-HMAC-SHA256 …)
Pinned hostsService 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 hardeningIMDS/ECS metadata explicitly blocked: 169.254.169.254, 169.254.170.2, any 169.254.*, and metadata.google.internal
Test connectionSTS 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)#

  1. In the AWS IAM console, create a dedicated IAM user (or role for STS temporary credentials — see session token below).
  2. Attach a least-privilege policy granting only the two shipped actions (below), ideally resource-scoped.
  3. 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:

json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "IntendedPolicyAttach",
      "Effect": "Allow",
      "Action": "iam:PutRolePolicy",
      "Resource": "arn:aws:iam::<account-id>:role/<target-role>"
    },
    {
      "Sid": "IntendedInstanceStop",
      "Effect": "Allow",
      "Action": "ec2:StopInstances",
      "Resource": "arn:aws:ec2:<region>:<account-id>:instance/*"
    },
    {
      "Sid": "IntendedProbe",
      "Effect": "Allow",
      "Action": "sts:GetCallerIdentity",
      "Resource": "*"
    }
  ]
}

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 labelKeyRequiredValue
Access Key IDaccessKeyIdYesAKIA…
Secret Access KeysecretAccessKeyYesThe IAM secret access key
RegionregionYesus-east-1 (a valid region token)
Session TokensessionTokenOptionalSTS session token, for temporary credentials

Credentials are stored per-tenant, AES-256-GCM-encrypted, and never displayed back.

Run Test connection#

  1. Finish the connect wizard to store the credential.
  2. On the connector card, click Test connection.
  3. The adapter performs STS GetCallerIdentity, SigV4-signed. A green result means the keys are valid and the signature verified.

Next steps#

AWS Connector Setup (Beta) | Intended