This folder contains a Packer template we use to create the Amazon Machine Images
(AMIs) that run on each EC2 Instance in our ECS Cluster.
Each instance is based on the ECS-Optimized Amazon Linux AMI,
which has the ECS Container Agent
installed that knows how to talk to the ECS Cluster. Each instance also has a script on it from the ecs-scripts
module that knows how to configure the instance with the proper ECS Cluster name and Docker
registry authentication details.
Set the GITHUB_OAUTH_TOKEN environment variable to a valid GitHub auth token with "repo" access. You can generate
one here: https://github.com/settings/tokens
Run packer build build.json to create a new AMI in your AWS account. Note down the ID of this new AMI.
Questions? Ask away.
We're here to talk about our services, answer any questions, give advice, or just to chat.
{"treedata":{"name":"root","toggled":true,"children":[{"name":".circleci","children":[{"name":"config.yml","path":".circleci/config.yml","sha":"255c7b85c5c21d0593ddfe39d969c52f7a2271c3"}]},{"name":".github","children":[{"name":"ISSUE_TEMPLATE","children":[{"name":"bug_report.md","path":".github/ISSUE_TEMPLATE/bug_report.md","sha":"fda415fea4a0439c480c37b51958745bb7be5a70"},{"name":"feature_request.md","path":".github/ISSUE_TEMPLATE/feature_request.md","sha":"3f29bb49f5cdb78e7a2c2766d0b2249bd43945ef"}]},{"name":"pull_request_template.md","path":".github/pull_request_template.md","sha":"8bc6cddd8c1e9e0822f4b2209e78c9284536baa3"}]},{"name":".gitignore","path":".gitignore","sha":"75a7f4fc360463f11aeaf0fd02f614df1856d06b"},{"name":".pre-commit-config.yaml","path":".pre-commit-config.yaml","sha":"521a07813be53bb7e25ac822ae33f5065b4e9c8b"},{"name":"CODEOWNERS","path":"CODEOWNERS","sha":"95f30b3ec3a1b7119e393c82aa5ccb044a202af2"},{"name":"LICENSE.txt","path":"LICENSE.txt","sha":"f4e3d9bd4717a044ed31ad847a300eee74371a78"},{"name":"README.adoc","path":"README.adoc","sha":"879c58bd0ffadc7d850be36eca94198d62f8d417"},{"name":"_docs","children":[{"name":"ecs-architecture.png","path":"_docs/ecs-architecture.png","sha":"7caa9342bfc7ff5c74f26626a9831f22e914ff8e"},{"name":"ecs-fargate-service-icon.png","path":"_docs/ecs-fargate-service-icon.png","sha":"b8825b62a8b9170889c747320e1c79a9298c9bcb"},{"name":"ecs-icon.png","path":"_docs/ecs-icon.png","sha":"8ffdf43575d96d27ceced3d492871fa12403140e"},{"name":"ecs-service-architecture.png","path":"_docs/ecs-service-architecture.png","sha":"1bef2e6b95cb016b8e2c0219679d2d2d3ddd1769"},{"name":"ecs-service-icon.png","path":"_docs/ecs-service-icon.png","sha":"30947a9dcd3612d12ab42f40095b81a13fbaaff4"}]},{"name":"core-concepts.md","path":"core-concepts.md","sha":"43acea16b9efbbee1b4b7e23e0340840ac09a853"},{"name":"examples","children":[{"name":"deploy-ecs-task","children":[{"name":"README.md","path":"examples/deploy-ecs-task/README.md","sha":"21aae5e552219147d78080324d62f48c018b6324"},{"name":"containers","children":[{"name":"container-definitions.json","path":"examples/deploy-ecs-task/containers/container-definitions.json","sha":"1de2f83af666b622739f89debacc7c7faed35a08"}]},{"name":"main.tf","path":"examples/deploy-ecs-task/main.tf","sha":"c64eb726cd904ae7596cd7e3ac8e50bddb73bd59"},{"name":"outputs.tf","path":"examples/deploy-ecs-task/outputs.tf","sha":"24163bba223940a17f70bd4746ffcd1a6eafaec0"},{"name":"user-data","children":[{"name":"user-data.sh","path":"examples/deploy-ecs-task/user-data/user-data.sh","sha":"38ecd4127fac4ee0a05f6df37c86bbbf33629d4b"}]},{"name":"variables.tf","path":"examples/deploy-ecs-task/variables.tf","sha":"70a5be0fe5f10906076763b1ec4df79dccf68c34"}]},{"name":"docker-daemon-service","children":[{"name":"containers","children":[{"name":"datadog-agent-ecs.json","path":"examples/docker-daemon-service/containers/datadog-agent-ecs.json","sha":"7f8de1f4c5b716bab279112f14adf7f8dc0f6024"}]},{"name":"main.tf","path":"examples/docker-daemon-service/main.tf","sha":"db0b31bf12308ae0b05b9440e0095ec52ee51fe5"},{"name":"outputs.tf","path":"examples/docker-daemon-service/outputs.tf","sha":"2a294a1174fdc88601ebe62f9ab3dd4faf2d89fd"},{"name":"variables.tf","path":"examples/docker-daemon-service/variables.tf","sha":"820dd6293298357da998f1b34283b17d4d204b4f"}]},{"name":"docker-fargate-service-with-alb","children":[{"name":"README.md","path":"examples/docker-fargate-service-with-alb/README.md","sha":"a4a806a58539ba75b88b70f71ead85da08c1a4ec"},{"name":"containers","children":[{"name":"container-definition.json","path":"examples/docker-fargate-service-with-alb/containers/container-definition.json","sha":"9091667150daa61c453f31975da897f735812c7c"}]},{"name":"main.tf","path":"examples/docker-fargate-service-with-alb/main.tf","sha":"04ccad4a63ac4c094353b0e7a4cf1137669b2f4e"},{"name":"outputs.tf","path":"examples/docker-fargate-service-with-alb/outputs.tf","sha":"f6b5bea9f779eaaa2b792f363657e7ba326b605e"},{"name":"variables.tf","path":"examples/docker-fargate-service-with-alb/variables.tf","sha":"cf092a8bc6ec68219d988d141845aa08291eeb03"}]},{"name":"docker-fargate-service-with-efs-volume","children":[{"name":"README.md","path":"examples/docker-fargate-service-with-efs-volume/README.md","sha":"75558a4eebc48b46eb19acdf039144202febec1c"},{"name":"containers","children":[{"name":"container-definition.json","path":"examples/docker-fargate-service-with-efs-volume/containers/container-definition.json","sha":"0b6cb6d9e9ab8eec112e6120b6eb4def8c94ef35"}]},{"name":"main.tf","path":"examples/docker-fargate-service-with-efs-volume/main.tf","sha":"2c8eb676eb8124fc52ea2939f47e7838961d37d0"},{"name":"outputs.tf","path":"examples/docker-fargate-service-with-efs-volume/outputs.tf","sha":"2a10149cd88dc1b73415185c4aaa3ade4bf879bb"},{"name":"variables.tf","path":"examples/docker-fargate-service-with-efs-volume/variables.tf","sha":"112e34fa0892d613126d7b7f5f4acd5d09fba0e1"}]},{"name":"docker-fargate-service-with-nlb","children":[{"name":"README.md","path":"examples/docker-fargate-service-with-nlb/README.md","sha":"82d8e921550c588bc4fc8ec696fc8d409dcda466"},{"name":"containers","children":[{"name":"container-definition.json","path":"examples/docker-fargate-service-with-nlb/containers/container-definition.json","sha":"083fca39166d4b8f243e66cb96f6aa9fad72cbe6"}]},{"name":"main.tf","path":"examples/docker-fargate-service-with-nlb/main.tf","sha":"dd164af51968a441dbd8cda48aa0a41947c121d0"},{"name":"outputs.tf","path":"examples/docker-fargate-service-with-nlb/outputs.tf","sha":"cd3a662c0a122b9bc276ebe207956b84ca203f31"},{"name":"variables.tf","path":"examples/docker-fargate-service-with-nlb/variables.tf","sha":"79ea2304ef0b31aec2925753e493a2bef0555b8b"}]},{"name":"docker-fargate-service-without-lb","children":[{"name":"README.md","path":"examples/docker-fargate-service-without-lb/README.md","sha":"c77781208f465fae225169901cd6228779d47a9f"},{"name":"containers","children":[{"name":"container-definition.json","path":"examples/docker-fargate-service-without-lb/containers/container-definition.json","sha":"205833de7c0eabb367be2b16406cd12455d8e94e"}]},{"name":"main.tf","path":"examples/docker-fargate-service-without-lb/main.tf","sha":"ba3e40caeca12c87e8694c99848147b656fa81b1"},{"name":"outputs.tf","path":"examples/docker-fargate-service-without-lb/outputs.tf","sha":"2a10149cd88dc1b73415185c4aaa3ade4bf879bb"},{"name":"variables.tf","path":"examples/docker-fargate-service-without-lb/variables.tf","sha":"833fd1fcafbf09d0d011e6ddcf46b48a554f0eb0"}]},{"name":"docker-fargate-spot-service-with-alb","children":[{"name":"README.md","path":"examples/docker-fargate-spot-service-with-alb/README.md","sha":"57ba5698469db3e09255f66406a036eeb4d92752"},{"name":"containers","children":[{"name":"container-definition.json","path":"examples/docker-fargate-spot-service-with-alb/containers/container-definition.json","sha":"9091667150daa61c453f31975da897f735812c7c"}]},{"name":"main.tf","path":"examples/docker-fargate-spot-service-with-alb/main.tf","sha":"87413bbb08faf1c6c590f5fd2b27d365ead6dd8b"},{"name":"outputs.tf","path":"examples/docker-fargate-spot-service-with-alb/outputs.tf","sha":"f6b5bea9f779eaaa2b792f363657e7ba326b605e"},{"name":"variables.tf","path":"examples/docker-fargate-spot-service-with-alb/variables.tf","sha":"4d10332b87159c66947e5cc9c5e3c01a0d1cf386"}]},{"name":"docker-service-with-alb-and-nlb","children":[{"name":"README.md","path":"examples/docker-service-with-alb-and-nlb/README.md","sha":"f5079fe054f27546ea78cebe0ca7de52055cca43"},{"name":"main.tf","path":"examples/docker-service-with-alb-and-nlb/main.tf","sha":"e88c813352717bf6f92a556d341fbe9410e699d8"},{"name":"outputs.tf","path":"examples/docker-service-with-alb-and-nlb/outputs.tf","sha":"4dc100d16915fb67a46359048d1a369aea150db6"},{"name":"user-data","children":[{"name":"user-data.sh","path":"examples/docker-service-with-alb-and-nlb/user-data/user-data.sh","sha":"a534ef17a47772e610f864b9f764c209657c9d97"}]},{"name":"variables.tf","path":"examples/docker-service-with-alb-and-nlb/variables.tf","sha":"402938bdd18823d212db48fa56bdad9504a11425"}]},{"name":"docker-service-with-alb-autoscaling","children":[{"name":"README.md","path":"examples/docker-service-with-alb-autoscaling/README.md","sha":"8b250d46da14a22c7749f2f0533dde004909cb92"},{"name":"containers","children":[{"name":"container-definition.json","path":"examples/docker-service-with-alb-autoscaling/containers/container-definition.json","sha":"4e28c983a3050ab7a18fd3e9d9ac4730bd9b285e"}]},{"name":"main.tf","path":"examples/docker-service-with-alb-autoscaling/main.tf","sha":"02cc2cbc79e254401b4f3ca2b60275b2aaf33436"},{"name":"outputs.tf","path":"examples/docker-service-with-alb-autoscaling/outputs.tf","sha":"2d96077e349d62d3e60a0eea34529ceb33e4da52"},{"name":"user-data","children":[{"name":"user-data.sh","path":"examples/docker-service-with-alb-autoscaling/user-data/user-data.sh","sha":"a534ef17a47772e610f864b9f764c209657c9d97"}]},{"name":"variables.tf","path":"examples/docker-service-with-alb-autoscaling/variables.tf","sha":"18c248f34f93e2bd896c69a2ff1b89df36a9513e"}]},{"name":"docker-service-with-alb-canary","children":[{"name":"README.md","path":"examples/docker-service-with-alb-canary/README.md","sha":"4ea6c55f115724ae77a9b3b86dab57838a71c089"},{"name":"containers","children":[{"name":"container-definition.json","path":"examples/docker-service-with-alb-canary/containers/container-definition.json","sha":"4e28c983a3050ab7a18fd3e9d9ac4730bd9b285e"}]},{"name":"main.tf","path":"examples/docker-service-with-alb-canary/main.tf","sha":"5598ef8d9346cc17026b27974daaa5fce30c2bd3"},{"name":"outputs.tf","path":"examples/docker-service-with-alb-canary/outputs.tf","sha":"2d96077e349d62d3e60a0eea34529ceb33e4da52"},{"name":"user-data","children":[{"name":"user-data.sh","path":"examples/docker-service-with-alb-canary/user-data/user-data.sh","sha":"a534ef17a47772e610f864b9f764c209657c9d97"}]},{"name":"variables.tf","path":"examples/docker-service-with-alb-canary/variables.tf","sha":"57788ff3bef9deb283cb77c8b29e5c3a321faa88"}]},{"name":"docker-service-with-alb","children":[{"name":"README.md","path":"examples/docker-service-with-alb/README.md","sha":"aac8088b2f1342aa3b6321d07d2084c94dd25320"},{"name":"containers","children":[{"name":"container-definition.json","path":"examples/docker-service-with-alb/containers/container-definition.json","sha":"4a3a2851994cdf389b9a3a9a0bb324981f0d4d59"}]},{"name":"main.tf","path":"examples/docker-service-with-alb/main.tf","sha":"2260f12adf6468df581a3043ec78f6098d6507cc"},{"name":"outputs.tf","path":"examples/docker-service-with-alb/outputs.tf","sha":"5ca6edc9e60ae3bfb6ef13003fe8236ebbb39821"},{"name":"user-data","children":[{"name":"user-data.sh","path":"examples/docker-service-with-alb/user-data/user-data.sh","sha":"a534ef17a47772e610f864b9f764c209657c9d97"}]},{"name":"variables.tf","path":"examples/docker-service-with-alb/variables.tf","sha":"1899eddd5d6d51101c95d4f64f16367ca08d3fcc"}]},{"name":"docker-service-with-autoscaling","children":[{"name":"README.md","path":"examples/docker-service-with-autoscaling/README.md","sha":"01fa504a880b73e35d0e80fcc772ee37fe337058"},{"name":"containers","children":[{"name":"container-definition.json","path":"examples/docker-service-with-autoscaling/containers/container-definition.json","sha":"ddcd10cc00465f84a8ce9eb7d937f1cc648bfa7b"}]},{"name":"main.tf","path":"examples/docker-service-with-autoscaling/main.tf","sha":"7ad34b023161c5b56d41970d77b2af2f78808e76"},{"name":"outputs.tf","path":"examples/docker-service-with-autoscaling/outputs.tf","sha":"c30e145beded6bc152c3e290c6230b31cb89ff71"},{"name":"user-data","children":[{"name":"user-data.sh","path":"examples/docker-service-with-autoscaling/user-data/user-data.sh","sha":"a534ef17a47772e610f864b9f764c209657c9d97"}]},{"name":"variables.tf","path":"examples/docker-service-with-autoscaling/variables.tf","sha":"1be3144d0d4b2539239ec5d6d4882eb0f3c07c3f"}]},{"name":"docker-service-with-canary-deployment","children":[{"name":"README.md","path":"examples/docker-service-with-canary-deployment/README.md","sha":"a834379556fe449d71adf853cd446668ed580ee9"},{"name":"containers","children":[{"name":"container-definition.json","path":"examples/docker-service-with-canary-deployment/containers/container-definition.json","sha":"ddcd10cc00465f84a8ce9eb7d937f1cc648bfa7b"}]},{"name":"main.tf","path":"examples/docker-service-with-canary-deployment/main.tf","sha":"a48460ac6fdd77079c824e5748db1a59d550743f"},{"name":"outputs.tf","path":"examples/docker-service-with-canary-deployment/outputs.tf","sha":"c30e145beded6bc152c3e290c6230b31cb89ff71"},{"name":"user-data","children":[{"name":"user-data.sh","path":"examples/docker-service-with-canary-deployment/user-data/user-data.sh","sha":"a534ef17a47772e610f864b9f764c209657c9d97"}]},{"name":"variables.tf","path":"examples/docker-service-with-canary-deployment/variables.tf","sha":"813e14d8e563ad9e5e91ff64f22a144514c7d1a7"}]},{"name":"docker-service-with-elb","children":[{"name":"README.md","path":"examples/docker-service-with-elb/README.md","sha":"9fe41265d3fdba73113eac416901f6be7ab0a1b3"},{"name":"containers","children":[{"name":"container-definition.json","path":"examples/docker-service-with-elb/containers/container-definition.json","sha":"ddcd10cc00465f84a8ce9eb7d937f1cc648bfa7b"}]},{"name":"main.tf","path":"examples/docker-service-with-elb/main.tf","sha":"36a3b64350908d23befeb9ee21c0f0fa8da2f450"},{"name":"outputs.tf","path":"examples/docker-service-with-elb/outputs.tf","sha":"9e06fbf3bd18efdea1c96669b89cf69ddbc69f39"},{"name":"user-data","children":[{"name":"user-data.sh","path":"examples/docker-service-with-elb/user-data/user-data.sh","sha":"e265eb38080d4cced1a9c75adffbade208fe4882"}]},{"name":"variables.tf","path":"examples/docker-service-with-elb/variables.tf","sha":"89d55cedb7ba91daed4d64e98fb129fb97ccd33b"}]},{"name":"docker-service-with-private-discovery","children":[{"name":"README.md","path":"examples/docker-service-with-private-discovery/README.md","sha":"0b4cca356ffaefda757ed87383292915dee15b45"},{"name":"containers","children":[{"name":"container-definition.json","path":"examples/docker-service-with-private-discovery/containers/container-definition.json","sha":"d5beb20e8e729d072992009ac38fe67018ef684a"}]},{"name":"main.tf","path":"examples/docker-service-with-private-discovery/main.tf","sha":"012a98b27111c4f5fe85bb1e091ea5c438f0b49b"},{"name":"outputs.tf","path":"examples/docker-service-with-private-discovery/outputs.tf","sha":"ac153ce17150d268fb0567f0ba66cabce6daf63f"},{"name":"user-data","children":[{"name":"user-data.sh","path":"examples/docker-service-with-private-discovery/user-data/user-data.sh","sha":"a534ef17a47772e610f864b9f764c209657c9d97"}]},{"name":"variables.tf","path":"examples/docker-service-with-private-discovery/variables.tf","sha":"dc7faeb68bb8f6b9d002cc0ee1d75459fe4cd324"}]},{"name":"docker-service-with-public-discovery","children":[{"name":"README.md","path":"examples/docker-service-with-public-discovery/README.md","sha":"8240ca76c71446eaeff6549299107537b3c77961"},{"name":"containers","children":[{"name":"container-definition.json","path":"examples/docker-service-with-public-discovery/containers/container-definition.json","sha":"d5beb20e8e729d072992009ac38fe67018ef684a"}]},{"name":"main.tf","path":"examples/docker-service-with-public-discovery/main.tf","sha":"33061892cc7e6562888c893ed8ad4602992a3dcf"},{"name":"outputs.tf","path":"examples/docker-service-with-public-discovery/outputs.tf","sha":"ac153ce17150d268fb0567f0ba66cabce6daf63f"},{"name":"user-data","children":[{"name":"user-data.sh","path":"examples/docker-service-with-public-discovery/user-data/user-data.sh","sha":"a534ef17a47772e610f864b9f764c209657c9d97"}]},{"name":"variables.tf","path":"examples/docker-service-with-public-discovery/variables.tf","sha":"59e7cc6a095de1bf8fefa19c7eb918964fca1610"}]},{"name":"docker-service-without-elb","children":[{"name":"README.md","path":"examples/docker-service-without-elb/README.md","sha":"0db4d357c7967144b176d0ac462d57313e3f061d"},{"name":"containers","children":[{"name":"container-definition.json","path":"examples/docker-service-without-elb/containers/container-definition.json","sha":"ddcd10cc00465f84a8ce9eb7d937f1cc648bfa7b"}]},{"name":"main.tf","path":"examples/docker-service-without-elb/main.tf","sha":"60e37ce78476e19a6ff392f9b0dd6f1744216a2b"},{"name":"outputs.tf","path":"examples/docker-service-without-elb/outputs.tf","sha":"ca3a10bee0379ce40a82d45806fa72350f5ae641"},{"name":"user-data","children":[{"name":"user-data.sh","path":"examples/docker-service-without-elb/user-data/user-data.sh","sha":"a534ef17a47772e610f864b9f764c209657c9d97"}]},{"name":"variables.tf","path":"examples/docker-service-without-elb/variables.tf","sha":"0663828c7959ea063a544f60ce1996e6b6203728"}]},{"name":"docker-vpc-service-with-alb","children":[{"name":"README.md","path":"examples/docker-vpc-service-with-alb/README.md","sha":"654268efbb32c0c98dd1b020e6fedda4adbedb36"},{"name":"main.tf","path":"examples/docker-vpc-service-with-alb/main.tf","sha":"22df374877894d0d3b4a3fe3b04d53c2ded31bf5"},{"name":"outputs.tf","path":"examples/docker-vpc-service-with-alb/outputs.tf","sha":"c5b02eee222895f5c56fcac0e0d42a04fa3cf08f"},{"name":"user-data","children":[{"name":"user-data.sh","path":"examples/docker-vpc-service-with-alb/user-data/user-data.sh","sha":"a534ef17a47772e610f864b9f764c209657c9d97"}]},{"name":"variables.tf","path":"examples/docker-vpc-service-with-alb/variables.tf","sha":"7db799cde779942474d1612279f99bad4ca85a2f"}]},{"name":"example-docker-image","children":[{"name":"Dockerfile","path":"examples/example-docker-image/Dockerfile","sha":"f2d4b71ade7473254eb2af4bc49f4e0088e4f77b"},{"name":"README.md","path":"examples/example-docker-image/README.md","sha":"272b6c12cad7ba326582bfca11fce195912021c4"},{"name":"server.js","path":"examples/example-docker-image/server.js","sha":"965b6a2342144bac9559d1328c09f64f31fb4501"}]},{"name":"example-ecs-instance-ami","children":[{"name":"README.md","path":"examples/example-ecs-instance-ami/README.md","sha":"0a239a9c1d5aa7e1a889d40650fbed1cb14f8e8a","toggled":true},{"name":"build.json","path":"examples/example-ecs-instance-ami/build.json","sha":"0fad38e38b2c103c58c343fff2e4de931ed03e1b"}],"toggled":true},{"name":"example-vpc","children":[{"name":"README.md","path":"examples/example-vpc/README.md","sha":"d84ff0ae78abd7732973f26005c76c6aa0f73442"},{"name":"main.tf","path":"examples/example-vpc/main.tf","sha":"5395329f84ae38e879e483ec71887302329d2c25"},{"name":"outputs.tf","path":"examples/example-vpc/outputs.tf","sha":"29fe3a59a33e3648c3cdf0afbcc6b7224e1b81ea"},{"name":"variables.tf","path":"examples/example-vpc/variables.tf","sha":"668e867d5bc0938a092cc35a52093d05ede78cfe"}]}],"toggled":true},{"name":"modules","children":[{"name":"ecs-cluster","children":[{"name":"README.md","path":"modules/ecs-cluster/README.md","sha":"da3d8049423631f473e62682f83159858e9bc7d1"},{"name":"main.tf","path":"modules/ecs-cluster/main.tf","sha":"df4e13e75d8aa9c4e6dcf356cbbdbac63241568b"},{"name":"outputs.tf","path":"modules/ecs-cluster/outputs.tf","sha":"055e5a2894d9bc994625d6004051404615932c7e"},{"name":"roll-out-ecs-cluster-update.py","path":"modules/ecs-cluster/roll-out-ecs-cluster-update.py","sha":"391b4f6d21b5d08e85159513cb5a3c5cefb0e8c2"},{"name":"shut-down-container-instances.py","path":"modules/ecs-cluster/shut-down-container-instances.py","sha":"c82c24df75e37164224e0198abe0aad2ba2bb734"},{"name":"variables.tf","path":"modules/ecs-cluster/variables.tf","sha":"962f9280d64a1eff1fdfd62b79564cf0086739d7"}]},{"name":"ecs-daemon-service","children":[{"name":"README.md","path":"modules/ecs-daemon-service/README.md","sha":"3335d6f5fc8c250bed5682bd02910b309a87292a"},{"name":"main.tf","path":"modules/ecs-daemon-service/main.tf","sha":"0f411855576dbd94c74f4ab6322ad0938882645f"},{"name":"outputs.tf","path":"modules/ecs-daemon-service/outputs.tf","sha":"b14be6c2f9498c05be9d3843437940b933b3b669"},{"name":"variables.tf","path":"modules/ecs-daemon-service/variables.tf","sha":"939c556009e98468ec9af8d32f821f2253e04f39"}]},{"name":"ecs-deploy-check-binaries","children":[{"name":"README.md","path":"modules/ecs-deploy-check-binaries/README.md","sha":"5f819dfaab1a1fe16f29314a2117cd14fcb4bb33"},{"name":"bin","children":[{"name":"check-ecs-service-deployment","path":"modules/ecs-deploy-check-binaries/bin/check-ecs-service-deployment","sha":"b162ec0c95bd1260995ccc383b89fb1528086d65"},{"name":"check_ecs_service_deployment_env.pex","path":"modules/ecs-deploy-check-binaries/bin/check_ecs_service_deployment_env.pex","sha":"089742e3c1d2b6d38c953adb7f66606858fd4ec1"},{"name":"entrypoint.py","path":"modules/ecs-deploy-check-binaries/bin/entrypoint.py","sha":"09af8e557b93844ce66a028e594b885498eef99c"}]},{"name":"build.sh","path":"modules/ecs-deploy-check-binaries/build.sh","sha":"c4195f1c571a197e2a40b46e8a5896080aa0c260"},{"name":"check_ecs_service_deployment","children":[{"name":"__init__.py","path":"modules/ecs-deploy-check-binaries/check_ecs_service_deployment/__init__.py","sha":"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"},{"name":"checker","children":[{"name":"__init__.py","path":"modules/ecs-deploy-check-binaries/check_ecs_service_deployment/checker/__init__.py","sha":"b3604eaedc6d77c18dd31a282af88377b642073d"},{"name":"active_tasks_checker.py","path":"modules/ecs-deploy-check-binaries/check_ecs_service_deployment/checker/active_tasks_checker.py","sha":"5aa07c2ef3265ecdd3396be3eca962dfed893975"},{"name":"base.py","path":"modules/ecs-deploy-check-binaries/check_ecs_service_deployment/checker/base.py","sha":"b43e7a9f8989b2b6ec9c428c02b7129146c03c9e"},{"name":"daemon_service_checker.py","path":"modules/ecs-deploy-check-binaries/check_ecs_service_deployment/checker/daemon_service_checker.py","sha":"2843fa595ebfb6137601051d3c5183727605c6ad"},{"name":"loadbalancer_checker.py","path":"modules/ecs-deploy-check-binaries/check_ecs_service_deployment/checker/loadbalancer_checker.py","sha":"54070f4b438a48ded5be35753fbc7469caff3cc0"}]},{"name":"exceptions.py","path":"modules/ecs-deploy-check-binaries/check_ecs_service_deployment/exceptions.py","sha":"12ef9651649f2c99ac6cba7a54314a8da197a2b3"},{"name":"utils.py","path":"modules/ecs-deploy-check-binaries/check_ecs_service_deployment/utils.py","sha":"d37d04f0265fe0a6a1faa0bad67358d4c21dc2ac"}]},{"name":"dev_requirements.txt","path":"modules/ecs-deploy-check-binaries/dev_requirements.txt","sha":"923be60db2d99bbeefbedf796478539f78712828"},{"name":"requirements.txt","path":"modules/ecs-deploy-check-binaries/requirements.txt","sha":"1b1257ceb0ad6adb051fe8a2c90392bd93d24a29"}]},{"name":"ecs-deploy","children":[{"name":"README.md","path":"modules/ecs-deploy/README.md","sha":"944a7f354a20ab2abde6ef87c5f49f0d855cb61e"},{"name":"bin","children":[{"name":"run-ecs-task","path":"modules/ecs-deploy/bin/run-ecs-task","sha":"a7cd4f0a8cd2240876f43489b3006da7e3425cf1"}]},{"name":"install.sh","path":"modules/ecs-deploy/install.sh","sha":"c322bebba62fd5a63e7bcb73010f9a52da1137f1"}]},{"name":"ecs-fargate","children":[{"name":"README.md","path":"modules/ecs-fargate/README.md","sha":"3eae9218a5c3fb18d3a4dd45f136df25052a93d9"}]},{"name":"ecs-scripts","children":[{"name":"README.md","path":"modules/ecs-scripts/README.md","sha":"4c357a9df12f3f2a56e447ae3a82b4e3e5bdc43a"},{"name":"bin","children":[{"name":"configure-ecs-instance","path":"modules/ecs-scripts/bin/configure-ecs-instance","sha":"3a35e5a10537a85c3525ca79672f4c561a40bacb"}]},{"name":"install.sh","path":"modules/ecs-scripts/install.sh","sha":"927760f5584ad2019b0ff31424ba8853a27aeffc"}]},{"name":"ecs-service-with-alb","children":[{"name":"README.md","path":"modules/ecs-service-with-alb/README.md","sha":"38c07b1b20f9dbf22479651763535225e716a28c"}]},{"name":"ecs-service-with-discovery","children":[{"name":"README.md","path":"modules/ecs-service-with-discovery/README.md","sha":"fe9dc7350327371959dacddf0471067f8ddbc42b"}]},{"name":"ecs-service","children":[{"name":"README-ECS-Fargate.adoc","path":"modules/ecs-service/README-ECS-Fargate.adoc","sha":"06c828c343a03aaa8fe84a291c8eeb0ce31d1669"},{"name":"README.adoc","path":"modules/ecs-service/README.adoc","sha":"58b54ea7d2da8140d067359fdbae3b0053d41e8b"},{"name":"auto_scaling.tf","path":"modules/ecs-service/auto_scaling.tf","sha":"7131efebd7c0ecfa3a911576af589d56201345c5"},{"name":"core-concepts.md","path":"modules/ecs-service/core-concepts.md","sha":"6b87530c724fdf2a19e61679bcefa7071b398161"},{"name":"deployment_check.tf","path":"modules/ecs-service/deployment_check.tf","sha":"cf5a982a1804588fdab1fe78d6028e806f97b006"},{"name":"elb.tf","path":"modules/ecs-service/elb.tf","sha":"e00440050a622d4a66df91c2315fcfc74693188d"},{"name":"main.tf","path":"modules/ecs-service/main.tf","sha":"312a7903e2124ef00ae7119bf2f66ac9b4c7a8d7"},{"name":"outputs.tf","path":"modules/ecs-service/outputs.tf","sha":"0323af2fbe25f6f72fbf409bf92f1d36fd317e67"},{"name":"service_discovery.tf","path":"modules/ecs-service/service_discovery.tf","sha":"27096ac9b2593fdd4b78dc548ddfb05d0f26c10c"},{"name":"task_definition.tf","path":"modules/ecs-service/task_definition.tf","sha":"73dd13d1c9470e820e024db0e1445bd4857166c9"},{"name":"variables.tf","path":"modules/ecs-service/variables.tf","sha":"8894ff54506fbd80daf96b517a101601ec1407d7"}]}]},{"name":"setup.cfg","path":"setup.cfg","sha":"6deafc261704e20369c0983af88042e502ae4880"},{"name":"terraform-cloud-enterprise-private-module-registry-placeholder.tf","path":"terraform-cloud-enterprise-private-module-registry-placeholder.tf","sha":"ae586c0fe830819580e1009d41a9074f16e65bed"},{"name":"test","children":[{"name":"README.md","path":"test/README.md","sha":"7212dca4ee618099e3be5e10d48a11c2b4cafaa0"},{"name":"common","children":[{"name":"docker_service_failure_testing_utils.go","path":"test/common/docker_service_failure_testing_utils.go","sha":"e16b3371f04a6c0b6e05b3927cd102e1fd1cfccf"},{"name":"docker_service_utils.go","path":"test/common/docker_service_utils.go","sha":"b9bd1081dd81b99262db46368e606abdcec6e6d8"},{"name":"terratest_options.go","path":"test/common/terratest_options.go","sha":"ff2d7189bf154eb1250a1172fef743c27e2e44e8"},{"name":"test_helpers.go","path":"test/common/test_helpers.go","sha":"04bdef5d9599dea2448bbacbe464944478b9b167"}]},{"name":"ec2","children":[{"name":"deploy_ecs_task_test.go","path":"test/ec2/deploy_ecs_task_test.go","sha":"41eb2e13f0620e3c4b65006ba3b739bc5200ae1d"},{"name":"docker_daemon_service_test.go","path":"test/ec2/docker_daemon_service_test.go","sha":"17f9071ef1d398ea34630f1150a5cc3a649b8582"},{"name":"docker_ec2_service_test.go","path":"test/ec2/docker_ec2_service_test.go","sha":"c81c652dc0dc47b6f6f3d0ea3fd5de4a64234d69"},{"name":"docker_service_with_alb_and_nlb_test.go","path":"test/ec2/docker_service_with_alb_and_nlb_test.go","sha":"bd1b81611ecf54fb6d01a8bbb3104623951186a7"},{"name":"docker_service_with_alb_deployment_check_fail_test.go","path":"test/ec2/docker_service_with_alb_deployment_check_fail_test.go","sha":"641e0fd4475ac157ecae0863351a5a37bbd32109"},{"name":"docker_service_with_alb_test.go","path":"test/ec2/docker_service_with_alb_test.go","sha":"4870f37814afbffd84b9a9d089e2667d54ce7e1c"},{"name":"docker_service_with_autoscaling_test.go","path":"test/ec2/docker_service_with_autoscaling_test.go","sha":"95558be9bd7434d02f67fd63acd724603c0256ac"},{"name":"docker_service_with_canary_deployment_check_fail_test.go","path":"test/ec2/docker_service_with_canary_deployment_check_fail_test.go","sha":"bb5b13a28b0be05ecf9ab58361074eac574c7dd2"},{"name":"docker_service_with_canary_deployment_test.go","path":"test/ec2/docker_service_with_canary_deployment_test.go","sha":"b930cdfd193a7c6760d48ad649f0eeac831325bd"},{"name":"docker_service_with_discovery_check_fail_test.go","path":"test/ec2/docker_service_with_discovery_check_fail_test.go","sha":"86cef5081c22df6bbaae74f32b41d2a625693ee8"},{"name":"docker_service_with_discovery_test.go","path":"test/ec2/docker_service_with_discovery_test.go","sha":"9b4d7262690ffef830331b0bbb769a077c3b6ea8"},{"name":"docker_service_with_elb_deployment_check_fail_test.go","path":"test/ec2/docker_service_with_elb_deployment_check_fail_test.go","sha":"95084370cb419e73911d9ae1a26a83f09d96262b"},{"name":"docker_service_with_elb_test.go","path":"test/ec2/docker_service_with_elb_test.go","sha":"031c553b2d9905770eb533dc5a7e244fa4a97a47"},{"name":"docker_service_without_elb_deployment_check_fail_test.go","path":"test/ec2/docker_service_without_elb_deployment_check_fail_test.go","sha":"50146027679868fb203061e27531716e05acf646"},{"name":"docker_service_without_elb_test.go","path":"test/ec2/docker_service_without_elb_test.go","sha":"443494f87c6583c9b5d689765f612cb36432f3ef"},{"name":"docker_vpc_service_with_alb_test.go","path":"test/ec2/docker_vpc_service_with_alb_test.go","sha":"a5206fdc66b80ce49dcd01fa5223c068d63133bf"},{"name":"ec2_amazon_linux2_test.go","path":"test/ec2/ec2_amazon_linux2_test.go","sha":"66360c7b21a64a44611b47a8deb908bef2d94407"},{"name":"terratest_options.go","path":"test/ec2/terratest_options.go","sha":"e8c6dd1ecc64245e5200603eaddef7c0962f325c"}]},{"name":"fargate","children":[{"name":"docker_fargate_service_alb_deployment_check_fail_by_container_test.go","path":"test/fargate/docker_fargate_service_alb_deployment_check_fail_by_container_test.go","sha":"6ff015e99daa668b3971f58db9bb5850d6854fd6"},{"name":"docker_fargate_service_nlb_deployment_check_fail_by_container_test.go","path":"test/fargate/docker_fargate_service_nlb_deployment_check_fail_by_container_test.go","sha":"e9262d3818e34f6c2655db1980013ecbd8a2c55a"},{"name":"docker_fargate_service_with_alb_test.go","path":"test/fargate/docker_fargate_service_with_alb_test.go","sha":"defc6b5ec0370a90282aee4b1442d4b0c0ac3316"},{"name":"docker_fargate_service_with_efs_volume_test.go","path":"test/fargate/docker_fargate_service_with_efs_volume_test.go","sha":"7229fab6e43ae3c275697020c7bcc3f9946c186b"},{"name":"docker_fargate_service_with_nlb_test.go","path":"test/fargate/docker_fargate_service_with_nlb_test.go","sha":"b2d80289082574b4e49e4c03a74182ceb7798feb"},{"name":"docker_fargate_service_without_lb_deployment_check_fail_by_container_test.go","path":"test/fargate/docker_fargate_service_without_lb_deployment_check_fail_by_container_test.go","sha":"9682d245989452f27192838a26f8dfc3210c00c8"},{"name":"docker_fargate_service_without_lb_test.go","path":"test/fargate/docker_fargate_service_without_lb_test.go","sha":"f0c6b14c588cd752407d0e1cddb4744b30ca3b3a"},{"name":"docker_fargate_spot_service_with_alb_test.go","path":"test/fargate/docker_fargate_spot_service_with_alb_test.go","sha":"370c3d524da97b5bf77ceb639347aeed0ec861b7"},{"name":"terratest_options.go","path":"test/fargate/terratest_options.go","sha":"7885bc041869ad14212bee245fbf1911f7434e96"}]},{"name":"go.mod","path":"test/go.mod","sha":"63f430c9e72212a82e6a378f46af540ce8408dc9"},{"name":"go.sum","path":"test/go.sum","sha":"99cc986faa7524194c01968e9393cddd14ccfb09"},{"name":"script_tests","children":[{"name":"executor.sh","path":"test/script_tests/executor.sh","sha":"dedf71d5d3120275daa4df86b8a91c85b58a66b6"},{"name":"requirements.txt","path":"test/script_tests/requirements.txt","sha":"c28d6ca8b3fac0dab00a410c9fb7c4344e620ddf"},{"name":"test_check_ecs_service_deployment.py","path":"test/script_tests/test_check_ecs_service_deployment.py","sha":"daabc761bdaeaf467cbfbca0cb2d91efb3179c4a"},{"name":"tox.ini","path":"test/script_tests/tox.ini","sha":"13e2809ee4d66cf9f05f0f3e18633ffe3114aac2"}]},{"name":"validation","children":[{"name":"validate_all_modules_and_examples_test.go","path":"test/validation/validate_all_modules_and_examples_test.go","sha":"74c928d0cbc2914e5cd708277bd857cb2375b660"}]}]}]},"detailsContent":"<h1 class=\"preview__body--title\" id=\"example-ecs-instance-ami\">Example ECS Instance AMI</h1><div class=\"preview__body--border\"></div><p>This folder contains a <a href=\"https://www.packer.io/\" class=\"preview__body--description--blue\" target=\"_blank\">Packer template</a> we use to create the <a href=\"http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html\" class=\"preview__body--description--blue\" target=\"_blank\">Amazon Machine Images\n(AMIs)</a> that run on each EC2 Instance in our ECS Cluster.\nEach instance is based on the <a href=\"https://aws.amazon.com/marketplace/pp/B00U6QTYI2/\" class=\"preview__body--description--blue\" target=\"_blank\">ECS-Optimized Amazon Linux AMI</a>,\nwhich has the <a href=\"http://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_agent.html\" class=\"preview__body--description--blue\" target=\"_blank\">ECS Container Agent</a>\ninstalled that knows how to talk to the ECS Cluster. Each instance also has a script on it from the <a href=\"/repos/v0.29.2/module-ecs/modules/ecs-scripts\" class=\"preview__body--description--blue\">ecs-scripts\nmodule</a> that knows how to configure the instance with the proper ECS Cluster name and Docker\nregistry authentication details.</p>\n<h2 class=\"preview__body--subtitle\" id=\"build-the-ami\">Build the AMI</h2>\n<ol>\n<li>Install <a href=\"https://www.packer.io/\" class=\"preview__body--description--blue\" target=\"_blank\">Packer</a>.</li>\n<li>Set up your <a href=\"https://www.packer.io/docs/builders/amazon.html\" class=\"preview__body--description--blue\" target=\"_blank\">AWS credentials as environment variables</a>.</li>\n<li>Set the <code>GITHUB_OAUTH_TOKEN</code> environment variable to a valid GitHub auth token with "repo" access. You can generate\none here: https://github.com/settings/tokens</li>\n<li>Run <code>packer build build.json</code> to create a new AMI in your AWS account. Note down the ID of this new AMI.</li>\n</ol>\n","repoName":"module-ecs","repoRef":"v0.31.9","serviceDescriptor":{"serviceName":"EC2 Container Service (ECS) Cluster","serviceRepoName":"module-ecs","serviceRepoOrg":"gruntwork-io","cloudProviders":["aws"],"description":"Deploy a cluster of servers for use with EC2 Container Service (ECS), Amazon's container orchestration system","imageUrl":"ecs.png","licenseType":"subscriber","technologies":["Terraform","Python","Bash"],"compliance":[],"tags":[""]},"serviceCategoryName":"Docker orchestration","fileName":"README.md","filePath":"/examples/example-ecs-instance-ami","title":"Repo Browser: EC2 Container Service (ECS) Cluster","description":"Browse the repos in the Gruntwork Infrastructure as Code Library."}