Skip to main content

dxaws-website / usage

·177 words·1 min

Usage
#

dxaws-website is used through WebsiteManager and typed models.

Minimal execute() example
#

from dxaws_website import WebsiteDesired, WebsiteManager

desired = WebsiteDesired(
    url="foo.dev.dilex.net",
    bucket_name="foo-dev-dilex-net",
    zone_name="dev.dilex.net",
    aliases=("www.foo.dev.dilex.net",),
)

manager = WebsiteManager(provider=...)  # adapter/dispatcher-backed provider
result = manager.execute(desired)

print(result.plan.action)  # create | update | wait | noop
print(result.outcome)      # applied | wait | noop

Example: wait outcome
#

wait is expected when async components are still converging, such as ACM validation or CloudFront deployment.

from dxaws_website import WebsiteDesired, WebsiteManager

desired = WebsiteDesired(
    url="foo.dev.dilex.net",
    bucket_name="foo-dev-dilex-net",
    zone_name="dev.dilex.net",
)

manager = WebsiteManager(provider=...)
result = manager.execute(desired)

if result.outcome == "wait":
    # Re-run later after certificate/distribution status advances.
    print("Website is still converging")

Example: noop outcome
#

When all components are present and ready, execute returns noop and does not apply changes.

from dxaws_website import WebsiteDesired, WebsiteManager

desired = WebsiteDesired(
    url="foo.dev.dilex.net",
    bucket_name="foo-dev-dilex-net",
    zone_name="dev.dilex.net",
)

manager = WebsiteManager(provider=...)
result = manager.execute(desired)

if result.outcome == "noop":
    print("Already converged")

Notes
#

  • WebsiteDesired requires url, and either zone_name or hosted_zone_id.
  • Origin target must be exactly one of bucket_name or origin_domain_name.
  • Acceptance/integration testing is opt-in and should be run explicitly.