I happened to catch this on the Github daily trending list a week or so back, really cool.
For similar tools (though this one is ECS + Fargate), also see:
https://somanymachines.com/fargate
https://github.com/awslabs/fargatecli
I'm pretty particular to Pulumi, and defining infra in typed programming languages with full IDE tooling. AWS CDK is the AWS-centric equivalent, and that's a great and under-represented tool as well IMO.
https://www.pulumi.com/containers/
https://docs.aws.amazon.com/cdk/latest/guide/home.html
My issue with ECS/Fargate is that on the surface, it seems amazing. And so you deploy your container, and that's relatively easy.
But now you have just a container on HTTP, on a bare IP. You probably want HTTPS and a domain name attached.
So then you learn that you need to:
- Create a Route53 hosted zone for the domain
- Use AWS Cert Manager to provision certificates for the domain
- Create a load balancer, and figure out how to attach it to the ECS/Fargate service
- Wire up the LB address to the record set and configure the termination for HTTPS
And to do something like change an environment variable, you have to create an entirely new "task definition", deploy the task revision, and then spin up the new service and stop the old one. This takes about 5 not-particularly-easy to find or navigate screens in the AWS console.
This is what it ended up looking like, for me to deploy a Fargate service:
https://gist.github.com/GavinRay97/fbedfb18fe852bf625451a417...
It's great that these tools can help reduce the burden of doing this but man is it a painful experience if you're not a wizard at DevOps.
Google Cloud Run is 1-2 bash commands to deploy a containerized app on HTTPS.
For similar tools (though this one is ECS + Fargate), also see:
https://somanymachines.com/fargate
https://github.com/awslabs/fargatecli
I'm pretty particular to Pulumi, and defining infra in typed programming languages with full IDE tooling. AWS CDK is the AWS-centric equivalent, and that's a great and under-represented tool as well IMO.
https://www.pulumi.com/containers/
https://docs.aws.amazon.com/cdk/latest/guide/home.html
My issue with ECS/Fargate is that on the surface, it seems amazing. And so you deploy your container, and that's relatively easy.
But now you have just a container on HTTP, on a bare IP. You probably want HTTPS and a domain name attached.
So then you learn that you need to:
- Create a Route53 hosted zone for the domain
- Use AWS Cert Manager to provision certificates for the domain
- Create a load balancer, and figure out how to attach it to the ECS/Fargate service
- Wire up the LB address to the record set and configure the termination for HTTPS
And to do something like change an environment variable, you have to create an entirely new "task definition", deploy the task revision, and then spin up the new service and stop the old one. This takes about 5 not-particularly-easy to find or navigate screens in the AWS console.
This is what it ended up looking like, for me to deploy a Fargate service:
https://gist.github.com/GavinRay97/fbedfb18fe852bf625451a417...
It's great that these tools can help reduce the burden of doing this but man is it a painful experience if you're not a wizard at DevOps.
Google Cloud Run is 1-2 bash commands to deploy a containerized app on HTTPS.