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.8.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.8-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: npmctl_route53-0.3.8.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.8.tar.gz
Algorithm Hash digest
SHA256 c8f9720203b24fdcd107e92fd60c431244a721d33c988a20f4b8cb034c40f421
MD5 e3c0c64c210ba8beb7ac4616a849fa0d
BLAKE2b-256 80e75cae083454cf91e4e31fb7fa191ae02b6975fbd1a848bd95ccad2147e977

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: npmctl_route53-0.3.8-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.8-py3-none-any.whl
Algorithm Hash digest
SHA256 2b5c73dbdbeafcea3c5c1c67961f2bc07236b73727dab1c887c467b6cd275694
MD5 21a7978f9e319a4edc341ab8d3940559
BLAKE2b-256 8b41ea3ad02929e278370fa428b5fe436caa562a0f449719f5e33f4d4eb146ac

See more details on using hashes here.

Provenance

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