{"id":21507404,"url":"https://github.com/hegde5/flask-to-beanstalk","last_synced_at":"2026-04-04T20:32:10.335Z","repository":{"id":264080164,"uuid":"892304736","full_name":"hegde5/flask-to-beanstalk","owner":"hegde5","description":"Deploy your flask app to Elastic Beanstalk","archived":false,"fork":false,"pushed_at":"2024-12-10T23:53:11.000Z","size":16,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-11T00:45:51.733Z","etag":null,"topics":["aws","aws-elastic-beanstalk","aws-elasticbeanstalk","cd","deployment","flask","github-actions","python","terraform"],"latest_commit_sha":null,"homepage":"","language":"HCL","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/hegde5.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":"vinayh","thanks_dev":null,"custom":null}},"created_at":"2024-11-21T21:36:38.000Z","updated_at":"2024-12-10T23:58:17.000Z","dependencies_parsed_at":"2025-03-18T21:48:51.868Z","dependency_job_id":null,"html_url":"https://github.com/hegde5/flask-to-beanstalk","commit_stats":null,"previous_names":["hegde5/flask-to-beanstalk"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hegde5/flask-to-beanstalk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hegde5%2Fflask-to-beanstalk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hegde5%2Fflask-to-beanstalk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hegde5%2Fflask-to-beanstalk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hegde5%2Fflask-to-beanstalk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hegde5","download_url":"https://codeload.github.com/hegde5/flask-to-beanstalk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hegde5%2Fflask-to-beanstalk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31413267,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T20:09:54.854Z","status":"ssl_error","status_checked_at":"2026-04-04T20:09:44.350Z","response_time":60,"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","aws-elastic-beanstalk","aws-elasticbeanstalk","cd","deployment","flask","github-actions","python","terraform"],"created_at":"2024-11-23T20:13:54.352Z","updated_at":"2026-04-04T20:32:10.311Z","avatar_url":"https://github.com/hegde5.png","language":"HCL","funding_links":["https://buymeacoffee.com/vinayh"],"categories":[],"sub_categories":[],"readme":"# Deploy Your Flask App to AWS Elastic Beanstalk in 10 Minutes!\n\nWelcome to the fastest way to deploy your Flask app to AWS Elastic Beanstalk! This repository is designed to help developers like you get up and running with minimal setup and maximum automation. No unnecessary complexity, just results.\n\nThe main goal is to allow you to focus on building your business logic while this repository takes care of the infrastructure and continuous deployment for you. Sit back and relax!\n\n\n---\n\n## 🚀 Features\n- **Terraform-powered Deployment**: All infrastructure is handled by Terraform. Just tweak a couple of variables, and you’re good to go.\n- **GitHub Actions Integration**: Deploy directly from your repository.\n- **Simplified Configuration**: Default settings for development environment included.\n- **Focus on Business Logic**: Spend your time building great applications—this code takes care of the infrastructure for you.\n\n---\n\n## 🛠 Prerequisites\nBefore you begin, make sure you have:\n1. **AWS Account**: Access to an AWS account to set up your infrastructure.\n2. **IAM User**: Create an IAM user with the following policy:\n\n```json\n{\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n            \"Effect\": \"Allow\",\n            \"Action\": [\n                \"elasticbeanstalk:*\",\n                \"cloudformation:*\",\n                \"cloudwatch:*\",\n                \"s3:*\",\n                \"ec2:*\",\n                \"elasticloadbalancing:*\",\n                \"autoscaling:*\",\n                \"iam:PassRole\",\n                \"iam:CreateRole\",\n                \"iam:DeleteRole\",\n                \"iam:GetRole\",\n                \"iam:AttachRolePolicy\",\n                \"iam:DetachRolePolicy\",\n                \"iam:PutRolePolicy\",\n                \"iam:ListRolePolicies\",\n                \"iam:ListAttachedRolePolicies\",\n                \"iam:ListInstanceProfilesForRole\",\n                \"iam:DeleteRolePolicy\",\n                \"iam:ListInstanceProfiles\",\n                \"iam:GetInstanceProfile\",\n                \"iam:AddRoleToInstanceProfile\",\n                \"iam:RemoveRoleFromInstanceProfile\",\n                \"iam:CreateInstanceProfile\",\n                \"iam:DeleteInstanceProfile\"\n            ],\n            \"Resource\": \"*\"\n        },\n        {\n            \"Effect\": \"Allow\",\n            \"Action\": \"iam:CreateServiceLinkedRole\",\n            \"Resource\": \"*\",\n            \"Condition\": {\n                \"StringEquals\": {\n                    \"iam:AWSServiceName\": \"elasticbeanstalk.amazonaws.com\"\n                }\n            }\n        }\n    ]\n}\n```\n\n3. **S3 Bucket**: Create an S3 bucket for Terraform state management. Make sure it’s in the same region as your deployment. You could name it `beanstalkterraformstate` for starters(This is the name used in the [terraform backend](./terraform/backend.tf))\n\n---\n\n## 📂 Repository Structure\n- `terraform/` - Contains all Terraform configuration files.\n  - **`development.tfvars`**: Preconfigured for a development environment. Adjust as needed.\n- `.github/workflows/` - Github workflows to manage deployment of flask app to AWS Elastic Beanstalk.\n  - **`deploy-infrastructure.yml`**: It is triggered when changes are pushed to main. The workflow is responsible for creating and deploying the flask app to beanstalk\n  - **`destory-infrastructure.yml`**: This workflow can only be triggered manually when you'd like to destroy the elastic beanstalk environment. Please use it with caution!\n- `docker/` - Contains run scripts and configuration for nginx and gunicorn\n\n---\n\n## ⚙️ Setup\n\n### 1. Clone the Repository\n```bash\ngit clone git@github.com:hegde5/flask-to-beanstalk.git\ncd flask-to-beanstalk\n```\n\n### 2. Set Up GitHub Secrets\nGo to your repository’s **Settings \u003e Secrets and variables \u003e Actions \u003e New repository secret**, and add the following secrets:\n\n| Name                  | Value                  |\n|-----------------------|------------------------|\n| `AWS_ACCESS_KEY_ID`   | Your IAM user access key ID |\n| `AWS_SECRET_ACCESS_KEY` | Your IAM user secret key   |\n| `AWS_DEFAULT_REGION`  | e.g., `eu-central-1`      |\n\n### 3. Push Your Flask App to the Main Branch\nSearch for \"TODO\" in the repo and double check if you are happy with the names from the boilerplate.\nCommit and push your Flask application code. Once the changes hit the `main` branch, the provided GitHub Actions workflow will automatically deploy your app to Elastic Beanstalk.\n\n---\n\n## 🌟 Contributing\nFound a bug or have an idea for improvement? Feel free to open an issue or submit a pull request! \n\n---\n\n## ☕ Sponsor\nIf you find this project helpful and want to support its development, consider [sponsoring me on Buy Me a Coffee](https://buymeacoffee.com/vinayh). Your support is greatly appreciated!\n\n---\n\n## 📜 License\nThis project is licensed under the MIT License. See the `LICENSE` file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhegde5%2Fflask-to-beanstalk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhegde5%2Fflask-to-beanstalk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhegde5%2Fflask-to-beanstalk/lists"}