API Reference¶
This page documents the stable contracts exposed by dxaws-acm.
The goal of this module is to provide a small, durable surface area that higher-level orchestrators (e.g., dxaws-website) can depend on without coupling to AWS SDK details.
Primary Entry Point¶
AcmManager¶
from dxaws_acm.manager import AcmManager
The manager coordinates planning and execution.
Primary method:
AcmManager.execute(desired: AcmDesired, *, options: ExecuteOptions | None = None) -> AcmManagerResult
This method:
Reads current state
Plans differences
Applies changes
Optionally waits for convergence
It is safe to call repeatedly (idempotent).
Desired Model¶
AcmDesired¶
from dxaws_acm.models import AcmDesired
Fields:
domain_name: strsubject_alternative_names: list[str]hosted_zone_id: strregion: strtags: dict[str, str]
This describes the target certificate state.
Result Model¶
AcmManagerResult¶
Returned from execute().
Key fields:
desiredcurrentplanoutputsoutcome("noop" | "applied" | "failed")
AcmOutputs¶
Key fields:
certificate_arn: strstatus: str
Execution Options¶
ExecuteOptions¶
from dxaws_acm.manager import ExecuteOptions, ApplyOptions
Fields:
apply_options: ApplyOptions | Noneemit_events: bool
ApplyOptions¶
Controls polling and wait behavior.
Fields:
max_wait_seconds: intpoll_interval_seconds: intdns_ttl: intemit_events: bool
Providers¶
Providers encapsulate AWS-specific logic.
AwsProvider¶
from dxaws_acm.providers.aws import AwsProvider
Responsibilities:
list_certificates()describe_certificate()request_dns_validated_certificate()delete_certificate()get_dns_validation_records()
All boto3 interaction lives here.
Route53RecordProvider¶
from dxaws_acm.providers.route53 import Route53RecordProvider
Responsibilities:
resolve_zone_id(zone_name: str) -> strupsert_record(...)delete_record(...)
Stability Contract¶
The following are considered stable integration points:
AcmManager.execute()AcmDesiredAcmManagerResultAcmOutputs
Internal planner logic and AWS normalization details are intentionally hidden behind these contracts.
Higher-level modules should depend only on these surfaces.