{"id":27103091,"url":"https://github.com/stuartellis/button","last_synced_at":"2026-04-18T19:31:47.547Z","repository":{"id":103210045,"uuid":"208414702","full_name":"stuartellis/button","owner":"stuartellis","description":"Light-touch AWS CloudFormation for any project","archived":false,"fork":false,"pushed_at":"2019-09-14T09:02:17.000Z","size":29,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-19T07:54:51.900Z","etag":null,"topics":["aws","cloudformation","python"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stuartellis.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":"2019-09-14T08:57:57.000Z","updated_at":"2019-09-14T09:03:34.000Z","dependencies_parsed_at":"2023-06-28T23:45:29.872Z","dependency_job_id":null,"html_url":"https://github.com/stuartellis/button","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/stuartellis/button","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuartellis%2Fbutton","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuartellis%2Fbutton/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuartellis%2Fbutton/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuartellis%2Fbutton/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stuartellis","download_url":"https://codeload.github.com/stuartellis/button/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stuartellis%2Fbutton/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31982523,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T17:30:12.329Z","status":"ssl_error","status_checked_at":"2026-04-18T17:29:59.069Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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","cloudformation","python"],"created_at":"2025-04-06T16:39:00.223Z","updated_at":"2026-04-18T19:31:47.537Z","avatar_url":"https://github.com/stuartellis.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Button\n\n[![Stability: Active](https://masterminds.github.io/stability/active.svg)](https://masterminds.github.io/stability/active.html)\n\nJust drop _button.py_ into any project that has CloudFormation templates. You can then manage your application environments without either a stand-alone DevOps tool, or the awkwardness of interacting with the AWS command-line utility.\n\n## Usage\n\n1.  Copy the file _button.py_ into your project\n2.  Put the AWS CloudFormation files in a directory with a sensible name, such as _./aws/staging_\n3.  Run _button.py_\n\nFor example, to create the CloudFormation stack from the files in the directory _aws/staging_, run this command:\n\n    ./button.py create aws/staging\n\nButton can also _update_ and _delete_ CloudFormation stacks:\n\n    ./button.py update aws/staging\n    ./button.py delete aws/staging\n\nButton always validates the CloudFormation template before it runs any other command. It uses the online validation service that is provided by AWS. Use the _validate_ command to check a template without actually running it:\n\n     ./button.py validate aws/staging\n\nFor more details, use the _--help_ option:\n\n    ./button.py --help\n\nButton requires your computer to have Python 2 or above, and [the official AWS command-line utility](https://aws.amazon.com/cli/).\n\n## Expectations\n\nThis tool is deliberately very simple and very opinionated. It assumes that:\n\n- You have a CloudFormation template file in YAML format. By default, it looks for a file called _template.yaml_.\n- The tags for the template are in a separate JSON file, called _tags.json_\n- If your template uses parameters, these are in a JSON file. By default this file will be called _parameters.json_.\n- All of these files are in the same directory\n\nYou can specify different names for these files as options if you need to.\n\nTo automatically decide the name of the CloudFormation stack, Button looks for tags called _Project_, _Environment_ and _Tier_. The AWS CloudFormation stack is assumed to have the name _project-environment-tier_, which match these tags. If this is not what you want, use the _-s_ option to specify the name of the stack.\n\nThe _examples_ directory contains a working set of files to show how this works.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstuartellis%2Fbutton","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstuartellis%2Fbutton","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstuartellis%2Fbutton/lists"}