No project description provided
Project description
croudtech-python-aws-app-config
croudtech-python-aws-app-config us a utility to help manage application config using the AWS SSM Parameter Store
There is a cli tool to help set the values and a utility to use the SSM parameters within you application.
Installation
Use the package manager pip to install croudtech-python-aws-app-config.
pip install croudtech-python-aws-app-config
Command Line Usage
Usage: cli.py [OPTIONS] COMMAND [ARGS]...
Options:
--debug / --no-debug
--endpoint-url TEXT
--help Show this message and exit.
Commands:
delete-parameters
get-arns
get-parameters
put-parameters
put-parameters-recursive
manage-redis
--endpoint-url specified the AWS API endpoint URL used. This should be used if using localstack or a similar aws mock service. You can also set the AWS_ENDPOINT_URL
env var to enable this feature.
Sub Commands
delete-parameters
Delete parameters from SSM for a specified app and environment
Usage: cli.py delete-parameters [OPTIONS]
Options:
--environment-name TEXT The environment name [required]
--app-name TEXT The app name [required]
--ssm-prefix TEXT The ssm path prefix
--region TEXT The AWS region
--help Show this message and exit.
get-arns
Get ARNs for published parameters
Usage: cli.py get-arns [OPTIONS]
Options:
--environment-name TEXT The environment name [required]
--app-name TEXT The app name [required]
--ssm-prefix TEXT The ssm path prefix
--region TEXT The AWS region
--include-common / --ignore-common
Include shared variables
--output-format [ecs]
--help Show this message and exit.
get-parameters
Get parameters for a specific app and environment
Usage: cli.py get-parameters [OPTIONS]
Options:
--environment-name TEXT The environment name [required]
--app-name TEXT The app name [required]
--ssm-prefix TEXT The ssm path prefix
--region TEXT The AWS region
--include-common / --ignore-common
Include shared variables
--output-format [json|yaml|environment|environment-export]
--help Show this message and exit.
You can export the variables to your local shell by using
eval $(croudtech-app-config get-parameters --app-name myapp --environment-name myenv --output-format environment-export)
put-parameters
INPUT should be the path to a yaml or json file
Usage: cli.py put-parameters [OPTIONS] INPUT
Options:
--environment-name TEXT The environment name [required]
--app-name TEXT The app name [required]
--ssm-prefix TEXT The ssm path prefix
--region TEXT The AWS region
--encrypted TEXT Do you want these parameters to be encrypted?
--delete-first Delete the values in this path before pushing
(useful for cleanup)
--help Show this message and exit.
put-parameters-recursive
Recursively put parameters from a directory with the following structure
├── EnvironmentName1
│ ├── AppName1.yaml
│ ├── AppName1.secret.yaml
│ ├── AppName2.yaml
│ └──AppName2.secret.yaml
└── EnvironmentName2
├── AppName1.yaml
├── AppName1.secret.yaml
├── AppName2.yaml
└──AppName2.secret.yaml
Files with a secret.yaml or secret.json suffix will have the parameters encrypted in SSM.
Usage: cli.py put-parameters-recursive [OPTIONS] VALUES_PATH
Options:
--ssm-prefix TEXT The ssm path prefix
--region TEXT The AWS region
--delete-first Delete the values in this path before pushing (useful for
cleanup)
--help Show this message and exit.
Managing Redis DB Allocation
Manage redis DB allocation
Sub commands
allocate-db
Usage: python -m croudtech_python_aws_app_config.cli manage-redis allocate-db
[OPTIONS]
Allocate a Redis database for a specified application and environment
Options:
--redis-host TEXT The redis host [required]
--redis-port INTEGER The redis port [required]
--environment-name TEXT The environment name [required]
--app-name TEXT The application name [required]
--help Show this message and exit.
deallocate-db
Usage: python -m croudtech_python_aws_app_config.cli manage-redis deallocate-db
[OPTIONS]
Remove Redis database allocation for the specified application and
environment
Options:
--redis-host TEXT The redis host [required]
--redis-port INTEGER The redis port [required]
--environment-name TEXT The environment name [required]
--app-name TEXT The application name [required]
--help Show this message and exit.
show-db
Usage: python -m croudtech_python_aws_app_config.cli manage-redis show-db
[OPTIONS]
Show Allocated Redis Database for a specified application
Options:
--environment-name TEXT The environment name [required]
--app-name TEXT The app name [required]
--ssm-prefix TEXT The ssm path prefix
--region TEXT The AWS region
--include-common / --ignore-common
Include shared variables
--help Show this message and exit.
show-dbs
Usage: python -m croudtech_python_aws_app_config.cli manage-redis show-dbs
[OPTIONS]
Show all allocated Redis databases
Options:
--redis-host TEXT The redis host [required]
--redis-port INTEGER The redis port [required]
--help Show this message and exit.
Nested file structure and environment variables
Nested values will have their keys flattened when being converted to environment variables. This allows for a simpler structure than just adding all your env vars separately.
For example:
SOME_VARIABLE: test
ANOTHER_VAR: 123
SOME_OTHER_VAR: foo
CONNECTIONS:
POSTGRESS:
HOST: somehost
PORT: 1234
USERNAME: someuser
PASSWORD: somepass
Would translate into the following environment variables:
SOME_VARIABLE="test"
ANOTHER_VAR="123"
SOME_OTHER_VAR="foo"
CONNECTIONS_POSTGRESS_HOST="somehost"
CONNECTIONS_POSTGRESS_PORT="1234"
CONNECTIONS_POSTGRESS_USERNAME="someuser"
CONNECTIONS_POSTGRESS_PASSWORD="somepass"
Usage in application code
In the top of your application bootstrap file (or settings.py in django) add:
from croudtech_python_aws_app_config.ssm_config import SsmConfig
ssm_config = SsmConfig(
environment_name=os.environ.get("ENVIRONMENT_NAME"), app_name=os.environ.get("APP_NAME")
)
ssm_config.params_to_env()
Make sure your ENVIRONMENT_NAME and APP_NAME env vars are set.
This will pull values from SSM and inject them into your application environment variables.
Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file croudtech_python_aws_app_config-2.0.2.tar.gz
.
File metadata
- Download URL: croudtech_python_aws_app_config-2.0.2.tar.gz
- Upload date:
- Size: 12.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.3 Linux/6.5.0-1018-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 988e84cf6a1a3418405e6c87ce90df67e8f97b6d3b345dba1baae38b393353d3 |
|
MD5 | e02301c97e0799520744f4bc711062ab |
|
BLAKE2b-256 | a3bb97b5c32b575c434e4694a9afa43a69e34620f213d5ad486d052bb3e0b002 |
File details
Details for the file croudtech_python_aws_app_config-2.0.2-py3-none-any.whl
.
File metadata
- Download URL: croudtech_python_aws_app_config-2.0.2-py3-none-any.whl
- Upload date:
- Size: 14.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.3 Linux/6.5.0-1018-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cd00be9485d31e64b2a6f38c4f2b17026ecbce8856e1b154bf5f5c14b0914cd7 |
|
MD5 | e28a70fe6fae3d230428b71683592b5f |
|
BLAKE2b-256 | a8eea6918af12a43f395fc67aa099f728f0d7bf986f1d04cb7dcc7e190a8f970 |