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 | noopExample: 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#
WebsiteDesiredrequiresurl, and eitherzone_nameorhosted_zone_id.- Origin target must be exactly one of
bucket_nameororigin_domain_name. - Acceptance/integration testing is opt-in and should be run explicitly.