Skip to content

Our incident: CloudFront needs account verification

2 min read · main part only; folded sections are optional

After this you can answer: What if CloudFront creation is blocked even though the infrastructure code and IAM look correct?

MiniTickets’ deploy notes record CloudFront blocked pending account verification. A representative AWS error is Your account must be verified before you can add new CloudFront resources. The notes do not preserve the original full error line or a completed verification.

CloudFront rejects resource creation before an edge distribution exists. This is Allowed at the account/service level, not an origin Reach failure or application Password issue. Read the explanation after AccessDenied: missing IAM permission, explicit policy deny and account verification need different repairs.

flowchart TB
A[CloudFront creation denied] --> B{Error names account verification?}
B -->|yes| C[Confirm account and contact AWS Support]
B -->|no| D[Inspect IAM, SCP and error detail]
C --> E{Need a usable app now?}
E -->|yes| F[Use reviewed ALB-only mode]
E -->|no| G[Wait for AWS decision]

Rank by the actual wording:

  1. Verification named: an account restriction. More IAM grants do not complete verification.
  2. Policy denial named: the deploy role lacks the requested CloudFront action or a policy explicitly denies it.
  3. Unexpected account: credentials target a different account than intended. Confirm identity before asking Support about it.

Read the failed deploy’s exact error and request ID, if retained. Confirm the account menu, CloudFront → Distributions, and existing AWS Support correspondence. Absence of a distribution alone does not identify the cause.

Ask AWS Support to review the account restriction, including the error and request ID. MiniTickets instead keeps the app reachable through its supported ALB-only mode: cdnEnabled: false, an ACM certificate and its own domain. No verification resolution is claimed. CloudFront’s chapter explains both paths.

Check account/service readiness before depending on a CDN launch. Keep the fallback tested. Switch modes only while entry is off: both modes use listener port 80. See infra/src/entry/https-listener.ts → createHttpsListener.

Advanced: What the incident record does and does not establish

The frozen deploy-day notes say CloudFront remains inactive pending account verification. They do not retain a request ID, Support case category, completion date or original full error transcript. The quoted phrase above is a representative AWS service message, also preserved in an AWS-owned example repository issue; it is not presented as our recovered original log.

Current code is authoritative for behavior: infra/src/entry/cdn.ts → createCdn defines CloudFront mode, infra/src/entry/https-listener.ts → createHttpsListener defines direct HTTPS, and infra/Pulumi.dev.yaml selects the direct mode. The committed domain is minitickets.theversehub.in. Its certificate and DNS records have their own validation requirements, separate from CloudFront account verification.

AWS documents CloudFront API events and their region. Do not print a distribution’s origin custom-header value while investigating; listing distribution metadata is enough for the checks above.

Read this book online: https://book.theversehub.in/