What it provides
Connecting AWS lets investigations discover and query the data sources behind it:
Each has its own page covering what it supports and how it’s queried. CloudWatch is region-scoped, so investigations see one CloudWatch data source per region you enable. Selecting RDS discovers both RDS and Aurora databases (
aurora-postgresql / aurora-mysql); they appear as PostgreSQL or MySQL children, not a separate Aurora type.
Setup
Setting up AWS has two parts: give incident.io credentials that can read your telemetry, then choose the accounts and regions investigations may query.Credentials
Choose one of two ways for incident.io to authenticate to your account.- OIDC IAM role (recommended). Create a role that incident.io assumes with
sts:AssumeRoleWithWebIdentity. You provide the role ARN. The trust policy federatesaccounts.google.comand pins two conditions:accounts.google.com:sub(the numeric unique ID of incident.io’s Google service account, shown in the setup form) andaccounts.google.com:oaud(incident-io-telemetry). Do not pinaccounts.google.com:aud. Sessions are short-lived, so there are no long-lived keys to store or rotate. - Static access keys. Create an IAM user with the same permissions and paste in its access key ID and secret access key. This works for a single account, but the keys are long-lived and you own rotating them, so prefer the role.
Permissions per service
Grant only the actions for the services you want investigations to use. The in-product setup emits an IAM policy with one block per service, so you can keep a block to allow that service or drop it to hold it back:- CloudWatch:
cloudwatch:ListMetrics,cloudwatch:GetMetricData, and the CloudWatch Logs Insights actionslogs:DescribeLogGroups,logs:StartQuery,logs:GetQueryResults, andlogs:StopQuery.logs:StopQuerylets a running query be canceled rather than left to finish. - EKS:
eks:ListClustersandeks:DescribeClusterto discover clusters. Access to workloads inside each cluster is granted separately: create an EKS access entry for the role or user, and associate the managedAmazonEKSViewPolicyon each cluster. - OpenSearch:
es:ListDomainNames,es:DescribeDomains,es:ListTags, and the data-plane callses:ESHttpGet,es:ESHttpPost, andes:ESHttpHead. Domains also need a domain access policy that allows thosees:ESHttp*calls. If fine-grained access control (FGAC) is enabled, map the principal to an OpenSearch backend role with read privileges. - RDS:
rds:DescribeDBInstances,rds:DescribeDBClusters, andrds:DescribeBlueGreenDeploymentsfor discovery. The IAM policy covers discovery of your RDS and Aurora databases. After you connect, choose how each database authenticates: RDS IAM (rds-db:connecton the database user, with no stored password) or a username and password. Add a proxy if the database isn’t reachable from the public internet.
Connecting
- From the Investigations settings, add a telemetry data source and choose AWS.
- Choose OIDC or access keys, select the services to enable, and follow the in-product instructions to create the role or user. Provide the role ARN, or the access keys, along with a default region.
- Optionally set a region allowlist, the regions investigations may query. Leave it empty to use the default region only.
- Test the connection. Before connecting, incident.io makes read-only calls to each service you selected and reports back exactly which permissions are missing, per service, so you can fix the policy before finishing.
Discovered accounts, regions, and children are disabled by default, so you opt in deliberately. Review what’s found
and enable the ones your team relies on during incidents.
Pre-existing Google OIDC provider
If the AWS account already has an IAM Identity Provider foraccounts.google.com, AWS validates the incoming token against that provider’s Client IDs before it evaluates the role trust policy.
When that list doesn’t include incident.io’s identity, the connection fails with InvalidIdentityToken, even if the trust policy’s sub and oaud conditions are correct.
Fix it by adding our service account’s numeric unique ID (the same value as accounts.google.com:sub in the setup form) to the provider’s Client IDs. Adding only incident-io-telemetry is not enough when the token carries an azp claim, because AWS compares Client IDs against azp in that case.
Check whether a provider already exists in the console under IAM → Identity providers, or with aws iam list-open-id-connect-providers.
Related
CloudWatch
Metrics and logs behind AWS.
Kubernetes
Workloads on your EKS clusters.
OpenSearch
Logs on your OpenSearch domains.
PostgreSQL
SQL against RDS and Aurora Postgres.
Telemetry overview
How providers and data sources fit together.
How telemetry works
Routing, query planning, guidance, and memory.