ops0ops0

AWS Integration

ops0 connects to AWS using either IAM access keys or a cross-account role. For most organizations, Assume Role is the preferred option because it keeps access scoped and avoids storing long-lived credentials.


Adding the Integration

Go to Settings > Integrations > Add Integration.

Select AWS

Choose AWS from the provider list.

Choose an Authentication Method

Select either Access Keys or Assume Role.

Enter Credentials

Provide the required AWS identifiers and region settings.

Connect

Click Connect to verify the integration.

AWS integration setup form in ops0

Authentication Methods

Assume Role

Recommended for cross-account access, stronger boundaries, and easier rotation.

Access Keys

Use an IAM access key and secret when role assumption is not available.


Access Keys Method

FieldRequiredDescription
NameYesIntegration name
Access Key IDYesIAM access key
Secret Access KeyYesIAM secret key
Default RegionYesDefault AWS region

Assume Role Method

FieldRequiredDescription
NameYesIntegration name
Role ARNYesIAM role to assume
External IDYesSecurity identifier used in the trust policy
Default RegionYesDefault AWS region
Recommended

Use Assume Role for production environments. It provides better security boundaries and simplifies credential rotation.


Setting Up Assume Role

Create the Role

In the AWS Console, create an IAM role for ops0.

Add the Trust Policy

Allow ops0 to assume the role using the AWS account and external ID provided during setup.

Attach Permissions

Grant the role the discovery or deployment permissions you want ops0 to use.

Copy the Role ARN

Paste the Role ARN into the integration form in brew.ops0.ai.

Trust Policy

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:root"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": "your-external-id"
        }
      }
    }
  ]
}

Required AWS Permissions

For IaC Deployments

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:*",
        "s3:*",
        "iam:*",
        "rds:*",
        "lambda:*"
      ],
      "Resource": "*"
    }
  ]
}

For Discovery Only

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "s3:List*",
        "rds:Describe*",
        "lambda:List*"
      ],
      "Resource": "*"
    }
  ]
}

Troubleshooting

Access Denied

Verify the trust policy includes the correct AWS account ID and external ID.

Role Not Found

Confirm the IAM role exists and the copied ARN is exact.

Invalid External ID

Use the value shown in ops0 rather than a custom identifier.