{"id":13880945,"url":"https://github.com/nonken/hurricane","last_synced_at":"2026-01-21T02:35:22.703Z","repository":{"id":41766488,"uuid":"214643655","full_name":"nonken/hurricane","owner":"nonken","description":"Infrastructure bootstrapping for AWS, powered by AWS CDK.","archived":false,"fork":false,"pushed_at":"2022-09-26T17:36:19.000Z","size":191,"stargazers_count":13,"open_issues_count":8,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-11-24T10:34:29.712Z","etag":null,"topics":["aws","cdk","cicd","iac"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/nonken.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}},"created_at":"2019-10-12T12:28:28.000Z","updated_at":"2023-06-24T17:49:55.000Z","dependencies_parsed_at":"2023-01-18T12:15:40.615Z","dependency_job_id":null,"html_url":"https://github.com/nonken/hurricane","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nonken/hurricane","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nonken%2Fhurricane","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nonken%2Fhurricane/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nonken%2Fhurricane/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nonken%2Fhurricane/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nonken","download_url":"https://codeload.github.com/nonken/hurricane/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nonken%2Fhurricane/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265527549,"owners_count":23782480,"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","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","cdk","cicd","iac"],"created_at":"2024-08-06T08:03:41.493Z","updated_at":"2026-01-21T02:35:22.676Z","avatar_url":"https://github.com/nonken.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# Hurricane\n\n\u003e Setup a complete bootstrapped service architecture on AWS in just a few minutes.\n\nHurricane helps you to setup a complete service architecture on AWS using the [AWS CDK](https://github.com/aws/aws-cdk).\nThe purpose of Hurricane is to help you learn about the CDK. It is trying to incorporate best practices where helpful. \n \n## Hurricane provisions four CDK stacks. \n\n**DNS:** A Route53 zone with a certificate so that you can serve traffic over SSL.\n\n**Shared:** Shared components such a load-balancer and the VPC.\n\n**Web:** A CI/CD pipeline for a webservice and static assets served via a CloudFront distribution. The pipeline includes a staging and a production environment. Traffic is served via SSL (https://) and traffic going over HTTP is redirected to HTTPS. \n\n**Api:** A CI/CD pipeline for an api service (controlplane). The pipeline includes a staging and a production environment. Traffic is served via SSL (https://) and traffic going over HTTP is redirected to HTTPS. \n\n## Usage\nFollow the below prerequisites to spin up a new stack.\n\n### 1. Buy a domain where you can manage DNS\n\n### 2. Create a GitHub API token\n1. Go to [GitHub](https://github.com/settings/tokens) and create an API key. The key needs to include all `repo` and all `admin:repo_hook` permissions. \n2. Store key in AWS Secret Manager. Name the key as you like and paste the GitHub key as a value.\n\n### 3. Setup `cdk.context.json`\nCopy `cdk.context.template.json` to `cdk.context.json` and fill in the correct values.\n\n### 4. Setup the application repos\nYou can deploy any application which includes an `appspec.yml` (CodeDeploy) and a `buildspec.yml` (CodeBuild) in the root of the repository.\n`TODO: provide sample applications.`\n\n### 5. Deploy the stack\n```\ncdk deploy --profile YOUR_CREDENTIAL_PROFILE dns shared web api\n```\n\n### 6. During the DNS cdk deployment, update your registrar records\nOnce the Route53 zone has been created, head to the console to get the nameserver entries.\nUpdate those at your registrar so that your domain points to the correct Route53 nameserver. \nIt'll take a few seconds until your certificate gets provisioned.\n\n### 7. Profit 🎉\n\n**Web**\nProd: https://your.domain\nStaging: https://staging.your.domain\n\n**Static assets**\nProd: https://static.your.domain\nStaging: https://static-staging.your.domain\n\n**Api**\nProd: https://api.your.domain\nStaging: https://api-staging.your.domain\n\n## Known issues\n\n**Alias already exists:**\nWhen you destroy the stack and recreate it, you need to delete an alias used for KMS:\nYou need to remove an alias for each stage. Look or this in the CDK error message.\n```\naws kms delete-alias --alias-name ALIAS_NAME --profile PROFILE --region REGION\n```\n\n**S3 bucket for static assets already exists:**\nYou can manually delete the buckets in the AWS S3 console.\n\n## Using other AWS services as part of the deployment stages.\nRight now, CDK doesn't support automatic provisioning of AWS accounts.\nIf you want to use for example DynamoDB for your service, it is recommended to separate instances for staging/production through accounts.\nFor this you need to manually create accounts and reference those here.\n\n## Future\nHurricane currently doesn't provision a serverless stack. This will be part of a future iteration.\n\n## Useful commands\n\n * `cdk deploy`      deploy this stack to your default AWS account/region\n * `cdk diff`        compare deployed stack with current state\n * `cdk synth`       emits the synthesized CloudFormation template\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnonken%2Fhurricane","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnonken%2Fhurricane","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnonken%2Fhurricane/lists"}