Simple AWS SSM Secrets Manager CLI
Securely manage your AWS SSM Parameters β authenticate once via your OS keyring and easily list, get, write, or delete secrets.
- π Secure local credential storage using native OS keyrings
(via
keyring-node, powered bykeyring-rs) - π§© List / get / put / delete SSM parameters
- π Run commands with environment variables from SSM parameters
- π§ Output formatting as
.envor JSON - πͺ Works with AWS SSM Parameter Store, recursive listing included
- π§° Both CLI and programmatic API available
Install globally (recommended):
npm install -g @sidebase/ssm-secretsOr use via npx:
npx ssm-secrets --package @sidebase/ssm-secretsssm-secrets <command> [options]Run ssm-secrets --help or ssm-secrets <command> --help for details.
Store AWS credentials in your system keyring.
ssm-secrets authYouβll be prompted for:
AWS Region: (default: eu-central-1)
AWS Access Key ID:
AWS Secret Access Key:
These are securely saved using your OSβs secret store:
- Linux: Secret Service / GNOME Keyring / KWallet
- macOS: Keychain Access
- Windows: Credential Manager
List all parameters under a given SSM path.
ssm-secrets list <path> [--format <env|json>]ssm-secrets list my/service
ssm-secrets list my/service --format envOutput formats:
json(default) β structured object ({"PARAM": "value"})envβ shell-style lines suitable forsource(PARAM='value')
Retrieve one parameter by path and name.
ssm-secrets get <path> <name>Example:
ssm-secrets get my/service DB_PASSWORDOutputs full JSON metadata from SSM.
Add or update a parameter in SSM.
ssm-secrets put <path> <name> <value>Aliases:
ssm-secrets write ...
ssm-secrets set ...Example:
ssm-secrets put my/service DB_PASSWORD supersecretDisplays when successful:
β
Parameter stored with version 3
Remove a parameter from SSM.
ssm-secrets delete <path> <name>Example:
ssm-secrets delete my/service DB_PASSWORDOutputs:
β
Parameter deleted
Fetches all parameters from a given SSM path, transforms them into environment variables, and executes the provided command with that environment.
Variable names are uppercased and stripped of the path prefix.
Example: /my/app/parameter becomes PARAMETER environment variable.
ssm-secrets exec my/app -- node server.jsIf you need to pass --arguments to your command, separate them using a double dash:
ssm-secrets exec my/app -- node server.js --inspectOptions:
-
--no-overwriteDo not overwrite existing environment variables. -
--ignore <names...>Ignore specific parameter names (case-sensitive, without path prefix). Example:ssm-secrets exec my/app --ignore FOO bar -- node server.js
You can also use the API directly in Node.js:
import { listParameters, getParameter, putParameter, deleteParameter } from '@sidebase/ssm-secrets'
const secrets = await listParameters('my/service')
console.log(secrets)
await putParameter('my/service', 'DB_PASSWORD', 'supersecret')All functions automatically use the credentials stored via ssm-secrets auth.
The CLI supports exporting secrets in .env-compatible format:
ssm-secrets list my/app --format env > .envYou can then source them in a shell:
export $(cat .env | xargs)or directly
source <(ssm-secrets list my/app --format env)Credentials are stored securely in the system keyring via keyring-node:
| Platform | Backend used |
|---|---|
| Linux | Secret Service (works with GNOME Keyring / KWallet) |
| macOS | macOS Keychain |
| Windows | Credential Manager |
Nothing sensitive is stored in plaintext.
ssm-secrets auth
ssm-secrets put my/app DB_USER myuser
ssm-secrets put my/app DB_PASS mypassword
ssm-secrets list my/app --format env
ssm-secrets exec my/app -- node server.jsOutput:
DB_USER='myuser'
DB_PASS='mypassword'
MIT