Skip to main content

AWS Route 53 DNS provider extension for npmctl.

Project description

npmctl-route53

AWS Route 53 DNS provider plugin for npmctl

Extend npmctl with Route 53-backed DNS record management for declarative workflows, provider discovery, and DNS-aware automation.

PyPI version Python versions CI Apache 2.0 License

npmctl-route53 package hits npmctl-route53 downloads

npmctl architecture infographic

npmctl-route53 is the AWS Route 53 DNS provider package for npmctl. Install it when you want desired-state DNS records or DNS diagnostics to resolve through Route 53 instead of using only the base npmctl package.

Supported Python Versions

npmctl-route53 supports Python 3.10, 3.11, 3.12, 3.13, and 3.14.

Why npmctl-route53

  • Adds Route 53 DNS provider discovery to npmctl
  • Lets DNS workflows live beside proxy and certificate desired state
  • Keeps AWS DNS dependencies out of the core CLI package
  • Supports operator diagnostics through npmctl dns doctor
  • Provides client helpers for Route 53 DNS change-batch workflows

FAQ

What is npmctl-route53?

Answer: npmctl-route53 is a plugin package that teaches npmctl how to talk to AWS Route 53 through boto3 for DNS record operations and DNS provider diagnostics.

When do I need npmctl-route53?

Answer: You need npmctl-route53 when your npmctl workflow includes Route 53 hosted-zone DNS records or when you want npmctl to validate Route 53 DNS connectivity and credentials.

Does npmctl-route53 work without npmctl?

Answer: No. npmctl-route53 is an extension package for npmctl, not a standalone CLI.

Can npmctl-route53 set DNS records?

Answer: Yes. The Route 53 provider supports declarative A, AAAA, CNAME, TXT, MX, SRV, and CAA writes through ChangeResourceRecordSets. MX records require priority.

What credentials are required?

Answer: Route 53 access uses the standard AWS credential chain or ROUTE53_PROFILE. Diagnostics require hosted-zone and record-set list permissions; mutation helpers require route53:ChangeResourceRecordSets.

Install

Install the base CLI and the Route 53 provider package together:

pipx install npmctl
pipx inject npmctl npmctl-route53
npmctl plugins list

With uv:

uv tool install npmctl
uv tool install npmctl-route53
npmctl plugins list

Inside a virtual environment:

python -m venv .venv
. .venv/bin/activate
python -m pip install npmctl npmctl-route53
npmctl plugins list

Configure Route 53

Use the standard AWS credential chain:

export AWS_ACCESS_KEY_ID=...
export AWS_SECRET_ACCESS_KEY=...
export AWS_SESSION_TOKEN=...

Or use a named profile:

export AWS_PROFILE=production-dns

Optional package-specific override:

export ROUTE53_PROFILE=production-dns

Verify Plugin Discovery

Check that npmctl can discover the provider:

npmctl plugins list
npmctl dns doctor --provider route53

Minimal DNS Workflow

Once the provider is installed and configured, npmctl can validate, plan, apply, or diagnose Route 53-backed DNS behavior through the base CLI:

npmctl validate desired-state/dns.yaml
npmctl plan desired-state/dns.yaml --owner site-a
npmctl apply desired-state/dns.yaml --owner site-a
npmctl dns providers
npmctl dns zones --provider route53
npmctl dns records --provider route53 --zone example.com

Route 53 API Surface

The provider follows the AWS Route 53 API through boto3:

  • ListHostedZones: discover hosted zones.
  • ListResourceRecordSets: list records in one hosted zone.
  • ChangeResourceRecordSets with CREATE: create record sets.
  • ChangeResourceRecordSets with UPSERT: create or update record sets.
  • ChangeResourceRecordSets with DELETE: delete record sets.

Required IAM actions for diagnostics:

  • route53:ListHostedZones
  • route53:ListResourceRecordSets

Required IAM action for mutation helpers:

  • route53:ChangeResourceRecordSets

Programmatic Record Operations

from npmctl_route53 import Route53Client, Route53Config

client = Route53Client(Route53Config.from_env())
client.create_record("example.com", type="A", name="www", value="192.0.2.10", ttl=300)
client.upsert_record("example.com", type="CNAME", name="app", value="target.example.net", ttl=300)
client.upsert_record("example.com", type="MX", name="@", value="mail.example.com", ttl=300, priority=10)
client.delete_record("example.com", type="A", name="www", value="192.0.2.10", ttl=300)

Safety Notes

  • Route 53 changes are hosted-zone scoped. Confirm the selected hosted zone before mutation.
  • Prefer IAM policies scoped to the intended hosted zone ARN.
  • UPSERT can overwrite live DNS answers. Use create-only workflows when adoption is not explicit.
  • Use npmctl owner metadata for desired DNS records so apply remains owner-scoped.

More Documentation

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

npmctl_route53-0.3.10.tar.gz (6.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

npmctl_route53-0.3.10-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file npmctl_route53-0.3.10.tar.gz.

File metadata

  • Download URL: npmctl_route53-0.3.10.tar.gz
  • Upload date:
  • Size: 6.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for npmctl_route53-0.3.10.tar.gz
Algorithm Hash digest
SHA256 810deee360eb06ba73515d6a6f8474b337746f4925fb203659db9108b03ddb56
MD5 46d9064e1fe7df4d3db81c5bd73dcf13
BLAKE2b-256 b083c52a97e56717f868f404c5d816ec8612092d143000c2eae7cb3298535156

See more details on using hashes here.

Provenance

The following attestation bundles were made for npmctl_route53-0.3.10.tar.gz:

Publisher: release.yml on groupsum/npmctl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file npmctl_route53-0.3.10-py3-none-any.whl.

File metadata

File hashes

Hashes for npmctl_route53-0.3.10-py3-none-any.whl
Algorithm Hash digest
SHA256 d351b39f5e666098568d8d7b7796127542ee66a65c27e9c14d28e0e45a4bc3d1
MD5 56328e9298112f42ff93494b58dbd4b9
BLAKE2b-256 ddce8f462e7fbe19734775e780ae2b69682a4a514da17de43140782ad9f320f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for npmctl_route53-0.3.10-py3-none-any.whl:

Publisher: release.yml on groupsum/npmctl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page