{"id":18284693,"url":"https://github.com/pplu/aws-configuration-loader","last_synced_at":"2025-07-22T13:34:13.768Z","repository":{"id":66753234,"uuid":"96475188","full_name":"pplu/aws-configuration-loader","owner":"pplu","description":"A utility to load parameters from AWS SSM service into the environment for easy consumption by an application","archived":false,"fork":false,"pushed_at":"2017-07-24T23:18:19.000Z","size":18,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-05T07:33:32.153Z","etag":null,"topics":["aws","configuration","ssm-parameters"],"latest_commit_sha":null,"homepage":null,"language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pplu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-07-06T21:56:36.000Z","updated_at":"2019-05-03T13:45:29.000Z","dependencies_parsed_at":"2023-02-22T19:15:19.481Z","dependency_job_id":null,"html_url":"https://github.com/pplu/aws-configuration-loader","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pplu/aws-configuration-loader","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pplu%2Faws-configuration-loader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pplu%2Faws-configuration-loader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pplu%2Faws-configuration-loader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pplu%2Faws-configuration-loader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pplu","download_url":"https://codeload.github.com/pplu/aws-configuration-loader/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pplu%2Faws-configuration-loader/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266506179,"owners_count":23940019,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","configuration","ssm-parameters"],"created_at":"2024-11-05T13:14:25.317Z","updated_at":"2025-07-22T13:34:13.749Z","avatar_url":"https://github.com/pplu.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"\nAWS configuration loader\n========================\n\nThis utility loads parameters stored in the AWS SSM (Simple Systems Manager) service into a processes environment\n\nProblematic\n===========\n\nApplications need configurations to be able to address external elements (like databases, queues, etc). In the cloud\nthe ability to create these elements on-demand and programatically enable developers and system administrators to \ndeploy their applications as many times as needed at will, but that also means that external elements can also get\ncreated with new names. When we prepare an application for the cloud, we have to start caring about configuring the \napplications, handling secrets for connecting to databases, etc.\n\nThese configurations are often stored on services like etcd, zookeeper, consul, etc, which you have to manage, and pay for servers. It's not always trivial! See: https://crewjam.com/etcd-aws/, https://github.com/stylight/etcd-bootstrap,\nhttps://limecodeblog.wordpress.com/2016/09/19/consul-cluster-in-aws-with-auto-scaling/.\n\nAWS provides a service called SSM that exposes an API for storing parameters. These parameters can be strings and encrypted\nstrings (enabled for storing secrets). This utility leverages the SSM Parameters API to expose parameters in a way\nthat your application doesn't have to become aware of the SSM service. It does this exposing the parameters stored\nin the service via environment variables to your application. This practice is inspired by https://12factor.net/es/config \n(Twelve factor App). Note that once your application is configured via environment variables, it is independent of where\nthe configuration is stored (you can easily adopt the same method if you are using etcd or consul).\n\nUsage\n=====\n\nCreate SSM parameters with names that follow this structure: `/APP_NAME/ENVIRONMENT_NAME/ENVIRONMENT_VARIABLE`.\n\nWhen you invoke\n\n```\nbin/load_ssm_to_env APP_NAME:ENVIRONMENT_NAME:region your_app\n```\n\n`your_app` will have all the SSM parameters' values that start with `/APP_NAME/ENVIRONMENT_NAME/` accessible as environment variables:\n\n`/appname/pre/DBHOST` will be accessible in the environment as `DBHOST`\n`/appname/pre/DBPASS` will be accessible in the environment as `DBPASS`\n\nParameter creation\n==================\n\nYou can create the parameters from the AWS console manually. Go to the console -\u003e EC2 -\u003e SYSTEMS MANAGER SHARED RESOURCES -\u003e Parameter Store\n\nYou can also create the parameters with CloudFormation (see the example in the examples dir). This lets you create resources, and save\nthem as parameters so that later your application can read them.\n\nSecurity\n========\nYou can limit an instance, via an Instance Role to only be able to access the set of parameters for it's environment via an IAM policy:\n\n```\n{\n   \"Version\":\"2012-10-17\",\n   \"Statement\":[\n      {\n         \"Effect\":\"Allow\",\n         \"Action\":[\n            \"ssm:DescribeParameterByPath\",\n         ],\n         \"Resource\":\"/myapp/pre/*\",\n      }\n   ]\n}\n```\nSee [http://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-working.html]\n\nLicense\n=======\n\nThis software is released under the Apache 2 License\n\nAuthor\n======\n\nJose Luis Martinez\n\nCopyright\n=========\n\n(c) 2017 CAPSiDE SL\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpplu%2Faws-configuration-loader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpplu%2Faws-configuration-loader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpplu%2Faws-configuration-loader/lists"}