Skip to content
GitHub Discord

AWS Astro container with Redis

Creates a hit counter app with Astro and Redis.

This deploys Astro as a Fargate service to ECS and it’s linked to Redis.

sst.config.ts
new sst.aws.Service("MyService", {
cluster,
link: [redis],
loadBalancer: {
ports: [{ listen: "80/http", forward: "3000/http" }],
},
dev: {
command: "npm run dev",
},
});

Since our Redis cluster is in a VPC, we’ll need a tunnel to connect to it from our local machine.

Terminal window
sudo npx sst tunnel install

This needs sudo to create a network interface on your machine. You’ll only need to do this once on your machine.

To start your app locally run.

Terminal window
npx sst dev

Astro 7 needs Node.js 22.12 or later, and sst dev runs astro dev on your machine.

Now if you go to http://localhost:4321 you’ll see a counter update as you refresh the page.

Finally, you can deploy it by adding the Dockerfile that’s included in this example and running npx sst deploy --stage production.

sst.config.ts
const vpc = new sst.aws.Vpc("MyVpc", { bastion: true });
const redis = new sst.aws.Redis("MyRedis", { vpc });
const cluster = new sst.aws.Cluster("MyCluster", { vpc });
new sst.aws.Service("MyService", {
cluster,
link: [redis],
loadBalancer: {
ports: [{ listen: "80/http", forward: "4321/http" }],
},
dev: {
command: "npm run dev",
},
});

View the full example.