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 A and CNAME 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 A and CNAME records?

Answer: Yes. Route 53 supports A and CNAME record sets through ChangeResourceRecordSets, and this package exposes helpers for CREATE, UPSERT, and DELETE batches.

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 or diagnose Route 53-backed DNS behavior through the base CLI:

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.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 future apply support can remain 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.7.tar.gz (5.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.7-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: npmctl_route53-0.3.7.tar.gz
  • Upload date:
  • Size: 5.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.7.tar.gz
Algorithm Hash digest
SHA256 efa0d1f1d892b7035021d1a5efa4504173d8d3df775317c18b6514d9f7195139
MD5 9eda074b3bf3875f4bd020702a9350ba
BLAKE2b-256 3cb23161cd864ef89120a0c4bb54fca0ea0e26520638e06abcd4c6c073345251

See more details on using hashes here.

Provenance

The following attestation bundles were made for npmctl_route53-0.3.7.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.7-py3-none-any.whl.

File metadata

  • Download URL: npmctl_route53-0.3.7-py3-none-any.whl
  • Upload date:
  • Size: 8.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for npmctl_route53-0.3.7-py3-none-any.whl
Algorithm Hash digest
SHA256 63c4c8a1717ade4e0619db5eb38fdb1ce16c2e7bfb077084af485a50a9132fcd
MD5 67b6d206cb2fe5a0decb6585d98ea4ac
BLAKE2b-256 c920c84758b4241176452f2f5b0d6e5c6bf50508ad14b181937a3b8134af0527

See more details on using hashes here.

Provenance

The following attestation bundles were made for npmctl_route53-0.3.7-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