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¶
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.