Package: awsparams
NoteVersion 1 of this library is drastically different than previous versions.
The CLI Application hasn't changed but the library it uses has.
Please pay extra attention to the examples below or look at the underlying class for more information.Why this script?The current (Jul 2017) AWS Console for the Systems Manager Parameter
Store is good for adding and editing the values of parameters, but
misses key productivity functions like copying (especially en mass),
renaming, etc. The currentaws ssmCLI is very similar in
functionality to the AWS Console.This script is to automate a lot of the manual work currently needed
with the existing AWS-provided UIs.DocsFull documentation can be found here:https://awsparams.readthedocs.io/en/latest/InstallationAWSParams requires Python 3.6+Depending on your Python3.6 install eitherpip install awsparamsorpip3 install awsparamsIf you're on windows, make sure thatC:\Users\{your user}\AppData\Roaming\Python\{your python version}\Scriptshas been added to your user path.UsageLibrary:fromawsparamsimportAWSParams# Using default Profileaws_params=AWSParams()# Using a Custome Profileaws_params=AWSParams('MyProfile')#get a single parameterparam=get_parameter('test1')# ParamResult(Name='test1', Value='test123', Type='SecureString')#ParamResult is a named tuple with properties Name, Value, Typeparam.Name# 'test1'param.Value# 'test123'param.Type# 'SecureString'# get multiple parameters with a prefixparams=get_all_parameters(prefix="testing.testing.")# [ParamResult(Name='testing', Value='1234', Type='String'),#  ParamResult(Name='testing2', Value='1234', Type='String')]# get multiple parameters by pathparams=get_all_parameters(prefix="/testing/testing/",by_path=True)# [ParamResult(Name='testing', Value='1234', Type='String'),#  ParamResult(Name='testing2', Value='1234', Type='String')]# get multiple parameters by pathparams=get_all_parameters(prefix="/testing/testing/",by_path=True,trim_name=False)# [ParamResult(Name='/testing/testing/testing', Value='1234', Type='String'),#  ParamResult(Name='/testing/testing/testing2', Value='1234', Type='String')]# get just a parameter valuevalue=get_parameter_value('test1')# test123For more detailed examples of usage as a library see the cli implementationhere.CLI application:Usage can be referenced by runningawsparams --helporawsparams subcommand --helpcommands:Usage: awsparams [OPTIONS] COMMAND [ARGS]...

Options:
--version  Show the version and exit.
--help     Show this message and exit.

Commands:
cp   Copy a parameter, optionally across accounts
ls   List Paramters, optional matching a specific...
mv   Move or rename a parameter
new  Create a new parameter
rm   Remove/Delete a parameter
set  Edit an existing parameterCommand Examplesls usagels names only:awsparams lsls with values no decryption:awsparams ls --valuesorawsparams ls -vls with values and decryption:awsparams ls --with-decryptionls by prefix:awsparams ls appname.prdls with values, formatted for using in a Jetbrains run configuration:awsparams ls -r <prefix>orawsparams ls --jetbrains-run-config <prefix>ls with values, formatted for using in a.envfile:awsparams ls -e <prefix>orawsparams ls --dot-env <prefix>ls with values, formatted for using in a.tfvarsfile:awsparams ls -t <prefix>orawsparams ls --tfvars <prefix>For the above two options, add the-qor--esc-quotesflag for adding\in front of any quotation marks in
the values, such as in stringify-ed JSON objects. Most.envfile parsers don't require this, but.tfvarsprobably does.Add the--delimiter <delimiter>(or-d <delimiter>) option to override the default delimiter (/), if necessary.new usagenew interactively:awsparams newnew semi-interactively:awsparams new --name appname.prd.usernamenew non-interactive:awsparams new --name appname.prd.usrname --value parameter_value --description parameter_descriptoncp usagecopy a parameter:awsparams cp appname.prd.username newappname.prd.usernamecopy set of parameters with prefix appname.dev. to appname.prd.:awsparams cp appname.dev. appname.prd. --prefixcopy set of parameters starting with prefix repometa-generator.prd
overwrite existing parameters accross different accounts:awsparams cp repometa-generator.prd --src_profile=dev --dst_profile=trn --prefix=Truecopy single parameters accross different accounts:awsparams cp appname.dev.username appname.trb.usContributingTo contribute:Make a PR to masterIn your changes, make sure to manually bump the package version in thepyproject.tomlfile to whatever version
you think is appropriate.Once the PR is approved, merge it in to master.Create a new release and a new tag where the version in the tag is equal to the new version you set in thepyproject.tomlfile.Once you publish the release, check the GitHub actions and notice that it is automatically deploying the package.Confirm that the deploy succeeds.If anything goes wrong, fix it and then re-run the workflow.You may have to delete your release/tag and recreate it.