Our incident: CloudFront needs account verification
After this you can answer: What if CloudFront creation is blocked even though the infrastructure code and IAM look correct?
Symptom
Section titled “Symptom”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.
Read the error first
Section titled “Read the error first”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.
Decide
Section titled “Decide”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]Likely causes
Section titled “Likely causes”Rank by the actual wording:
- Verification named: an account restriction. More IAM grants do not complete verification.
- Policy denial named: the deploy role lacks the requested CloudFront action or a policy explicitly denies it.
- Unexpected account: credentials target a different account than intended. Confirm identity before asking Support about it.
How to check
Section titled “How to check”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.
These identify the current account and distribution metadata; neither proves permission to create.
export AWS_PROFILE=ticketliteaws sts get-caller-identityaws cloudfront list-distributions --query 'DistributionList.Items[].{Id:Id,Comment:Comment,Status:Status}'aws cloudtrail lookup-events --region us-east-1 --lookup-attributes AttributeKey=EventSource,AttributeValue=cloudfront.amazonaws.com --query 'Events[].{Time:EventTime,Name:EventName,Id:EventId}'Inspect CreateDistribution or CreateDistributionWithTags near the failure: caller,
errorCode, errorMessage and request ID. CloudFront global API events appear in us-east-1.
Event history has limited retention; the deploy log may be the surviving evidence.
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.
Prevent
Section titled “Prevent”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.
Say it in 30 seconds
Section titled “Say it in 30 seconds”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/