npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@unbill/aws-tools

v1.6.5

Published

Runs several differnt AWS provisioning tasks

Downloads

12

Readme

To install:

npm install -g @unbill\aws-tools

Universal command line options

The following parameters can be applied to any command

--region -r - Specify region other than your default AWS settings

--profile -P - (large P) Specify profile other than your default AWS profile

--destroy -d - Destroy the resource instead of creating/updating it

Commands

cloudfront-website

Creates a cloudfront website with failover

Creates an S3 bucket in two different regions (primary and secondary). Creates a CloudFront distro that fails over from the primary S3 bucket to the secondary S3 bucket Creates a Route 53 entry for the Cloudfront distro

To run in build mode (upsert assets)

aws-tools cf-web -p ./path/to/params.json

or

aws-tools cf-web --parameters ./path/to/params.json

other cf-web aliases that can be used: cloudfront-website or cfw

To run in destroy mode (delete all assets)

aws-tools cf-web -p ./path/to/params.json -d

or

aws-tools cf-web -p ./path/to/params.json --destroy

Sample Params.json File

A sample is available in ./samples/cloudfront-website/testparams.json

[
  {
    "ParameterKey": "ProductName",
    "ParameterValue": "biller-direct"
  },
  {
    "ParameterKey": "DomainPrefix",
    "ParameterValue": "test-"
  },
  {
    "ParameterKey": "HostedZoneName",
    "ParameterValue": "unbill.io"
  },
  {
    "ParameterKey": "AccountId",
    "ParameterValue": "211130626593"
  },
  {
    "ParameterKey": "CertificateId",
    "ParameterValue": "506c69f6-4af0-4ca5-907a-0003f3c59316"
  },
  {
    "ParameterKey": "UpdateCloudFront",
    "ParameterValue": false
  }
]
  • ProductName - Used in a variety of name building scenarios, basically the name of the website product you are deploying
  • DomainPrefix - Added to the front of your domain and other naming locations, typically for different environments (staging/test/sandbox etc...)
  • HostedZoneName - The hosted zone in Route 53 to setup the DNS entry
  • AccountId - ID of the AWS account to deploy to
  • CertificateId - ID of the certificate to use for DNS registration
  • UpdateCloudFront - If CloudFront exists, it is not normally updated for latency reasons. This flag forces an update.

ec2-ssh-key

Imports an EC2 SSH public key into AWS

To run in build mode (upsert assets)

aws-tools ec2-ssh-key -p ./path/to/params.json

or

aws-tools ssh --parameters ./path/to/params.json

ec2-ssh-key aliases that can be used: ec2-ssh, ssh-key or ssh

To run in destroy mode (delete the key)

aws-tools ssh -p ./path/to/params.json -d

or

aws-tools ssh-key -p ./path/to/params.json --destroy

Sample Params.json File

A sample is available in ./samples/ec2-ssh-key/testparams.json

[
  {
    "ParameterKey": "KeyName",
    "ParameterValue": "unbill-dev"
  },
  {
    "ParameterKey": "Replace",
    "ParameterValue": false
  }
]
  • KeyName - Name of the key to perform operations on
  • Replace - Indicates that key should be replaced if it is present

secrets-manager

Imports values into the AWS secrets manager. The values to be imported must be available as environment variables. Typically, these would be stored as settings in TravisCI.

To run in build mode (upsert assets)

aws-tools secrets-manager --environment STAGING --region AWS_REGION

or

aws-tools secrets --environment STAGING --region AWS_REGION

secrets-manager aliases that can be used: secrets

To run in destroy mode (delete the secrets)

aws-tools secrets --environment STAGING -d --region AWS_REGION

or

aws-tools secrets --environment STAGING --destroy --region AWS_REGION

  • environment - The environment that keys should be imported from
  • prefix - The assumption is that all secrets to be uploaded will begin with AWSPARAM, if you wish to change this prefix, us this parameter

params-manager

Imports values into the AWS ssm parameter manager. The values to be imported must be available as environment variables. Typically, these would be stored as settings in TravisCI.

To run in build mode (upsert assets)

aws-tools params-manager --environment STAGING --region AWS_REGION

or

aws-tools params --environment STAGING --region AWS_REGION

params-manager aliases that can be used: params

To run in destroy mode (delete the params)

aws-tools params --environment STAGING -d --region AWS_REGION

or

aws-tools params --environment STAGING --destroy --region AWS_REGION

  • environment - The environment that keys should be imported from
  • prefix - The assumption is that all secrets to be uploaded will begin with AWSPARAM, if you wish to change this prefix, us this parameter

ssm-param

Imports an EC2 SSH public key into AWS

To run in build mode (upsert assets)

aws-tools ec2-ssh-key -p ./path/to/params.json

or

aws-tools ssh --parameters ./path/to/params.json

ec2-ssh-key aliases that can be used: ec2-ssh, ssh-key or ssh

To run in destroy mode (delete the key)

aws-tools ssh -p ./path/to/params.json -d

or

aws-tools ssh-key -p ./path/to/params.json --destroy

Sample Params.json File

A sample is available in ./samples/ec2-ssh-key/testparams.json

[
  {
    "ParameterKey": "KeyName",
    "ParameterValue": "unbill-dev"
  },
  {
    "ParameterKey": "Replace",
    "ParameterValue": false
  }
]
  • KeyName - Name of the key to perform operations on
  • Replace - Indicates that key should be replaced if it is present

s3-replica-set

Creates an S3 bucket with failover to a secondary bucket

Creates an S3 bucket in two different regions (primary and secondary). Sets up replication from the primary to the secondary

To run in build mode (upsert assets)

aws-tools s3-replica-set -p ./path/to/params.json

or

aws-tools s3-set --parameters ./path/to/params.json

other s3-replica-set aliases that can be used: s3-set or s3-replica

To run in destroy mode (delete all assets)

aws-tools s3-replica-set -p ./path/to/params.json -d

or

aws-tools s3-replica -p ./path/to/params.json --destroy

Sample Params.json File

A sample is available in ./samples/s3-replica-set/testparams.json

[
   {
    "ParameterKey": "ProductName",
    "ParameterValue": "consumer-logs"
  },
  {
    "ParameterKey": "DomainPrefix",
    "ParameterValue": "test-"
  },
  {
    "ParameterKey": "HostedZoneName",
    "ParameterValue": "unbill.io"
  },
  {
    "ParameterKey": "AccountId",
    "ParameterValue": "211130626593"
  },
  {
    "ParameterKey": "ReplicationRole",
    "ParameterValue": "bdcs-s3-replication"
  },
  {
    "ParameterKey": "ForceDelete",
    "ParameterValue": false
  }
]
  • ProductName - Used in a variety of name building scenarios, basically the root name of the bucket you are deploying
  • DomainPrefix - Added to the front of your bucket and other naming locations, typically for different environments (staging/test/sandbox etc...)
  • HostedZoneName - The hosted zone in Route 53 to setup the DNS entry
  • AccountId - ID of the AWS account to deploy to
  • ReplicationRole - AWS role used to perform replication. This must be set up beforehand.
  • ForceDelete - When deleting, if this is true, all bucket contents will be deleted automatically instead of preventing deletion (be careful)

rds-global

Creates an Aurora MySQL Global database cluster across two regions (us-east-1 and us-west-2)

To run in build mode (upsert assets)

aws-tools rds-global -p ./path/to/params.json --username admin --password password

or

aws-tools rds --parameters ./path/to/params.json --username admin --password password

other rds-global aliases that can be used: rds

To run in destroy mode (delete all assets)

aws-tools rds-global -p ./path/to/params.json -d --username admin --password password

or

aws-tools rds -p ./path/to/params.json --destroy --username admin --password password

Sample Params.json File

A sample is available in ./samples/s3-replica-set/testparams.json

[
   {
    "ParameterKey": "Environment",
    "ParameterValue": "staging"
  },
  {
    "ParameterKey": "AccountId",
    "ParameterValue": "211130626593"
  },
  {
    "ParameterKey": "DatabaseName",
    "ParameterValue": "ALTR"
  },
  {
    "ParameterKey": "DbInstanceClass",
    "ParameterValue": "db.r4.large"
  },
  {
    "ParameterKey": "DeletionProtection",
    "ParameterValue": false
  },
  {
    "ParameterKey": "BackupRetentionDays",
    "ParameterValue": 5
  },
  {
    "ParameterKey": "DbKmsKeyAlias",
    "ParameterValue": "unbill-db"
  },
  {
    "ParameterKey": "Port",
    "ParameterValue": 3306
  },
  {
    "ParameterKey": "PubliclyAccessible",
    "ParameterValue": true
  },
  {
    "ParameterKey": "InstancesPerRegion",
    "ParameterValue": 2
  }
]
  • Environment - Used when setting up database naming (ex: prod, dev)
  • AccountId - ID of the AWS account to deploy to
  • DatabaseName - Name of the database to create (on cluster creation)
  • DbInstanceClass - Class of database instances to create (see AWS documentation, smallest valid size is db.r4.large)
  • DeletionProtection - Are the clusters protected from deletion (does not apply to instances)
  • BackupRetentionDays - Length of DB backup retention
  • DbKmsKeyAlias - The KMS key used to encrypt the database
  • Port - Port DB is accessed from
  • PubliclyAccessible - Is this database publicly accessible
  • InstancesPerRegion - The number of instances that are created in each region