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
Modulefacade - does 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.