Design Notes for dxaws-website¶
Architecture¶
dxaws-website is an orchestration module that composes primitive modules (S3, ACM, CloudFront, DNS) without implementing raw AWS service logic in this package.
This module:
does not expose a
Modulefacadedoes not expose legacy planner/executor top-level APIs
does expose a manager-centric flow:
get_current -> plan -> apply -> execute
Typed inputs and outputs¶
Primary intent is represented by WebsiteDesired.
Current state is represented by WebsiteCurrent.
Execution returns WebsiteResult and optional WebsiteOutputs (when apply runs).
Convergence actions¶
WebsiteManager.plan() chooses one action:
create: required components are missingupdate: some components exist but state is partial or not ready for full convergencewait: async readiness is pending (for example ACM certificate still validating, or CloudFront distribution still deploying)noop: all required components exist and are ready
noop is only selected when all of the following are true:
origin is present
certificate exists and is issued
distribution exists and is deployed
DNS records are ready
Execution behavior¶
WebsiteManager.execute(desired):
Reads current state via provider
get_current.Plans an action.
Applies only for
createandupdate.Returns outcome:
appliedwhen changes were executedwaitwhen convergence is pending async readinessnoopwhen already converged
Boundaries and dependencies¶
The manager orchestrates and delegates to provider operations:
ensure origin
ensure certificate
ensure distribution
ensure DNS
Provider implementations can route to primitive modules/adapters. The orchestration layer remains responsible for action selection and stable result shape.