Setting this up requires the
org:service-accounts and org:trusts org scopes, plus your organization id. See Required Synthetiq permissions and check yours with synthetiq whoami.Issue the two certificates
Request both ACM certs, add the 2 validation CNAMEs at your DNS provider, and wait for
ISSUED. Note the two ARNs. See Certificates. (Validation can take a while — start it first.)Create the GitHub repo
Create a private repo from Or use Use this template in the GitHub UI.Then add the
SynthetiqAI/infra-template — it ships the workflow, a pinned @synthetiq/cli, the private-registry .npmrc, and an _infra/ skeleton:SYNTHETIQ_NPM_KEY repo secret (Settings → Secrets and variables → Actions → Repository secrets).Create the two AWS roles
In the target AWS account, create two roles trusting GitHub OIDC, each scoped to the repo you just created. Replace
<github-org>/<repo> with it — e.g. acme/synthetiq-infra:- plan — trusts
repo:<github-org>/<repo>:pull_request; policy fromsynthetiq infra permissions --stage generate - apply — trusts
repo:<github-org>/<repo>:ref:refs/heads/main; policy fromsynthetiq infra permissions --stage provision
Create the Synthetiq service account
Find the role id for CI Provision Apply:Create the service account with that role (e.g. name it Create the OIDC trust so CI can authenticate as it — use the same repo as the apply role:See Service Account.
CI Provisioner):Set up the repo locally
Clone the repo:Install the pinned CLI (this also generates the lockfile CI installs from):Fill the three values in See CI Integration for the full workflow it wraps.
.github/workflows/synthetiq-infra.yml — the two role ARNs (use the ARNs you noted from the roles step; <your-aws-account-id> is your 12-digit account number) and your org id:Author the config and open the PR
On a branch, generate the config:With no AWS credentials, init runs in offline mode: enter your VPC and public subnet ids and the two certificate ARNs. See Generating synthetiq.yaml.Commit the workflow edit, the lockfile, and the config together, then push and open the PR:The pull request CI job runs against the real account and posts the proposed CloudFormation diff plus a summary of the proposed changeset as a PR comment.
Review & merge
Review the diff, then merge. On merge the CI applies the changeset on the target AWS account. The job log ends with the 3 app DNS records that you will need to configure to finalize the provisioning — this is a one-time setup, only needed on the initial provisioning (unless you later change the
domain configuration for Synthetiq apps). See DNS setup for more details.
