From bdd349bdd32e71d89e6a9e2b767bc34a27341218 Mon Sep 17 00:00:00 2001 From: Ric Harvey Date: Tue, 16 Apr 2024 15:23:10 +0100 Subject: [PATCH] Add lab 1 --- .DS_Store | Bin 0 -> 6148 bytes 1-getting-started/.DS_Store | Bin 0 -> 6148 bytes 1-getting-started/README.md | 97 +- 1-getting-started/code/locals.tf | 9 + 1-getting-started/code/main.tf | 48 + 1-getting-started/code/outputs.tf | 27 + 1-getting-started/code/variables.tf | 11 + .../code}/versions.tf | 0 1-getting-started/code/vpc.tf | 36 + 1-getting-started/img/cloudshell.png | Bin 0 -> 22902 bytes 1-getting-started/img/cloudshell2.png | Bin 0 -> 229722 bytes 1-getting-started/img/eu-west-1.png | Bin 0 -> 8774 bytes 1-getting-started/img/git-clone.png | Bin 0 -> 543450 bytes 1-getting-started/img/terraform-working.png | Bin 0 -> 53962 bytes 1-getting-started/img/tofu-working.png | Bin 0 -> 52643 bytes chat-app/.dockerignore | 1 - chat-app/.gitignore | 1 - chat-app/Dockerfile | 10 - chat-app/README.md | 14 - chat-app/index.js | 103 - chat-app/lib/presence.js | 96 - chat-app/package-lock.json | 749 ---- chat-app/package.json | 18 - chat-app/public/index.html | 28 - chat-app/public/main.js | 282 -- chat-app/public/style.css | 149 - chat-app/recipes/chat-service.yml | 320 -- chat-app/recipes/cluster.yml | 329 -- chat-app/recipes/resources.yml | 59 - demo/iac/.terraform.lock.hcl | 38 - demo/iac/data.tf | 1 - demo/iac/ecs.tf | 301 -- demo/iac/locals.tf | 16 - demo/iac/main.tf | 4 - demo/iac/modules/cluster/README.md | 214 - demo/iac/modules/cluster/main.tf | 324 -- demo/iac/modules/cluster/outputs.tf | 70 - demo/iac/modules/cluster/variables.tf | 177 - .../modules/container-definition/README.md | 203 - demo/iac/modules/container-definition/main.tf | 83 - .../modules/container-definition/outputs.tf | 22 - .../modules/container-definition/variables.tf | 323 -- .../modules/container-definition/versions.tf | 10 - demo/iac/modules/service/README.md | 358 -- demo/iac/modules/service/main.tf | 1354 ------ demo/iac/modules/service/outputs.tf | 157 - demo/iac/modules/service/variables.tf | 661 --- demo/iac/modules/service/versions.tf | 10 - demo/iac/outputs.tf | 153 - demo/iac/route53.tf | 11 - demo/iac/terraform.tfstate | 9 - demo/iac/terraform.tfstate.backup | 3698 ----------------- demo/iac/variables.tf | 51 - demo/iac/versions.tf | 10 - demo/iac/vpc.tf | 16 - 55 files changed, 219 insertions(+), 10442 deletions(-) create mode 100644 .DS_Store create mode 100644 1-getting-started/.DS_Store create mode 100644 1-getting-started/code/locals.tf create mode 100644 1-getting-started/code/main.tf create mode 100644 1-getting-started/code/outputs.tf create mode 100644 1-getting-started/code/variables.tf rename {demo/iac/modules/cluster => 1-getting-started/code}/versions.tf (100%) create mode 100644 1-getting-started/code/vpc.tf create mode 100644 1-getting-started/img/cloudshell.png create mode 100644 1-getting-started/img/cloudshell2.png create mode 100644 1-getting-started/img/eu-west-1.png create mode 100644 1-getting-started/img/git-clone.png create mode 100644 1-getting-started/img/terraform-working.png create mode 100644 1-getting-started/img/tofu-working.png delete mode 100644 chat-app/.dockerignore delete mode 100644 chat-app/.gitignore delete mode 100644 chat-app/Dockerfile delete mode 100644 chat-app/README.md delete mode 100644 chat-app/index.js delete mode 100644 chat-app/lib/presence.js delete mode 100644 chat-app/package-lock.json delete mode 100644 chat-app/package.json delete mode 100644 chat-app/public/index.html delete mode 100644 chat-app/public/main.js delete mode 100644 chat-app/public/style.css delete mode 100644 chat-app/recipes/chat-service.yml delete mode 100644 chat-app/recipes/cluster.yml delete mode 100644 chat-app/recipes/resources.yml delete mode 100644 demo/iac/.terraform.lock.hcl delete mode 100644 demo/iac/data.tf delete mode 100644 demo/iac/ecs.tf delete mode 100644 demo/iac/locals.tf delete mode 100644 demo/iac/main.tf delete mode 100644 demo/iac/modules/cluster/README.md delete mode 100644 demo/iac/modules/cluster/main.tf delete mode 100644 demo/iac/modules/cluster/outputs.tf delete mode 100644 demo/iac/modules/cluster/variables.tf delete mode 100644 demo/iac/modules/container-definition/README.md delete mode 100644 demo/iac/modules/container-definition/main.tf delete mode 100644 demo/iac/modules/container-definition/outputs.tf delete mode 100644 demo/iac/modules/container-definition/variables.tf delete mode 100644 demo/iac/modules/container-definition/versions.tf delete mode 100644 demo/iac/modules/service/README.md delete mode 100644 demo/iac/modules/service/main.tf delete mode 100644 demo/iac/modules/service/outputs.tf delete mode 100644 demo/iac/modules/service/variables.tf delete mode 100644 demo/iac/modules/service/versions.tf delete mode 100644 demo/iac/outputs.tf delete mode 100644 demo/iac/route53.tf delete mode 100644 demo/iac/terraform.tfstate delete mode 100644 demo/iac/terraform.tfstate.backup delete mode 100644 demo/iac/variables.tf delete mode 100644 demo/iac/versions.tf delete mode 100644 demo/iac/vpc.tf diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6b27eb33a58c7ccdd2623c25ad7e90bd49cacb56 GIT binary patch literal 6148 zcmeHKO^?z*7=DLEDH0=^HPM4f6R)ts0>)%7EDMKC)Wg>3K@Cz$*k(&hXb}@a!d-uZ zf5EdqME{E?ecqWNmZHg?jL~_MnP)!UXWq`!&P<1hL}%{RiONJ|Au;B!A^U}KKc^kb z>6Q{u$T1R1$fuCTRNe754MqW@z~80-uicwe$9f&p2&?z!`i)T@&kw!?W@S`<*!^VSOu$Oy>`x{g_8`DdE6PyUUKbO z6b0_4JaC`;qeZ{Ge-eeszz;_=N$|Z9TwcBKLoZr%qIu}WlIy4rt7sMb<-5yetNyTJ zHygE8#a`BHjl+ulsM%Vriq`G>501|I7r`Wq-pk35z-A`xy2cHBK;aT%y>(_`5QSrS z^GIbnguF2}#tBU+fSgsNcMw~x3yne<65DjlhBtBp(6`@LlH7M#vTJql0I8^CdX&3jr0bIjs4aNB?Xy2j%9(5;yXyv&}VZ2*w(mKh!&Xn O5s)&N%qZ|j75D+$htnkh literal 0 HcmV?d00001 diff --git a/1-getting-started/.DS_Store b/1-getting-started/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..1cf8145b82da00cc1cea078c9b6e7ad15d6f9f25 GIT binary patch literal 6148 zcmeHKJ5Iwu5S<~GFrrCG>4FNRNV$O%oPvUeh#tj80V$T#(ECQ5g0oO^1bFiyim^qB z1euX`-|o(5cc0`P4-xVFxtbD*=y=>aBWO=l*q56wXrmetEUNdwZ3g zcG~I(?e?)3^@MI|K{G1o1~|b9tL_Qu1=08Kv3H~x1_QxBFc1tJAOpzRBI&7N^ua(d z5De@XkoO@&6U-f3Lw!2XX$b&Ku&jcy{`vzmSpepatszz*Y_33aWiK(7QRSuhX`{4)kPDVD_? zm-5`&yPo9Q4DB9GMC@7_Krq%+4AfMNiM%6csx*BjW9W0o)=;9zy1E17M?eXQE*SU) G20j5&RY|7+ literal 0 HcmV?d00001 diff --git a/1-getting-started/README.md b/1-getting-started/README.md index b8bc67f..8fa855a 100644 --- a/1-getting-started/README.md +++ b/1-getting-started/README.md @@ -1,18 +1,51 @@ -Log into AWS +## Introduction -Open Cloud Shell +In this first lab we are going to do the basics. We'll: -Install Terraform + - Log into AWS + - Use cloudshell (as this has all your credentials set up already) + - Get your environment ready to run terraform/tofu + - Run a simple example -``` +### Log into AWS + +First of all head to [https://aws.amazon.com](https://aws.amazon.com) and sign into your console. The next thing to do is check that you are working inthe correct region. For this lab everything is coded for eu-west-1 (Ireland) so make sure you select the correct region at the top right hand of the page. + +![eu-west-1 Ireland Region](./img/eu-west-1.png) + +Once in this region we are setup for the following labs. + +> [!NOTE] +> We'll be creating infrastructure throughout and AWS does charge for your actual usage + +### Open CloudShell + +For these labs we are going to use the AWS supplied CloudShell, now you can do this from your own machine, however, you'll need to setup the [AWS CLI tool](https://aws.amazon.com/cli/) and AWS credentials which is beyond the scope of these labs. The nice thing about CloudShell is that it's already configured with your credentials for accessing AWS resources. You also launch this by heading up to the main bar in the AWS console and clicking the icon highlighted below: + +![Launch CloudShell](./img/cloudshell.png) + +Once launched you can hit the arrow to break the shell out into it's own browser tab. I personally find it easier to work this way. It's also good to know there is no charge to run CloudShell. It'll look a little like this when opened: + +![CloudShell in it's own browser window](./img/cloudshell2.png) + +Right lets get you setup to run terraform or openTofu! You only need to do one of these so choose your tool of choice. I lean toward using tofu as it's fully open source, but if you want some of the newer features in terraform 1.8.0 and higher the guide is here for you also. + +> [!Note] +> Periodically you CloudShell is rebuilt and anything thats not stored in your home directory will be deleted, for this reason the method's below store the tooling in your home directory. + +#### Install Terraform + +First we are going to install a tool that make's it easy to install the binaries for Terraform. Copy and Paste the below into your CloudShell: + +```bash git clone https://github.com/tfutils/tfenv.git ~/.tfenv mkdir ~/bin ln -s ~/.tfenv/bin/* ~/bin/ ``` -Find the latest version and install it: +Find the latest version and install it (at the time of writing it was **1.8.0**): -``` +```bash tfenv list-remote tfenv install 1.8.0 tfenv use 1.8.0 @@ -20,13 +53,19 @@ tfenv use 1.8.0 Now test it's all working: -``` +```bash terraform --version ``` -Install Tofu +The output should look likt e following screenshot: -``` +![Terraform output of the version flag](./img/terraform-working.png) + +#### Install Tofu + +If like me you prefer to use open source tools this is how to make tofu persist in CloudShell, Copy and Paste the following into your terminal: + +```bash # Download the installer script: curl --proto '=https' --tlsv1.2 -fsSL https://get.opentofu.org/install-opentofu.sh -o install-opentofu.sh # Alternatively: wget --secure-protocol=TLSv1_2 --https-only https://get.opentofu.org/install-opentofu.sh -O install-opentofu.sh @@ -41,4 +80,44 @@ chmod +x install-opentofu.sh # Remove the installer: rm install-opentofu.sh + +# Make Tofu remain in your path after reboots +mkdir ~/bin +sudo mv /usr/bin/tofu ~/bin ``` + +Now test it's all working: + +``` +tofu --version +``` + +The output should look likt e following screenshot: + +![Tofu output of the version flag](./img/tofu-working.png) + +Now your tooling is installed and should survice you reconnecting to CloudShell. + +### Test Deployment + +Before we deploy to AWS we need to pull the code down from [GitLab](https://gitlab.com) onto your CloudShell. To do this run the follwoing commands: + +```bash +git clone https://gitlab.com/ric_harvey/terraform-tofu-labs.git +cd terraform-tofu-labs +``` +The output will look like the following: + +![Git Clone the examples](./img/git-clone.png) + +Now lets run some code. + +> [!Note] +> You can replace the commands for ```terraform``` from ```tofu``` if you are running that version + +First lets initialise our terraform/tofu environment: + +```bash +tofu init +``` + diff --git a/1-getting-started/code/locals.tf b/1-getting-started/code/locals.tf new file mode 100644 index 0000000..b54693c --- /dev/null +++ b/1-getting-started/code/locals.tf @@ -0,0 +1,9 @@ +locals { + default_tags = merge( + var.additional_tags, + { + Owner = var.name + Environment = var.environment + ManagedBy = "tofu/terraform" + }) +} diff --git a/1-getting-started/code/main.tf b/1-getting-started/code/main.tf new file mode 100644 index 0000000..e3b8df2 --- /dev/null +++ b/1-getting-started/code/main.tf @@ -0,0 +1,48 @@ +provider "aws" { + region = "eu-west-1" +} + +resource "aws_security_group" "web_server_sg_tf" { + name = "web-server-sg-tf" + description = "Allow HTTP to web server" + vpc_id = module.vpc.vpc_id + +ingress { + description = "SSH ingress" + from_port = 22 + to_port = 22 + protocol = "tcp" + cidr_blocks = ["0.0.0.0/0"] + } + +ingress { + description = "HTTP ingress" + from_port = 80 + to_port = 80 + protocol = "tcp" + cidr_blocks = ["0.0.0.0/0"] + } + +ingress { + description = "HTTPS ingress" + from_port = 443 + to_port = 443 + protocol = "tcp" + cidr_blocks = ["0.0.0.0/0"] + } + +egress { + from_port = 0 + to_port = 0 + protocol = "-1" + cidr_blocks = ["0.0.0.0/0"] + } +} + +resource "aws_instance" "test_ami" { + ami = "ami-029b91ed285a24a90" + instance_type = "t4g.nano" + associate_public_ip_address = true + subnet_id = module.vpc.public_subnets[0] + vpc_security_group_ids = [aws_security_group.web_server_sg_tf.id] +} diff --git a/1-getting-started/code/outputs.tf b/1-getting-started/code/outputs.tf new file mode 100644 index 0000000..899dcc7 --- /dev/null +++ b/1-getting-started/code/outputs.tf @@ -0,0 +1,27 @@ +# VPC +output "vpc_id" { + description = "The ID of the VPC" + value = module.vpc.vpc_id +} + +# Subnets +output "private_subnets" { + description = "List of IDs of private subnets" + value = module.vpc.private_subnets +} + +output "public_subnets" { + description = "List of IDs of public subnets" + value = module.vpc.public_subnets +} + +output "database_subnets" { + description = "List of IDs of database subnets" + value = module.vpc.database_subnets +} + +# NAT gateways +output "nat_public_ips" { + description = "List of public Elastic IPs created for AWS NAT Gateway" + value = module.vpc.nat_public_ips +} diff --git a/1-getting-started/code/variables.tf b/1-getting-started/code/variables.tf new file mode 100644 index 0000000..e12bc5c --- /dev/null +++ b/1-getting-started/code/variables.tf @@ -0,0 +1,11 @@ +variable "name" { + description = "Name of our Application" + type = string + default = "lab-1-app" +} + +variable "environment" { + description = "The deployment environment" + type = string + default = "dev" +} diff --git a/demo/iac/modules/cluster/versions.tf b/1-getting-started/code/versions.tf similarity index 100% rename from demo/iac/modules/cluster/versions.tf rename to 1-getting-started/code/versions.tf diff --git a/1-getting-started/code/vpc.tf b/1-getting-started/code/vpc.tf new file mode 100644 index 0000000..1562f3c --- /dev/null +++ b/1-getting-started/code/vpc.tf @@ -0,0 +1,36 @@ +module "vpc" { + source = "terraform-aws-modules/vpc/aws" + version = "~> 3" + + name = "${var.name}-${var.environment}" + cidr = "20.10.0.0/16" # 10.0.0.0/8 is reserved for EC2-Classic + + azs = data.aws_availability_zones.available.names + private_subnets = ["20.10.1.0/24", "20.10.2.0/24", "20.10.3.0/24"] + public_subnets = ["20.10.11.0/24", "20.10.12.0/24", "20.10.13.0/24"] + database_subnets = ["20.10.21.0/24", "20.10.22.0/24", "20.10.23.0/24"] + + private_subnet_tags = { "name": "${var.private_subnet_suffix}-${var.name}-${var.environment}" } + public_subnet_tags = { "name": "${var.public_subnet_suffix}-${var.name}-${var.environment}" } + database_subnet_tags = { "name": "${var.database_subnet_suffix}-${var.name}-${var.environment}" } + + create_database_subnet_group = true + + enable_nat_gateway = true + single_nat_gateway = true + + enable_dhcp_options = false + + # Default security group - ingress/egress rules cleared to deny all + manage_default_security_group = true + default_security_group_ingress = [] + default_security_group_egress = [] + + # VPC Flow Logs (Cloudwatch log group and IAM role will be created) + enable_flow_log = true + create_flow_log_cloudwatch_log_group = true + create_flow_log_cloudwatch_iam_role = true + flow_log_max_aggregation_interval = 60 + + tags = local.default_tags +} diff --git a/1-getting-started/img/cloudshell.png b/1-getting-started/img/cloudshell.png new file mode 100644 index 0000000000000000000000000000000000000000..da24b4b50122ec8d6dd5756e4cf37f4c21b12994 GIT binary patch literal 22902 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 Vn=^Qg@vt4Pih{a)iJW=xe*lRm$-Dpn literal 0 HcmV?d00001 diff --git a/1-getting-started/img/cloudshell2.png b/1-getting-started/img/cloudshell2.png new file mode 100644 index 0000000000000000000000000000000000000000..857e2a41f0fb39093c9e5170d44f62912dd505ff GIT binary patch literal 229722 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

*vM@nvnkv$# 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 C|NRjF literal 0 HcmV?d00001 diff --git a/1-getting-started/img/terraform-working.png b/1-getting-started/img/terraform-working.png new file mode 100644 index 0000000000000000000000000000000000000000..a430b1dda3270da27c8783c003dfd27b6e7bc642 GIT binary patch literal 53962 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⁢u^Hvkt5TQS$C;EEd^a%V9i)x}o>QIr< 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 P&OA|2dsHF^3H*NmMEl(% literal 0 HcmV?d00001 diff --git a/1-getting-started/img/tofu-working.png b/1-getting-started/img/tofu-working.png new file mode 100644 index 0000000000000000000000000000000000000000..1116f29e0b8e7adf1abb9f306210d8cecb9196f5 GIT binary patch literal 52643 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/fargate-chat-demo:latest . -docker push -``` - -## Deploy on AWS - -See the main README and change the image path to your own repo. diff --git a/chat-app/index.js b/chat-app/index.js deleted file mode 100644 index 99d5744..0000000 --- a/chat-app/index.js +++ /dev/null @@ -1,103 +0,0 @@ -// Setup basic express server -var express = require('express'); -var app = express(); -var path = require('path'); -var server = require('http').createServer(app); -var io = require('socket.io')(server); -var redis = require('socket.io-redis'); - -io.adapter(redis({ host: process.env.REDIS_ENDPOINT , port: 6379 })); - -var Presence = require('./lib/presence'); - -// Lower the heartbeat timeout -io.set('heartbeat timeout', 8000); -io.set('heartbeat interval', 4000); - -var port = process.env.PORT || 3000; - -server.listen(port, function() { - console.log('Server listening at port %d', port); -}); - -// Routing -app.use(express.static(path.join(__dirname, 'public'))); - -io.on('connection', function(socket) { - var addedUser = false; - - // when the client emits 'new message', this listens and executes - socket.on('new message', function(data) { - // we tell the client to execute 'new message' - socket.broadcast.emit('new message', { - username: socket.username, - message: data - }); - }); - - socket.conn.on('heartbeat', function() { - if (!addedUser) { - // Don't start upserting until the user has added themselves. - return; - } - - Presence.upsert(socket.id, { - username: socket.username - }); - }); - - // when the client emits 'add user', this listens and executes - socket.on('add user', function(username) { - if (addedUser) { - return; - } - - // we store the username in the socket session for this client - socket.username = username; - Presence.upsert(socket.id, { - username: socket.username - }); - addedUser = true; - - Presence.list(function(users) { - socket.emit('login', { - numUsers: users.length - }); - - // echo globally (all clients) that a person has connected - socket.broadcast.emit('user joined', { - username: socket.username, - numUsers: users.length - }); - }); - }); - - // when the client emits 'typing', we broadcast it to others - socket.on('typing', function() { - socket.broadcast.emit('typing', { - username: socket.username - }); - }); - - // when the client emits 'stop typing', we broadcast it to others - socket.on('stop typing', function() { - socket.broadcast.emit('stop typing', { - username: socket.username - }); - }); - - // when the user disconnects.. perform this - socket.on('disconnect', function() { - if (addedUser) { - Presence.remove(socket.id); - - Presence.list(function(users) { - // echo globally (all clients) that a person has connected - socket.broadcast.emit('user left', { - username: socket.username, - numUsers: users.length - }); - }); - } - }); -}); diff --git a/chat-app/lib/presence.js b/chat-app/lib/presence.js deleted file mode 100644 index b83b76e..0000000 --- a/chat-app/lib/presence.js +++ /dev/null @@ -1,96 +0,0 @@ -var redis = require('redis'); - -function Presence() { - this.client = redis.createClient({ - host: process.env.REDIS_ENDPOINT - }); -} -module.exports = new Presence(); - -/** - * Remember a present user with their connection ID - * - * @param {string} connectionId - The ID of the connection - * @param {object} meta - Any metadata about the connection -**/ -Presence.prototype.upsert = function(connectionId, meta) { - this.client.hset( - 'presence', - connectionId, - JSON.stringify({ - meta: meta, - when: Date.now() - }), - function(err) { - if (err) { - console.error('Failed to store presence in redis: ' + err); - } - } - ); -}; - -/** - * Remove a presence. Used when someone disconnects - * - * @param {string} connectionId - The ID of the connection - * @param {object} meta - Any metadata about the connection -**/ -Presence.prototype.remove = function(connectionId) { - this.client.hdel( - 'presence', - connectionId, - function(err) { - if (err) { - console.error('Failed to remove presence in redis: ' + err); - } - } - ); -}; - -/** - * Returns a list of present users, minus any expired - * - * @param {function} returnPresent - callback to return the present users -**/ -Presence.prototype.list = function(returnPresent) { - var active = []; - var dead = []; - var now = Date.now(); - var self = this; - - this.client.hgetall('presence', function(err, presence) { - if (err) { - console.error('Failed to get presence from Redis: ' + err); - return returnPresent([]); - } - - for (var connection in presence) { - var details = JSON.parse(presence[connection]); - details.connection = connection; - - if (now - details.when > 8000) { - dead.push(details); - } else { - active.push(details); - } - } - - if (dead.length) { - self._clean(dead); - } - - return returnPresent(active); - }); -}; - -/** - * Cleans a list of connections by removing expired ones - * - * @param -**/ -Presence.prototype._clean = function(toDelete) { - console.log(`Cleaning ${toDelete.length} expired presences`); - for (var presence of toDelete) { - this.remove(presence.connection); - } -}; diff --git a/chat-app/package-lock.json b/chat-app/package-lock.json deleted file mode 100644 index 90726a2..0000000 --- a/chat-app/package-lock.json +++ /dev/null @@ -1,749 +0,0 @@ -{ - "name": "socket.io-chat", - "version": "0.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", - "requires": { - "mime-types": "~2.1.18", - "negotiator": "0.6.1" - } - }, - "after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "arraybuffer.slice": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" - }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" - }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" - }, - "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" - }, - "base64id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=" - }, - "better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "requires": { - "callsite": "1.0.0" - } - }, - "blob": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", - "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" - }, - "body-parser": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", - "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", - "requires": { - "bytes": "3.0.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "~1.6.3", - "iconv-lite": "0.4.23", - "on-finished": "~2.3.0", - "qs": "6.5.2", - "raw-body": "2.3.3", - "type-is": "~1.6.16" - } - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" - }, - "component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" - }, - "component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "double-ended-queue": { - "version": "2.1.0-0", - "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", - "integrity": "sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw=" - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "engine.io": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.1.5.tgz", - "integrity": "sha512-D06ivJkYxyRrcEe0bTpNnBQNgP9d3xog+qZlLbui8EsMr/DouQpf5o9FzJnWYHEYE0YsFHllUv2R1dkgYZXHcA==", - "requires": { - "accepts": "~1.3.4", - "base64id": "1.0.0", - "cookie": "0.3.1", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.0", - "uws": "~9.14.0", - "ws": "~3.3.1" - }, - "dependencies": { - "accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", - "requires": { - "mime-types": "~2.1.18", - "negotiator": "0.6.1" - } - }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" - } - } - }, - "engine.io-client": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.6.tgz", - "integrity": "sha512-hnuHsFluXnsKOndS4Hv6SvUrgdYx1pk2NqfaDMW+GWdgfU3+/V25Cj7I8a0x92idSpa5PIhJRKxPvp9mnoLsfg==", - "requires": { - "component-emitter": "1.2.1", - "component-inherit": "0.0.3", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.1", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "~3.3.1", - "xmlhttprequest-ssl": "~1.5.4", - "yeast": "0.1.2" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "engine.io-parser": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", - "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", - "requires": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.5", - "has-binary2": "~1.0.2" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "express": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", - "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", - "requires": { - "accepts": "~1.3.5", - "array-flatten": "1.1.1", - "body-parser": "1.18.3", - "content-disposition": "0.5.2", - "content-type": "~1.0.4", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.1.1", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.4", - "qs": "6.5.2", - "range-parser": "~1.2.0", - "safe-buffer": "5.1.2", - "send": "0.16.2", - "serve-static": "1.13.2", - "setprototypeof": "1.1.0", - "statuses": "~1.4.0", - "type-is": "~1.6.16", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - } - }, - "finalhandler": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", - "unpipe": "~1.0.0" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "has-binary2": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", - "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", - "requires": { - "isarray": "2.0.1" - } - }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ipaddr.js": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", - "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=" - }, - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" - }, - "mime-db": { - "version": "1.38.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==" - }, - "mime-types": { - "version": "2.1.22", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", - "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", - "requires": { - "mime-db": "~1.38.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" - }, - "notepack.io": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/notepack.io/-/notepack.io-2.1.3.tgz", - "integrity": "sha512-AgSt+cP5XMooho1Ppn8NB3FFaVWefV+qZoZncYTUSch2GAEwlYLcIIbT5YVkMlFeNHnfwOvc4HDlbvrB5BRxXA==" - }, - "object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "requires": { - "better-assert": "~1.0.0" - } - }, - "parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", - "requires": { - "better-assert": "~1.0.0" - } - }, - "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "proxy-addr": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", - "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.8.0" - } - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" - }, - "raw-body": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", - "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.3", - "iconv-lite": "0.4.23", - "unpipe": "1.0.0" - } - }, - "redis": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/redis/-/redis-2.8.0.tgz", - "integrity": "sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A==", - "requires": { - "double-ended-queue": "^2.1.0-0", - "redis-commands": "^1.2.0", - "redis-parser": "^2.6.0" - } - }, - "redis-commands": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.4.0.tgz", - "integrity": "sha512-cu8EF+MtkwI4DLIT0x9P8qNTLFhQD4jLfxLR0cCNkeGzs87FN6879JOJwNQR/1zD7aSYNbU0hgsV9zGY71Itvw==" - }, - "redis-parser": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.6.0.tgz", - "integrity": "sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs=" - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" - } - }, - "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" - } - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - }, - "socket.io": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.0.4.tgz", - "integrity": "sha1-waRZDO/4fs8TxyZS8Eb3FrKeYBQ=", - "requires": { - "debug": "~2.6.6", - "engine.io": "~3.1.0", - "socket.io-adapter": "~1.1.0", - "socket.io-client": "2.0.4", - "socket.io-parser": "~3.1.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "socket.io-adapter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", - "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=" - }, - "socket.io-client": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.0.4.tgz", - "integrity": "sha1-CRilUkBtxeVAs4Dc2Xr8SmQzL44=", - "requires": { - "backo2": "1.0.2", - "base64-arraybuffer": "0.1.5", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "~2.6.4", - "engine.io-client": "~3.1.0", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "socket.io-parser": "~3.1.1", - "to-array": "0.1.4" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "socket.io-parser": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.1.3.tgz", - "integrity": "sha512-g0a2HPqLguqAczs3dMECuA1RgoGFPyvDqcbaDEdCWY9g59kdUAz3YRmaJBNKXflrHNwB7Q12Gkf/0CZXfdHR7g==", - "requires": { - "component-emitter": "1.2.1", - "debug": "~3.1.0", - "has-binary2": "~1.0.2", - "isarray": "2.0.1" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "socket.io-redis": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/socket.io-redis/-/socket.io-redis-5.2.0.tgz", - "integrity": "sha1-j+KtlEX8UIhvtwq8dZ1nQD1Ymd8=", - "requires": { - "debug": "~2.6.8", - "notepack.io": "~2.1.2", - "redis": "~2.8.0", - "socket.io-adapter": "~1.1.0", - "uid2": "0.0.3" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" - }, - "to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" - }, - "type-is": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", - "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.18" - } - }, - "uid2": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", - "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=" - }, - "ultron": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "uws": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/uws/-/uws-9.14.0.tgz", - "integrity": "sha512-HNMztPP5A1sKuVFmdZ6BPVpBQd5bUjNC8EFMFiICK+oho/OQsAJy5hnIx4btMHiOk8j04f/DbIlqnEZ9d72dqg==", - "optional": true - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } - }, - "xmlhttprequest-ssl": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", - "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=" - }, - "yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" - } - } -} diff --git a/chat-app/package.json b/chat-app/package.json deleted file mode 100644 index f8781c8..0000000 --- a/chat-app/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "socket.io-chat", - "version": "0.0.0", - "description": "A simple chat client using socket.io", - "main": "index.js", - "author": "Grant Timmerman", - "private": true, - "license": "BSD", - "dependencies": { - "express": "^4.16.4", - "redis": "2.8.0", - "socket.io": "2.0.4", - "socket.io-redis": "5.2.0" - }, - "scripts": { - "start": "node index.js" - } -} diff --git a/chat-app/public/index.html b/chat-app/public/index.html deleted file mode 100644 index b443d79..0000000 --- a/chat-app/public/index.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - Fargate.chat - - - -

    -
  • -
    -
      -
      - -
    • - -
    - - - - - - diff --git a/chat-app/public/main.js b/chat-app/public/main.js deleted file mode 100644 index 83d1428..0000000 --- a/chat-app/public/main.js +++ /dev/null @@ -1,282 +0,0 @@ -$(function() { - var FADE_TIME = 150; // ms - var TYPING_TIMER_LENGTH = 400; // ms - var COLORS = [ - '#e21400', '#91580f', '#f8a700', '#f78b00', - '#58dc00', '#287b00', '#a8f07a', '#4ae8c4', - '#3b88eb', '#3824aa', '#a700ff', '#d300e7' - ]; - - // Initialize variables - var $window = $(window); - var $usernameInput = $('.usernameInput'); // Input for username - var $messages = $('.messages'); // Messages area - var $inputMessage = $('.inputMessage'); // Input message input box - - var $loginPage = $('.login.page'); // The login page - var $chatPage = $('.chat.page'); // The chatroom page - - // Prompt for setting a username - var username; - var connected = false; - var typing = false; - var lastTypingTime; - var $currentInput = $usernameInput.focus(); - - var socket = io(); - - function addParticipantsMessage (data) { - var message = ''; - if (data.numUsers === 1) { - message += "there's 1 participant"; - } else { - message += "there are " + data.numUsers + " participants"; - } - log(message); - } - - // Sets the client's username - function setUsername () { - username = cleanInput($usernameInput.val().trim()); - - // If the username is valid - if (username) { - $loginPage.fadeOut(); - $chatPage.show(); - $loginPage.off('click'); - $currentInput = $inputMessage.focus(); - - // Tell the server your username - socket.emit('add user', username); - } - } - - // Sends a chat message - function sendMessage () { - var message = $inputMessage.val(); - // Prevent markup from being injected into the message - message = cleanInput(message); - // if there is a non-empty message and a socket connection - if (message && connected) { - $inputMessage.val(''); - addChatMessage({ - username: username, - message: message - }); - // tell server to execute 'new message' and send along one parameter - socket.emit('new message', message); - } - } - - // Log a message - function log (message, options) { - var $el = $('
  • ').addClass('log').text(message); - addMessageElement($el, options); - } - - // Adds the visual chat message to the message list - function addChatMessage (data, options) { - // Don't fade the message in if there is an 'X was typing' - var $typingMessages = getTypingMessages(data); - options = options || {}; - if ($typingMessages.length !== 0) { - options.fade = false; - $typingMessages.remove(); - } - - var $usernameDiv = $('') - .text(data.username) - .css('color', getUsernameColor(data.username)); - var $messageBodyDiv = $('') - .text(data.message); - - var typingClass = data.typing ? 'typing' : ''; - var $messageDiv = $('
  • ') - .data('username', data.username) - .addClass(typingClass) - .append($usernameDiv, $messageBodyDiv); - - addMessageElement($messageDiv, options); - } - - // Adds the visual chat typing message - function addChatTyping (data) { - data.typing = true; - data.message = 'is typing'; - addChatMessage(data); - } - - // Removes the visual chat typing message - function removeChatTyping (data) { - getTypingMessages(data).fadeOut(function () { - $(this).remove(); - }); - } - - // Adds a message element to the messages and scrolls to the bottom - // el - The element to add as a message - // options.fade - If the element should fade-in (default = true) - // options.prepend - If the element should prepend - // all other messages (default = false) - function addMessageElement (el, options) { - var $el = $(el); - - // Setup default options - if (!options) { - options = {}; - } - if (typeof options.fade === 'undefined') { - options.fade = true; - } - if (typeof options.prepend === 'undefined') { - options.prepend = false; - } - - // Apply options - if (options.fade) { - $el.hide().fadeIn(FADE_TIME); - } - if (options.prepend) { - $messages.prepend($el); - } else { - $messages.append($el); - } - $messages[0].scrollTop = $messages[0].scrollHeight; - } - - // Prevents input from having injected markup - function cleanInput (input) { - return $('
    ').text(input).html(); - } - - // Updates the typing event - function updateTyping () { - if (connected) { - if (!typing) { - typing = true; - socket.emit('typing'); - } - lastTypingTime = (new Date()).getTime(); - - setTimeout(function () { - var typingTimer = (new Date()).getTime(); - var timeDiff = typingTimer - lastTypingTime; - if (timeDiff >= TYPING_TIMER_LENGTH && typing) { - socket.emit('stop typing'); - typing = false; - } - }, TYPING_TIMER_LENGTH); - } - } - - // Gets the 'X is typing' messages of a user - function getTypingMessages (data) { - return $('.typing.message').filter(function (i) { - return $(this).data('username') === data.username; - }); - } - - // Gets the color of a username through our hash function - function getUsernameColor (username) { - // Compute hash code - var hash = 7; - for (var i = 0; i < username.length; i++) { - hash = username.charCodeAt(i) + (hash << 5) - hash; - } - // Calculate color - var index = Math.abs(hash % COLORS.length); - return COLORS[index]; - } - - // Keyboard events - - $window.keydown(function (event) { - // Auto-focus the current input when a key is typed - if (!(event.ctrlKey || event.metaKey || event.altKey)) { - $currentInput.focus(); - } - // When the client hits ENTER on their keyboard - if (event.which === 13) { - if (username) { - sendMessage(); - socket.emit('stop typing'); - typing = false; - } else { - setUsername(); - } - } - }); - - $inputMessage.on('input', function() { - updateTyping(); - }); - - // Click events - - // Focus input when clicking anywhere on login page - $loginPage.click(function () { - $currentInput.focus(); - }); - - // Focus input when clicking on the message input's border - $inputMessage.click(function () { - $inputMessage.focus(); - }); - - // Socket events - - // Whenever the server emits 'login', log the login message - socket.on('login', function (data) { - connected = true; - // Display the welcome message - var message = "Welcome to Socket.IO Chat – "; - log(message, { - prepend: true - }); - addParticipantsMessage(data); - }); - - // Whenever the server emits 'new message', update the chat body - socket.on('new message', function (data) { - addChatMessage(data); - }); - - // Whenever the server emits 'user joined', log it in the chat body - socket.on('user joined', function (data) { - log(data.username + ' joined'); - addParticipantsMessage(data); - }); - - // Whenever the server emits 'user left', log it in the chat body - socket.on('user left', function (data) { - log(data.username + ' left'); - addParticipantsMessage(data); - removeChatTyping(data); - }); - - // Whenever the server emits 'typing', show the typing message - socket.on('typing', function (data) { - addChatTyping(data); - }); - - // Whenever the server emits 'stop typing', kill the typing message - socket.on('stop typing', function (data) { - removeChatTyping(data); - }); - - socket.on('disconnect', function () { - log('you have been disconnected'); - }); - - socket.on('reconnect', function () { - log('you have been reconnected'); - if (username) { - socket.emit('add user', username); - } - }); - - socket.on('reconnect_error', function () { - log('attempt to reconnect has failed'); - }); - -}); diff --git a/chat-app/public/style.css b/chat-app/public/style.css deleted file mode 100644 index 3de49cf..0000000 --- a/chat-app/public/style.css +++ /dev/null @@ -1,149 +0,0 @@ -/* Fix user-agent */ - -* { - box-sizing: border-box; -} - -html { - font-weight: 300; - -webkit-font-smoothing: antialiased; -} - -html, input { - font-family: - "HelveticaNeue-Light", - "Helvetica Neue Light", - "Helvetica Neue", - Helvetica, - Arial, - "Lucida Grande", - sans-serif; -} - -html, body { - height: 100%; - margin: 0; - padding: 0; -} - -ul { - list-style: none; - word-wrap: break-word; -} - -/* Pages */ - -.pages { - height: 100%; - margin: 0; - padding: 0; - width: 100%; -} - -.page { - height: 100%; - position: absolute; - width: 100%; -} - -/* Login Page */ - -.login.page { - background-color: #401664; -} - -.login.page .form { - height: 100px; - margin-top: -100px; - position: absolute; - - text-align: center; - top: 50%; - width: 100%; -} - -.login.page .form .usernameInput { - background-color: transparent; - border: none; - border-bottom: 2px solid #fff; - outline: none; - padding-bottom: 15px; - text-align: center; - width: 400px; -} - -.login.page .title { - font-size: 200%; -} - -.login.page .usernameInput { - font-size: 200%; - letter-spacing: 3px; -} - -.login.page .title, .login.page .usernameInput { - color: #fff; - font-weight: 100; -} - -/* Chat page */ - -.chat.page { - display: none; -} - -/* Font */ - -.messages { - font-size: 150%; -} - -.inputMessage { - font-size: 100%; -} - -.log { - color: gray; - font-size: 70%; - margin: 5px; - text-align: center; -} - -/* Messages */ - -.chatArea { - height: 100%; - padding-bottom: 60px; -} - -.messages { - height: 100%; - margin: 0; - overflow-y: scroll; - padding: 10px 20px 10px 20px; -} - -.message.typing .messageBody { - color: gray; -} - -.username { - font-weight: 700; - overflow: hidden; - padding-right: 15px; - text-align: right; -} - -/* Input */ - -.inputMessage { - border: 10px solid #000; - bottom: 0; - height: 60px; - left: 0; - outline: none; - padding-left: 10px; - position: absolute; - right: 0; - width: 100%; -} diff --git a/chat-app/recipes/chat-service.yml b/chat-app/recipes/chat-service.yml deleted file mode 100644 index 770db66..0000000 --- a/chat-app/recipes/chat-service.yml +++ /dev/null @@ -1,320 +0,0 @@ -AWSTemplateFormatVersion: '2010-09-09' -Description: Socket.io chat service -Parameters: - EnvironmentName: - Type: String - Default: production - Description: A name for the environment that this cloudformation will be part of. - Used to locate other resources in the same environment. - ServiceName: - Type: String - Default: chat - Description: A name for the service - ImageUrl: - Type: String - Default: nginx - Description: The url of a docker image that contains the application process that - will handle the traffic for this service - ContainerPort: - Type: Number - Default: 3000 - Description: What port number the application inside the docker container is binding to - ContainerCpu: - Type: Number - Default: 1024 - Description: How much CPU to give the container. 1024 is 1 CPU - ContainerMemory: - Type: Number - Default: 2048 - Description: How much memory in megabytes to give the container - Path: - Type: String - Default: "*" - Description: A path on the public load balancer that this service - should be connected to. Use * to send all load balancer - traffic to this service. - Priority: - Type: Number - Default: 1 - Description: The priority for the routing rule added to the load balancer. - This only applies if your have multiple services which have been - assigned to different paths on the load balancer. - DesiredCount: - Type: Number - Default: 2 - Description: How many copies of the service task to run - Role: - Type: String - Default: "" - Description: (Optional) An IAM role to give the service's containers if the code within needs to - access other AWS resources like S3 buckets, DynamoDB tables, etc - -Conditions: - HasCustomRole: !Not [ !Equals [!Ref 'Role', ''] ] - -Resources: - # A log group for storing the container logs for this service - LogGroup: - Type: AWS::Logs::LogGroup - Properties: - LogGroupName: !Join ['-', [!Ref 'EnvironmentName', 'service', !Ref 'ServiceName']] - - # The task definition. This is a simple metadata description of what - # container to run, and what resource requirements it has. - TaskDefinition: - Type: AWS::ECS::TaskDefinition - Properties: - Family: !Ref 'ServiceName' - Cpu: !Ref 'ContainerCpu' - Memory: !Ref 'ContainerMemory' - NetworkMode: awsvpc - RequiresCompatibilities: - - FARGATE - ExecutionRoleArn: - Fn::ImportValue: - !Join [':', [!Ref 'EnvironmentName', 'ECSTaskExecutionRole']] - TaskRoleArn: - Fn::If: - - 'HasCustomRole' - - !Ref 'Role' - - !Ref "AWS::NoValue" - ContainerDefinitions: - - Name: !Ref 'ServiceName' - Cpu: !Ref 'ContainerCpu' - Memory: !Ref 'ContainerMemory' - Image: !Ref 'ImageUrl' - Environment: - - Name: REDIS_ENDPOINT - Value: - Fn::ImportValue: - !Join [':', [!Ref 'EnvironmentName', 'RedisEndpoint']] - PortMappings: - - ContainerPort: !Ref 'ContainerPort' - LogConfiguration: - LogDriver: 'awslogs' - Options: - awslogs-group: !Join ['-', [!Ref 'EnvironmentName', 'service', !Ref 'ServiceName']] - awslogs-region: !Ref 'AWS::Region' - awslogs-stream-prefix: !Ref 'ServiceName' - - # The service. The service is a resource which allows you to run multiple - # copies of a type of task, and gather up their logs and metrics, as well - # as monitor the number of running tasks and replace any that have crashed - Service: - Type: AWS::ECS::Service - DependsOn: LoadBalancerRule - Properties: - ServiceName: !Ref 'ServiceName' - Cluster: - Fn::ImportValue: - !Join [':', [!Ref 'EnvironmentName', 'ClusterName']] - LaunchType: FARGATE - DeploymentConfiguration: - MaximumPercent: 200 - MinimumHealthyPercent: 75 - DesiredCount: !Ref 'DesiredCount' - NetworkConfiguration: - AwsvpcConfiguration: - AssignPublicIp: ENABLED - SecurityGroups: - - Fn::ImportValue: - !Join [':', [!Ref 'EnvironmentName', 'FargateContainerSecurityGroup']] - Subnets: - - Fn::ImportValue: - !Join [':', [!Ref 'EnvironmentName', 'PublicSubnetOne']] - - Fn::ImportValue: - !Join [':', [!Ref 'EnvironmentName', 'PublicSubnetTwo']] - TaskDefinition: !Ref 'TaskDefinition' - LoadBalancers: - - ContainerName: !Ref 'ServiceName' - ContainerPort: !Ref 'ContainerPort' - TargetGroupArn: !Ref 'TargetGroup' - - # A target group. This is used for keeping track of all the tasks, and - # what IP addresses / port numbers they have. You can query it yourself, - # to use the addresses yourself, but most often this target group is just - # connected to an application load balancer, or network load balancer, so - # it can automatically distribute traffic across all the targets. - TargetGroup: - Type: AWS::ElasticLoadBalancingV2::TargetGroup - Properties: - HealthCheckIntervalSeconds: 6 - HealthCheckPath: / - HealthCheckProtocol: HTTP - HealthCheckTimeoutSeconds: 5 - HealthyThresholdCount: 2 - TargetType: ip - Name: !Ref 'ServiceName' - Port: 80 - Protocol: HTTP - UnhealthyThresholdCount: 2 - TargetGroupAttributes: - - Key: stickiness.enabled - Value: true - - Key: deregistration_delay.timeout_seconds - Value: 30 - VpcId: - Fn::ImportValue: - !Join [':', [!Ref 'EnvironmentName', 'VPCId']] - - # Create a rule on the load balancer for routing traffic to the target group - LoadBalancerRule: - Type: AWS::ElasticLoadBalancingV2::ListenerRule - Properties: - Actions: - - TargetGroupArn: !Ref 'TargetGroup' - Type: 'forward' - Conditions: - - Field: path-pattern - Values: [!Ref 'Path'] - ListenerArn: - Fn::ImportValue: - !Join [':', [!Ref 'EnvironmentName', 'PublicListener']] - Priority: !Ref 'Priority' - - # Enable autoscaling for this service - ScalableTarget: - Type: AWS::ApplicationAutoScaling::ScalableTarget - DependsOn: Service - Properties: - ServiceNamespace: 'ecs' - ScalableDimension: 'ecs:service:DesiredCount' - ResourceId: - Fn::Join: - - '/' - - - service - - Fn::ImportValue: !Join [':', [!Ref 'EnvironmentName', 'ClusterName']] - - !Ref 'ServiceName' - MinCapacity: 2 - MaxCapacity: 10 - RoleARN: - Fn::ImportValue: - !Join [':', [!Ref 'EnvironmentName', 'AutoscalingRole']] - - # Create scaling policies for the service - ScaleDownPolicy: - Type: AWS::ApplicationAutoScaling::ScalingPolicy - DependsOn: ScalableTarget - Properties: - PolicyName: - Fn::Join: - - '/' - - - scale - - !Ref 'EnvironmentName' - - !Ref 'ServiceName' - - down - PolicyType: StepScaling - ResourceId: - Fn::Join: - - '/' - - - service - - Fn::ImportValue: !Join [':', [!Ref 'EnvironmentName', 'ClusterName']] - - !Ref 'ServiceName' - ScalableDimension: 'ecs:service:DesiredCount' - ServiceNamespace: 'ecs' - StepScalingPolicyConfiguration: - AdjustmentType: 'ChangeInCapacity' - StepAdjustments: - - MetricIntervalUpperBound: 0 - ScalingAdjustment: -1 - MetricAggregationType: 'Average' - Cooldown: 60 - - ScaleUpPolicy: - Type: AWS::ApplicationAutoScaling::ScalingPolicy - DependsOn: ScalableTarget - Properties: - PolicyName: - Fn::Join: - - '/' - - - scale - - !Ref 'EnvironmentName' - - !Ref 'ServiceName' - - up - PolicyType: StepScaling - ResourceId: - Fn::Join: - - '/' - - - service - - Fn::ImportValue: !Join [':', [!Ref 'EnvironmentName', 'ClusterName']] - - !Ref 'ServiceName' - ScalableDimension: 'ecs:service:DesiredCount' - ServiceNamespace: 'ecs' - StepScalingPolicyConfiguration: - AdjustmentType: 'ChangeInCapacity' - StepAdjustments: - - MetricIntervalLowerBound: 0 - MetricIntervalUpperBound: 15 - ScalingAdjustment: 1 - - MetricIntervalLowerBound: 15 - MetricIntervalUpperBound: 25 - ScalingAdjustment: 2 - - MetricIntervalLowerBound: 25 - ScalingAdjustment: 3 - MetricAggregationType: 'Average' - Cooldown: 60 - - # Create alarms to trigger these policies - LowCpuUsageAlarm: - Type: AWS::CloudWatch::Alarm - Properties: - AlarmName: - Fn::Join: - - '-' - - - low-cpu - - !Ref 'EnvironmentName' - - !Ref 'ServiceName' - AlarmDescription: - Fn::Join: - - ' ' - - - "Low CPU utilization for service" - - !Ref 'ServiceName' - - "in stack" - - !Ref 'EnvironmentName' - MetricName: CPUUtilization - Namespace: AWS/ECS - Dimensions: - - Name: ServiceName - Value: !Ref 'ServiceName' - - Name: ClusterName - Value: - Fn::ImportValue: !Join [':', [!Ref 'EnvironmentName', 'ClusterName']] - Statistic: Average - Period: 60 - EvaluationPeriods: 1 - Threshold: 20 - ComparisonOperator: LessThanOrEqualToThreshold - AlarmActions: - - !Ref ScaleDownPolicy - - HighCpuUsageAlarm: - Type: AWS::CloudWatch::Alarm - Properties: - AlarmName: - Fn::Join: - - '-' - - - high-cpu - - !Ref 'EnvironmentName' - - !Ref 'ServiceName' - AlarmDescription: - Fn::Join: - - ' ' - - - "High CPU utilization for service" - - !Ref 'ServiceName' - - "in stack" - - !Ref 'EnvironmentName' - MetricName: CPUUtilization - Namespace: AWS/ECS - Dimensions: - - Name: ServiceName - Value: !Ref 'ServiceName' - - Name: ClusterName - Value: - Fn::ImportValue: !Join [':', [!Ref 'EnvironmentName', 'ClusterName']] - Statistic: Average - Period: 60 - EvaluationPeriods: 1 - Threshold: 70 - ComparisonOperator: GreaterThanOrEqualToThreshold - AlarmActions: - - !Ref ScaleUpPolicy diff --git a/chat-app/recipes/cluster.yml b/chat-app/recipes/cluster.yml deleted file mode 100644 index 217476c..0000000 --- a/chat-app/recipes/cluster.yml +++ /dev/null @@ -1,329 +0,0 @@ -AWSTemplateFormatVersion: '2010-09-09' -Description: The baseline resources used to create a Fargate environment - to launch containerized applications in. -Parameters: - EnvironmentName: - Type: String - Default: production - Description: A name for the environment that this cloudformation will be part of. -Mappings: - # Hard values for the subnet masks. These masks define - # the range of internal IP addresses that can be assigned. - # The VPC can have all IP's from 10.0.0.0 to 10.0.255.255 - # There are two subnets which cover the ranges: - # - # 10.0.0.0 - 10.0.0.255 - # 10.0.1.0 - 10.0.1.255 - # - # If you need more IP addresses (perhaps you have so many - # instances that you run out) then you can customize these - # ranges to add more - SubnetConfig: - VPC: - CIDR: '10.0.0.0/16' - PublicOne: - CIDR: '10.0.0.0/24' - PublicTwo: - CIDR: '10.0.1.0/24' -Resources: - # VPC in which containers will be networked. - # It has two public subnets - # We distribute the subnets across the first two available subnets - # for the region, for high availability. - VPC: - Type: AWS::EC2::VPC - Properties: - EnableDnsSupport: true - EnableDnsHostnames: true - CidrBlock: !FindInMap ['SubnetConfig', 'VPC', 'CIDR'] - - # Two public subnets, where containers can have public IP addresses - PublicSubnetOne: - Type: AWS::EC2::Subnet - Properties: - AvailabilityZone: - Fn::Select: - - 0 - - Fn::GetAZs: {Ref: 'AWS::Region'} - VpcId: !Ref 'VPC' - CidrBlock: !FindInMap ['SubnetConfig', 'PublicOne', 'CIDR'] - MapPublicIpOnLaunch: true - PublicSubnetTwo: - Type: AWS::EC2::Subnet - Properties: - AvailabilityZone: - Fn::Select: - - 1 - - Fn::GetAZs: {Ref: 'AWS::Region'} - VpcId: !Ref 'VPC' - CidrBlock: !FindInMap ['SubnetConfig', 'PublicTwo', 'CIDR'] - MapPublicIpOnLaunch: true - - # Setup networking resources for the public subnets. Containers - # in the public subnets have public IP addresses and the routing table - # sends network traffic via the internet gateway. - InternetGateway: - Type: AWS::EC2::InternetGateway - GatewayAttachement: - Type: AWS::EC2::VPCGatewayAttachment - Properties: - VpcId: !Ref 'VPC' - InternetGatewayId: !Ref 'InternetGateway' - PublicRouteTable: - Type: AWS::EC2::RouteTable - Properties: - VpcId: !Ref 'VPC' - PublicRoute: - Type: AWS::EC2::Route - DependsOn: GatewayAttachement - Properties: - RouteTableId: !Ref 'PublicRouteTable' - DestinationCidrBlock: '0.0.0.0/0' - GatewayId: !Ref 'InternetGateway' - PublicSubnetOneRouteTableAssociation: - Type: AWS::EC2::SubnetRouteTableAssociation - Properties: - SubnetId: !Ref PublicSubnetOne - RouteTableId: !Ref PublicRouteTable - PublicSubnetTwoRouteTableAssociation: - Type: AWS::EC2::SubnetRouteTableAssociation - Properties: - SubnetId: !Ref PublicSubnetTwo - RouteTableId: !Ref PublicRouteTable - - # ECS Resources - ECSCluster: - Type: AWS::ECS::Cluster - - # A security group for the containers we will run in Fargate. - # Two rules, allowing network traffic from a public facing load - # balancer and from other members of the security group. - # - # Remove any of the following ingress rules that are not needed. - # If you want to make direct requests to a container using its - # public IP address you'll need to add a security group rule - # to allow traffic from all IP addresses. - FargateContainerSecurityGroup: - Type: AWS::EC2::SecurityGroup - Properties: - GroupDescription: Access to the Fargate containers - VpcId: !Ref 'VPC' - EcsSecurityGroupIngressFromPublicALB: - Type: AWS::EC2::SecurityGroupIngress - Properties: - Description: Ingress from the public ALB - GroupId: !Ref 'FargateContainerSecurityGroup' - IpProtocol: -1 - SourceSecurityGroupId: !Ref 'PublicLoadBalancerSG' - EcsSecurityGroupIngressFromSelf: - Type: AWS::EC2::SecurityGroupIngress - Properties: - Description: Ingress from other containers in the same security group - GroupId: !Ref 'FargateContainerSecurityGroup' - IpProtocol: -1 - SourceSecurityGroupId: !Ref 'FargateContainerSecurityGroup' - - # Load balancers for getting traffic to containers. - # This sample template creates one load balancer: - # - # - One public load balancer, hosted in public subnets that is accessible - # to the public, and is intended to route traffic to one or more public - # facing services. - - # A public facing load balancer, this is used for accepting traffic from the public - # internet and directing it to public facing microservices - PublicLoadBalancerSG: - Type: AWS::EC2::SecurityGroup - Properties: - GroupDescription: Access to the public facing load balancer - VpcId: !Ref 'VPC' - SecurityGroupIngress: - # Allow access to ALB from anywhere on the internet - - CidrIp: 0.0.0.0/0 - IpProtocol: -1 - PublicLoadBalancer: - Type: AWS::ElasticLoadBalancingV2::LoadBalancer - Properties: - Scheme: internet-facing - LoadBalancerAttributes: - - Key: idle_timeout.timeout_seconds - Value: '30' - Subnets: - # The load balancer is placed into the public subnets, so that traffic - # from the internet can reach the load balancer directly via the internet gateway - - !Ref PublicSubnetOne - - !Ref PublicSubnetTwo - SecurityGroups: [!Ref 'PublicLoadBalancerSG'] - # A dummy target group is used to setup the ALB to just drop traffic - # initially, before any real service target groups have been added. - DummyTargetGroupPublic: - Type: AWS::ElasticLoadBalancingV2::TargetGroup - Properties: - HealthCheckIntervalSeconds: 6 - HealthCheckPath: / - HealthCheckProtocol: HTTP - HealthCheckTimeoutSeconds: 5 - HealthyThresholdCount: 2 - Name: !Join ['-', [!Ref 'EnvironmentName', 'drop-1']] - Port: 80 - Protocol: HTTP - UnhealthyThresholdCount: 2 - VpcId: !Ref 'VPC' - PublicLoadBalancerListener: - Type: AWS::ElasticLoadBalancingV2::Listener - DependsOn: - - PublicLoadBalancer - Properties: - DefaultActions: - - TargetGroupArn: !Ref 'DummyTargetGroupPublic' - Type: 'forward' - LoadBalancerArn: !Ref 'PublicLoadBalancer' - Port: 80 - Protocol: HTTP - - # This is an IAM role which authorizes ECS to manage resources on your - # account on your behalf, such as updating your load balancer with the - # details of where your containers are, so that traffic can reach your - # containers. - ECSRole: - Type: AWS::IAM::Role - Properties: - AssumeRolePolicyDocument: - Statement: - - Effect: Allow - Principal: - Service: [ecs.amazonaws.com] - Action: ['sts:AssumeRole'] - Path: / - Policies: - - PolicyName: ecs-service - PolicyDocument: - Statement: - - Effect: Allow - Action: - # Rules which allow ECS to attach network interfaces to instances - # on your behalf in order for awsvpc networking mode to work right - - 'ec2:AttachNetworkInterface' - - 'ec2:CreateNetworkInterface' - - 'ec2:CreateNetworkInterfacePermission' - - 'ec2:DeleteNetworkInterface' - - 'ec2:DeleteNetworkInterfacePermission' - - 'ec2:Describe*' - - 'ec2:DetachNetworkInterface' - - # Rules which allow ECS to update load balancers on your behalf - # with the information sabout how to send traffic to your containers - - 'elasticloadbalancing:DeregisterInstancesFromLoadBalancer' - - 'elasticloadbalancing:DeregisterTargets' - - 'elasticloadbalancing:Describe*' - - 'elasticloadbalancing:RegisterInstancesWithLoadBalancer' - - 'elasticloadbalancing:RegisterTargets' - Resource: '*' - - # This is a role which is used by the ECS tasks themselves. - ECSTaskExecutionRole: - Type: AWS::IAM::Role - Properties: - AssumeRolePolicyDocument: - Statement: - - Effect: Allow - Principal: - Service: [ecs-tasks.amazonaws.com] - Action: ['sts:AssumeRole'] - Path: / - Policies: - - PolicyName: AmazonECSTaskExecutionRolePolicy - PolicyDocument: - Statement: - - Effect: Allow - Action: - # Allow the ECS Tasks to download images from ECR - - 'ecr:GetAuthorizationToken' - - 'ecr:BatchCheckLayerAvailability' - - 'ecr:GetDownloadUrlForLayer' - - 'ecr:BatchGetImage' - - # Allow the ECS tasks to upload logs to CloudWatch - - 'logs:CreateLogStream' - - 'logs:PutLogEvents' - Resource: '*' - - # A role used by AWS Autoscaling to get the stats for a Fargate - # service, and update it to increase or decrease the number of containers - AutoscalingRole: - Type: AWS::IAM::Role - Properties: - AssumeRolePolicyDocument: - Statement: - - Effect: Allow - Principal: - Service: [application-autoscaling.amazonaws.com] - Action: ['sts:AssumeRole'] - Path: / - Policies: - - PolicyName: service-autoscaling - PolicyDocument: - Statement: - - Effect: Allow - Action: - - 'application-autoscaling:*' - - 'cloudwatch:DescribeAlarms' - - 'cloudwatch:PutMetricAlarm' - - 'ecs:DescribeServices' - - 'ecs:UpdateService' - Resource: '*' - -# These are the values output by the CloudFormation template. Be careful -# about changing any of them, because of them are exported with specific -# names so that the other task related CF templates can use them. -Outputs: - ClusterName: - Description: The name of the ECS cluster - Value: !Ref 'ECSCluster' - Export: - Name: !Join [ ':', [ !Ref 'EnvironmentName', 'ClusterName' ] ] - ExternalUrl: - Description: The url of the external load balancer - Value: !Join ['', ['http://', !GetAtt 'PublicLoadBalancer.DNSName']] - Export: - Name: !Join [ ':', [ !Ref 'EnvironmentName', 'ExternalUrl' ] ] - ECSRole: - Description: The ARN of the ECS role - Value: !GetAtt 'ECSRole.Arn' - Export: - Name: !Join [ ':', [ !Ref 'EnvironmentName', 'ECSRole' ] ] - ECSTaskExecutionRole: - Description: The ARN of the ECS role - Value: !GetAtt 'ECSTaskExecutionRole.Arn' - Export: - Name: !Join [ ':', [ !Ref 'EnvironmentName', 'ECSTaskExecutionRole' ] ] - AutoscalingRole: - Description: The ARN of the ECS role - Value: !GetAtt 'ECSTaskExecutionRole.Arn' - Export: - Name: !Join [ ':', [ !Ref 'EnvironmentName', 'AutoscalingRole' ] ] - PublicListener: - Description: The ARN of the public load balancer's Listener - Value: !Ref PublicLoadBalancerListener - Export: - Name: !Join [ ':', [ !Ref 'EnvironmentName', 'PublicListener' ] ] - VPCId: - Description: The ID of the VPC that this stack is deployed in - Value: !Ref 'VPC' - Export: - Name: !Join [ ':', [ !Ref 'EnvironmentName', 'VPCId' ] ] - PublicSubnetOne: - Description: Public subnet one - Value: !Ref 'PublicSubnetOne' - Export: - Name: !Join [ ':', [ !Ref 'EnvironmentName', 'PublicSubnetOne' ] ] - PublicSubnetTwo: - Description: Public subnet two - Value: !Ref 'PublicSubnetTwo' - Export: - Name: !Join [ ':', [ !Ref 'EnvironmentName', 'PublicSubnetTwo' ] ] - FargateContainerSecurityGroup: - Description: A security group used to allow Fargate containers to receive traffic - Value: !Ref 'FargateContainerSecurityGroup' - Export: - Name: !Join [ ':', [ !Ref 'EnvironmentName', 'FargateContainerSecurityGroup' ] ] diff --git a/chat-app/recipes/resources.yml b/chat-app/recipes/resources.yml deleted file mode 100644 index d615279..0000000 --- a/chat-app/recipes/resources.yml +++ /dev/null @@ -1,59 +0,0 @@ -AWSTemplateFormatVersion: '2010-09-09' -Description: Redis, and any other resources that the chat app needs. -Parameters: - EnvironmentName: - Type: String - Default: production - Description: The environment name, used for locating outputs from the - prerequisite stacks -Resources: - # Subnet group to control where the Redis gets placed - RedisSubnetGroup: - Type: AWS::ElastiCache::SubnetGroup - Properties: - Description: Group of subnets to place Redis into - SubnetIds: - - Fn::ImportValue: - !Join [':', [!Ref 'EnvironmentName', 'PublicSubnetOne']] - - Fn::ImportValue: - !Join [':', [!Ref 'EnvironmentName', 'PublicSubnetTwo']] - - # Security group to add the Redis cluster to the VPC, - # and to allow the Fargate containers to talk to Redis on port 6379 - RedisSecurityGroup: - Type: AWS::EC2::SecurityGroup - Properties: - GroupDescription: "Redis Security Group" - VpcId: - Fn::ImportValue: - !Join [':', [!Ref 'EnvironmentName', 'VPCId']] - RedisIngress: - Type: AWS::EC2::SecurityGroupIngress - Properties: - Description: Ingress from Fargate containers - GroupId: !Ref 'RedisSecurityGroup' - IpProtocol: tcp - FromPort: 6379 - ToPort: 6379 - SourceSecurityGroupId: - Fn::ImportValue: - !Join [':', [!Ref 'EnvironmentName', 'FargateContainerSecurityGroup']] - - # The cluster itself. - Redis: - Type: AWS::ElastiCache::CacheCluster - Properties: - Engine: redis - CacheNodeType: cache.m4.large - NumCacheNodes: 1 - CacheSubnetGroupName: !Ref 'RedisSubnetGroup' - VpcSecurityGroupIds: - - !GetAtt 'RedisSecurityGroup.GroupId' - -Outputs: - RedisEndpoint: - Description: The endpoint of the redis cluster - Value: !GetAtt 'Redis.RedisEndpoint.Address' - Export: - Name: !Join [ ':', [ !Ref 'EnvironmentName', 'RedisEndpoint' ] ] - diff --git a/demo/iac/.terraform.lock.hcl b/demo/iac/.terraform.lock.hcl deleted file mode 100644 index 81dee5f..0000000 --- a/demo/iac/.terraform.lock.hcl +++ /dev/null @@ -1,38 +0,0 @@ -# This file is maintained automatically by "tofu init". -# Manual edits may be lost in future updates. - -provider "registry.opentofu.org/hashicorp/aws" { - version = "5.45.0" - constraints = ">= 4.66.1, >= 5.30.0, >= 5.33.0" - hashes = [ - "h1:3zU3yp1SY+8vHAQvhfhYdPnFYQpFwXXXar+hOrnofzQ=", - "h1:A8MJa+VwONA4BNO5xzeleguJbrblNLnXBImHTK/qgFg=", - "zh:1d71c406aeaf4ba762eb62e4595ab9c9f8da1a2c9b74bb4277c0acfd9678ae65", - "zh:3b00b13154eadedb37bca99bf7cbd556fa9472e6900c970effa17a270ee9f721", - "zh:6f264e8b70153925ac8abfa83ebffe2c2d5a27ab5557a6b16124269b08ac2441", - "zh:80f7d552faf5c43d7dc22c6c1f7e70557b9f01c67db07abbb0330d5d3fc0e464", - "zh:863a2a2e6ae5b42fc46b209d8f2761c882d46aca481a8c49ef221d290b4fd88e", - "zh:8e3bddeb2da7e6bcfd0b0221a083778d2f7fc5cd64f55de7d8d79bd1f7378bae", - "zh:c726104e46cd743bbf240101d7975f44091d893b6e97b46070df0041779b04d2", - "zh:db73a89b462fdd6eb6f32e6ed464430a895fc2e54fb629e8b99773fc32a6a7a8", - "zh:e35179b89eba358f521ffd4546345b4d0683ca3364a9deb8f3b7b4bf60be6f02", - "zh:e7b54a0faecd34a9c73729d1d1f0cfc1b8f56bae789f95987002616f1265ce72", - ] -} - -provider "registry.opentofu.org/hashicorp/null" { - version = "3.2.2" - hashes = [ - "h1:xN1tSeF/rUBfaddk/AVqk4i65z/MMM9uVZWd2cWCCH0=", - "zh:00e5877d19fb1c1d8c4b3536334a46a5c86f57146fd115c7b7b4b5d2bf2de86d", - "zh:1755c2999e73e4d73f9de670c145c9a0dc5a373802799dff06a0e9c161354163", - "zh:2b29d706353bc9c4edda6a2946af3322abe94372ffb421d81fa176f1e57e33be", - "zh:34f65259c6d2bd51582b6da536e782b181b23725782b181193b965f519fbbacd", - "zh:370f6eb744475926a1fa7464d82d46ad83c2e1148b4b21681b4cec4d75b97969", - "zh:5950bdb23b4fcc6431562d7eba3dea37844aa4220c4da2eb898ae3e4d1b64ec4", - "zh:8f3d5c8d4b9d497fec36953a227f80c76d37fc8431b683a23fb1c42b9cccbf8a", - "zh:8f6eb5e65c047bf490ad3891efecefc488503b65898d4ee106f474697ba257d7", - "zh:a7040eed688316fe00379574c72bb8c47dbe2638b038bb705647cbf224de8f72", - "zh:e561f28df04d9e51b75f33004b7767a53c45ad96e3375d86181ba1363bffbc77", - ] -} diff --git a/demo/iac/data.tf b/demo/iac/data.tf deleted file mode 100644 index 4ba5508..0000000 --- a/demo/iac/data.tf +++ /dev/null @@ -1 +0,0 @@ -data "aws_availability_zones" "available" {} diff --git a/demo/iac/ecs.tf b/demo/iac/ecs.tf deleted file mode 100644 index 7f69bd0..0000000 --- a/demo/iac/ecs.tf +++ /dev/null @@ -1,301 +0,0 @@ -################################################################################ -# Cluster -################################################################################ - -module "ecs_cluster" { - source = "./modules/cluster" - - cluster_name = local.name - - # Capacity provider - fargate_capacity_providers = { - FARGATE = { - default_capacity_provider_strategy = { - weight = 50 - base = 20 - } - } - FARGATE_SPOT = { - default_capacity_provider_strategy = { - weight = 50 - } - } - } - - tags = local.tags -} - -################################################################################ -# Service -################################################################################ - -module "ecs_service" { - source = "./modules/service" - - name = local.name - cluster_arn = module.ecs_cluster.arn - desired_count = 1 - cpu = 1024 - memory = 4096 - - # Enables ECS Exec - enable_execute_command = true - - # Container definition(s) - container_definitions = { - - (local.container_name) = { - cpu = 512 - memory = 1024 - image = "richarvey/chat-app:latest" - port_mappings = [ - { - name = local.container_name - containerPort = local.container_port - hostPort = local.container_port - protocol = "tcp" - } - ] - - environment = [ - { - name = "REDIS_ENDPOINT" - value = "valkey" - }, - ] - - memory_reservation = 100 - } - } - - service_connect_configuration = { - namespace = aws_service_discovery_http_namespace.this.arn - service = { - client_alias = { - port = local.container_port - dns_name = local.container_name - } - port_name = local.container_name - discovery_name = local.container_name - } - } - - load_balancer = { - service = { - target_group_arn = module.alb.target_groups["ex_ecs"].arn - container_name = local.container_name - container_port = local.container_port - } - } - - subnet_ids = module.vpc.private_subnets - security_group_rules = { - alb_ingress_3000 = { - type = "ingress" - from_port = local.container_port - to_port = local.container_port - protocol = "tcp" - description = "Service port" - source_security_group_id = module.alb.security_group_id - } - egress_all = { - type = "egress" - from_port = 0 - to_port = 0 - protocol = "-1" - cidr_blocks = ["0.0.0.0/0"] - } - } - - service_tags = { - "ServiceTag" = "Tag on service level" - } - - tags = local.tags -} - -resource "aws_ecs_task_definition" "task" { - family = "service" - network_mode = "awsvpc" - requires_compatibilities = ["FARGATE", "EC2"] - cpu = 512 - memory = 1024 - container_definitions = jsonencode([ - { - name = "valkey" - image = "valkey/valkey:7.2.4-rc1-alpine" - cpu = 512 - memory = 1024 - essential = true # if true and if fails, all other containers fail. Must have at least one essential - portMappings = [ - { - name = "valkey" - containerPort = 6379 - hostPort = 6379 - } - ] - } - ]) -} - -resource "aws_ecs_service" "service" { - name = "valkey" - cluster = module.ecs_cluster.id - task_definition = aws_ecs_task_definition.task.id - desired_count = 1 - launch_type = "FARGATE" - platform_version = "LATEST" - - network_configuration { - assign_public_ip = false - security_groups = [aws_security_group.sg.id] - subnets = module.vpc.private_subnets - } - lifecycle { - ignore_changes = [task_definition] - } - - service_connect_configuration { - enabled = true - namespace = "chat-app-demo" - service { - discovery_name = "valkey" - port_name = "valkey" - client_alias { - dns_name = "valkey" - port = 6379 - } - } - } - -} - - -resource "aws_security_group" "sg" { - name = "ecs" - vpc_id = module.vpc.vpc_id - - egress { - from_port = 0 - to_port = 0 - protocol = "-1" - cidr_blocks = ["0.0.0.0/0"] - } - - ingress { - protocol = -1 - self = true - from_port = 0 - to_port = 0 - description = "" - } - - ingress { - from_port = 6379 - to_port = 6379 - protocol = "tcp" - self = "false" - cidr_blocks = ["0.0.0.0/0"] - description = "Port 80" - } - -} - -resource "null_resource" "update_desired_count" { - triggers = { - # Changes to this value will trigger the API call execution below - desired_count = 3 - } - - provisioner "local-exec" { - interpreter = ["/bin/bash", "-c"] - - # Note: this requires the awscli to be installed locally where Terraform is executed - command = <<-EOT - aws ecs update-service \ - --cluster ${module.ecs_cluster.name} \ - --service ${module.ecs_service.name} \ - --desired-count ${null_resource.update_desired_count.triggers.desired_count} - EOT - } -} - -################################################################################ -# Supporting Resources -################################################################################ - -resource "aws_service_discovery_http_namespace" "this" { - name = local.name - description = "CloudMap namespace for ${local.name}" - tags = local.tags -} - -module "alb" { - source = "terraform-aws-modules/alb/aws" - version = "~> 9.0" - - name = local.name - - load_balancer_type = "application" - - vpc_id = module.vpc.vpc_id - subnets = module.vpc.public_subnets - - # For example only - enable_deletion_protection = false - - # Security Group - security_group_ingress_rules = { - all_http = { - from_port = 80 - to_port = 80 - ip_protocol = "tcp" - cidr_ipv4 = "0.0.0.0/0" - } - } - security_group_egress_rules = { - all = { - ip_protocol = "-1" - cidr_ipv4 = module.vpc.vpc_cidr_block - } - } - - listeners = { - ex_http = { - port = 80 - protocol = "HTTP" - - forward = { - target_group_key = "ex_ecs" - } - } - } - - target_groups = { - ex_ecs = { - backend_protocol = "HTTP" - backend_port = local.container_port - target_type = "ip" - deregistration_delay = 5 - load_balancing_cross_zone_enabled = true - - health_check = { - enabled = true - healthy_threshold = 5 - interval = 30 - matcher = "200" - path = "/" - port = "traffic-port" - protocol = "HTTP" - timeout = 5 - unhealthy_threshold = 2 - } - - # There's nothing to attach here in this definition. Instead, - # ECS will attach the IPs of the tasks to this target group - create_attachment = false - } - } - - tags = local.tags -} diff --git a/demo/iac/locals.tf b/demo/iac/locals.tf deleted file mode 100644 index 316dda1..0000000 --- a/demo/iac/locals.tf +++ /dev/null @@ -1,16 +0,0 @@ -locals { - region = "eu-west-1" - name = "chat-app-demo" - - vpc_cidr = "10.0.0.0/16" - azs = slice(data.aws_availability_zones.available.names, 0, 3) - - container_name = "chat-app" - container_port = 3000 - - tags = { - Name = local.name - Example = local.name - Repository = "https://github.com/terraform-aws-modules/terraform-aws-ecs" - } -} diff --git a/demo/iac/main.tf b/demo/iac/main.tf deleted file mode 100644 index 5198d0a..0000000 --- a/demo/iac/main.tf +++ /dev/null @@ -1,4 +0,0 @@ -provider "aws" { - region = var.region -} - diff --git a/demo/iac/modules/cluster/README.md b/demo/iac/modules/cluster/README.md deleted file mode 100644 index 44284f0..0000000 --- a/demo/iac/modules/cluster/README.md +++ /dev/null @@ -1,214 +0,0 @@ -# Amazon ECS Cluster Terraform Module - -Terraform module which creates Amazon ECS (Elastic Container Service) cluster resources on AWS. - -## Available Features - -- ECS cluster -- Fargate capacity providers -- EC2 AutoScaling Group capacity providers -- ECS Service w/ task definition, task set, and container definition support - -For more details see the [design doc](https://github.com/terraform-aws-modules/terraform-aws-ecs/blob/master/docs/README.md) - -## Usage - -### Fargate Capacity Providers - -```hcl -module "ecs_cluster" { - source = "terraform-aws-modules/ecs/aws//modules/cluster" - - cluster_name = "ecs-fargate" - - cluster_configuration = { - execute_command_configuration = { - logging = "OVERRIDE" - log_configuration = { - cloud_watch_log_group_name = "/aws/ecs/aws-ec2" - } - } - } - - fargate_capacity_providers = { - FARGATE = { - default_capacity_provider_strategy = { - weight = 50 - } - } - FARGATE_SPOT = { - default_capacity_provider_strategy = { - weight = 50 - } - } - } - - tags = { - Environment = "Development" - Project = "EcsEc2" - } -} -``` - -### EC2 Autoscaling Capacity Providers - -```hcl -module "ecs_cluster" { - source = "terraform-aws-modules/ecs/aws//modules/cluster" - - cluster_name = "ecs-ec2" - - cluster_configuration = { - execute_command_configuration = { - logging = "OVERRIDE" - log_configuration = { - cloud_watch_log_group_name = "/aws/ecs/aws-ec2" - } - } - } - - autoscaling_capacity_providers = { - one = { - auto_scaling_group_arn = "arn:aws:autoscaling:eu-west-1:012345678901:autoScalingGroup:08419a61:autoScalingGroupName/ecs-ec2-one-20220603194933774300000011" - managed_termination_protection = "ENABLED" - - managed_scaling = { - maximum_scaling_step_size = 5 - minimum_scaling_step_size = 1 - status = "ENABLED" - target_capacity = 60 - } - - default_capacity_provider_strategy = { - weight = 60 - base = 20 - } - } - two = { - auto_scaling_group_arn = "arn:aws:autoscaling:eu-west-1:012345678901:autoScalingGroup:08419a61:autoScalingGroupName/ecs-ec2-two-20220603194933774300000022" - managed_termination_protection = "ENABLED" - - managed_scaling = { - maximum_scaling_step_size = 15 - minimum_scaling_step_size = 5 - status = "ENABLED" - target_capacity = 90 - } - - default_capacity_provider_strategy = { - weight = 40 - } - } - } - - tags = { - Environment = "Development" - Project = "EcsEc2" - } -} -``` - -## Conditional Creation - -The following values are provided to toggle on/off creation of the associated resources as desired: - -```hcl -module "ecs_cluster" { - source = "terraform-aws-modules/ecs/aws//modules/cluster" - - # Disable creation of cluster and all resources - create = false - - # ... omitted -} -``` - -## Examples - -- [ECS Cluster Complete](https://github.com/terraform-aws-modules/terraform-aws-ecs/tree/master/examples/complete) -- [ECS Cluster w/ EC2 Autoscaling Capacity Provider](https://github.com/terraform-aws-modules/terraform-aws-ecs/tree/master/examples/ec2-autoscaling) -- [ECS Cluster w/ Fargate Capacity Provider](https://github.com/terraform-aws-modules/terraform-aws-ecs/tree/master/examples/fargate) - - -## Requirements - -| Name | Version | -|------|---------| -| [terraform](#requirement\_terraform) | >= 1.0 | -| [aws](#requirement\_aws) | >= 4.66.1 | - -## Providers - -| Name | Version | -|------|---------| -| [aws](#provider\_aws) | >= 4.66.1 | - -## Modules - -No modules. - -## Resources - -| Name | Type | -|------|------| -| [aws_cloudwatch_log_group.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_log_group) | resource | -| [aws_ecs_capacity_provider.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_capacity_provider) | resource | -| [aws_ecs_cluster.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_cluster) | resource | -| [aws_ecs_cluster_capacity_providers.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_cluster_capacity_providers) | resource | -| [aws_iam_policy.task_exec](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_policy) | resource | -| [aws_iam_role.task_exec](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role) | resource | -| [aws_iam_role_policy_attachment.task_exec](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource | -| [aws_iam_role_policy_attachment.task_exec_additional](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource | -| [aws_iam_policy_document.task_exec](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source | -| [aws_iam_policy_document.task_exec_assume](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source | - -## Inputs - -| Name | Description | Type | Default | Required | -|------|-------------|------|---------|:--------:| -| [autoscaling\_capacity\_providers](#input\_autoscaling\_capacity\_providers) | Map of autoscaling capacity provider definitions to create for the cluster | `any` | `{}` | no | -| [cloudwatch\_log\_group\_kms\_key\_id](#input\_cloudwatch\_log\_group\_kms\_key\_id) | If a KMS Key ARN is set, this key will be used to encrypt the corresponding log group. Please be sure that the KMS Key has an appropriate key policy (https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html) | `string` | `null` | no | -| [cloudwatch\_log\_group\_name](#input\_cloudwatch\_log\_group\_name) | Custom name of CloudWatch Log Group for ECS cluster | `string` | `null` | no | -| [cloudwatch\_log\_group\_retention\_in\_days](#input\_cloudwatch\_log\_group\_retention\_in\_days) | Number of days to retain log events | `number` | `90` | no | -| [cloudwatch\_log\_group\_tags](#input\_cloudwatch\_log\_group\_tags) | A map of additional tags to add to the log group created | `map(string)` | `{}` | no | -| [cluster\_configuration](#input\_cluster\_configuration) | The execute command configuration for the cluster | `any` | `{}` | no | -| [cluster\_name](#input\_cluster\_name) | Name of the cluster (up to 255 letters, numbers, hyphens, and underscores) | `string` | `""` | no | -| [cluster\_service\_connect\_defaults](#input\_cluster\_service\_connect\_defaults) | Configures a default Service Connect namespace | `map(string)` | `{}` | no | -| [cluster\_settings](#input\_cluster\_settings) | List of configuration block(s) with cluster settings. For example, this can be used to enable CloudWatch Container Insights for a cluster | `any` |
    [
    {
    "name": "containerInsights",
    "value": "enabled"
    }
    ]
    | no | -| [create](#input\_create) | Determines whether resources will be created (affects all resources) | `bool` | `true` | no | -| [create\_cloudwatch\_log\_group](#input\_create\_cloudwatch\_log\_group) | Determines whether a log group is created by this module for the cluster logs. If not, AWS will automatically create one if logging is enabled | `bool` | `true` | no | -| [create\_task\_exec\_iam\_role](#input\_create\_task\_exec\_iam\_role) | Determines whether the ECS task definition IAM role should be created | `bool` | `false` | no | -| [create\_task\_exec\_policy](#input\_create\_task\_exec\_policy) | Determines whether the ECS task definition IAM policy should be created. This includes permissions included in AmazonECSTaskExecutionRolePolicy as well as access to secrets and SSM parameters | `bool` | `true` | no | -| [default\_capacity\_provider\_use\_fargate](#input\_default\_capacity\_provider\_use\_fargate) | Determines whether to use Fargate or autoscaling for default capacity provider strategy | `bool` | `true` | no | -| [fargate\_capacity\_providers](#input\_fargate\_capacity\_providers) | Map of Fargate capacity provider definitions to use for the cluster | `any` | `{}` | no | -| [tags](#input\_tags) | A map of tags to add to all resources | `map(string)` | `{}` | no | -| [task\_exec\_iam\_role\_description](#input\_task\_exec\_iam\_role\_description) | Description of the role | `string` | `null` | no | -| [task\_exec\_iam\_role\_name](#input\_task\_exec\_iam\_role\_name) | Name to use on IAM role created | `string` | `null` | no | -| [task\_exec\_iam\_role\_path](#input\_task\_exec\_iam\_role\_path) | IAM role path | `string` | `null` | no | -| [task\_exec\_iam\_role\_permissions\_boundary](#input\_task\_exec\_iam\_role\_permissions\_boundary) | ARN of the policy that is used to set the permissions boundary for the IAM role | `string` | `null` | no | -| [task\_exec\_iam\_role\_policies](#input\_task\_exec\_iam\_role\_policies) | Map of IAM role policy ARNs to attach to the IAM role | `map(string)` | `{}` | no | -| [task\_exec\_iam\_role\_tags](#input\_task\_exec\_iam\_role\_tags) | A map of additional tags to add to the IAM role created | `map(string)` | `{}` | no | -| [task\_exec\_iam\_role\_use\_name\_prefix](#input\_task\_exec\_iam\_role\_use\_name\_prefix) | Determines whether the IAM role name (`task_exec_iam_role_name`) is used as a prefix | `bool` | `true` | no | -| [task\_exec\_iam\_statements](#input\_task\_exec\_iam\_statements) | A map of IAM policy [statements](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document#statement) for custom permission usage | `any` | `{}` | no | -| [task\_exec\_secret\_arns](#input\_task\_exec\_secret\_arns) | List of SecretsManager secret ARNs the task execution role will be permitted to get/read | `list(string)` |
    [
    "arn:aws:secretsmanager:*:*:secret:*"
    ]
    | no | -| [task\_exec\_ssm\_param\_arns](#input\_task\_exec\_ssm\_param\_arns) | List of SSM parameter ARNs the task execution role will be permitted to get/read | `list(string)` |
    [
    "arn:aws:ssm:*:*:parameter/*"
    ]
    | no | - -## Outputs - -| Name | Description | -|------|-------------| -| [arn](#output\_arn) | ARN that identifies the cluster | -| [autoscaling\_capacity\_providers](#output\_autoscaling\_capacity\_providers) | Map of autoscaling capacity providers created and their attributes | -| [cloudwatch\_log\_group\_arn](#output\_cloudwatch\_log\_group\_arn) | ARN of CloudWatch log group created | -| [cloudwatch\_log\_group\_name](#output\_cloudwatch\_log\_group\_name) | Name of CloudWatch log group created | -| [cluster\_capacity\_providers](#output\_cluster\_capacity\_providers) | Map of cluster capacity providers attributes | -| [id](#output\_id) | ID that identifies the cluster | -| [name](#output\_name) | Name that identifies the cluster | -| [task\_exec\_iam\_role\_arn](#output\_task\_exec\_iam\_role\_arn) | Task execution IAM role ARN | -| [task\_exec\_iam\_role\_name](#output\_task\_exec\_iam\_role\_name) | Task execution IAM role name | -| [task\_exec\_iam\_role\_unique\_id](#output\_task\_exec\_iam\_role\_unique\_id) | Stable and unique string identifying the task execution IAM role | - - -## License - -Apache-2.0 Licensed. See [LICENSE](https://github.com/terraform-aws-modules/terraform-aws-ecs/blob/master/LICENSE). diff --git a/demo/iac/modules/cluster/main.tf b/demo/iac/modules/cluster/main.tf deleted file mode 100644 index cecf7e4..0000000 --- a/demo/iac/modules/cluster/main.tf +++ /dev/null @@ -1,324 +0,0 @@ -################################################################################ -# Cluster -################################################################################ - -locals { - execute_command_configuration = { - logging = "OVERRIDE" - log_configuration = { - cloud_watch_log_group_name = try(aws_cloudwatch_log_group.this[0].name, null) - } - } -} - -resource "aws_ecs_cluster" "this" { - count = var.create ? 1 : 0 - - name = var.cluster_name - - dynamic "configuration" { - for_each = var.create_cloudwatch_log_group ? [var.cluster_configuration] : [] - - content { - dynamic "execute_command_configuration" { - for_each = try([merge(local.execute_command_configuration, configuration.value.execute_command_configuration)], [{}]) - - content { - kms_key_id = try(execute_command_configuration.value.kms_key_id, null) - logging = try(execute_command_configuration.value.logging, "DEFAULT") - - dynamic "log_configuration" { - for_each = try([execute_command_configuration.value.log_configuration], []) - - content { - cloud_watch_encryption_enabled = try(log_configuration.value.cloud_watch_encryption_enabled, null) - cloud_watch_log_group_name = try(log_configuration.value.cloud_watch_log_group_name, null) - s3_bucket_name = try(log_configuration.value.s3_bucket_name, null) - s3_bucket_encryption_enabled = try(log_configuration.value.s3_bucket_encryption_enabled, null) - s3_key_prefix = try(log_configuration.value.s3_key_prefix, null) - } - } - } - } - } - } - - dynamic "configuration" { - for_each = !var.create_cloudwatch_log_group && length(var.cluster_configuration) > 0 ? [var.cluster_configuration] : [] - - content { - dynamic "execute_command_configuration" { - for_each = try([configuration.value.execute_command_configuration], [{}]) - - content { - kms_key_id = try(execute_command_configuration.value.kms_key_id, null) - logging = try(execute_command_configuration.value.logging, "DEFAULT") - - dynamic "log_configuration" { - for_each = try([execute_command_configuration.value.log_configuration], []) - - content { - cloud_watch_encryption_enabled = try(log_configuration.value.cloud_watch_encryption_enabled, null) - cloud_watch_log_group_name = try(log_configuration.value.cloud_watch_log_group_name, null) - s3_bucket_name = try(log_configuration.value.s3_bucket_name, null) - s3_bucket_encryption_enabled = try(log_configuration.value.s3_bucket_encryption_enabled, null) - s3_key_prefix = try(log_configuration.value.s3_key_prefix, null) - } - } - } - } - } - } - - dynamic "service_connect_defaults" { - for_each = length(var.cluster_service_connect_defaults) > 0 ? [var.cluster_service_connect_defaults] : [] - - content { - namespace = service_connect_defaults.value.namespace - } - } - - dynamic "setting" { - for_each = flatten([var.cluster_settings]) - - content { - name = setting.value.name - value = setting.value.value - } - } - - tags = var.tags -} - -################################################################################ -# CloudWatch Log Group -################################################################################ -resource "aws_cloudwatch_log_group" "this" { - count = var.create && var.create_cloudwatch_log_group ? 1 : 0 - - name = try(coalesce(var.cloudwatch_log_group_name, "/aws/ecs/${var.cluster_name}"), "") - retention_in_days = var.cloudwatch_log_group_retention_in_days - kms_key_id = var.cloudwatch_log_group_kms_key_id - - tags = merge(var.tags, var.cloudwatch_log_group_tags) -} - -################################################################################ -# Cluster Capacity Providers -################################################################################ - -locals { - default_capacity_providers = merge( - { for k, v in var.fargate_capacity_providers : k => v if var.default_capacity_provider_use_fargate }, - { for k, v in var.autoscaling_capacity_providers : k => v if !var.default_capacity_provider_use_fargate } - ) -} - -resource "aws_ecs_cluster_capacity_providers" "this" { - count = var.create && length(merge(var.fargate_capacity_providers, var.autoscaling_capacity_providers)) > 0 ? 1 : 0 - - cluster_name = aws_ecs_cluster.this[0].name - capacity_providers = distinct(concat( - [for k, v in var.fargate_capacity_providers : try(v.name, k)], - [for k, v in var.autoscaling_capacity_providers : try(v.name, k)] - )) - - # https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-capacity-providers.html#capacity-providers-considerations - dynamic "default_capacity_provider_strategy" { - for_each = local.default_capacity_providers - iterator = strategy - - content { - capacity_provider = try(strategy.value.name, strategy.key) - base = try(strategy.value.default_capacity_provider_strategy.base, null) - weight = try(strategy.value.default_capacity_provider_strategy.weight, null) - } - } - - depends_on = [ - aws_ecs_capacity_provider.this - ] -} - -################################################################################ -# Capacity Provider - Autoscaling Group(s) -################################################################################ - -resource "aws_ecs_capacity_provider" "this" { - for_each = { for k, v in var.autoscaling_capacity_providers : k => v if var.create } - - name = try(each.value.name, each.key) - - auto_scaling_group_provider { - auto_scaling_group_arn = each.value.auto_scaling_group_arn - # When you use managed termination protection, you must also use managed scaling otherwise managed termination protection won't work - managed_termination_protection = length(try([each.value.managed_scaling], [])) == 0 ? "DISABLED" : try(each.value.managed_termination_protection, null) - - dynamic "managed_scaling" { - for_each = try([each.value.managed_scaling], []) - - content { - instance_warmup_period = try(managed_scaling.value.instance_warmup_period, null) - maximum_scaling_step_size = try(managed_scaling.value.maximum_scaling_step_size, null) - minimum_scaling_step_size = try(managed_scaling.value.minimum_scaling_step_size, null) - status = try(managed_scaling.value.status, null) - target_capacity = try(managed_scaling.value.target_capacity, null) - } - } - } - - tags = merge(var.tags, try(each.value.tags, {})) -} - -################################################################################ -# Task Execution - IAM Role -# https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html -################################################################################ - -locals { - task_exec_iam_role_name = try(coalesce(var.task_exec_iam_role_name, var.cluster_name), "") - - create_task_exec_iam_role = var.create && var.create_task_exec_iam_role - create_task_exec_policy = local.create_task_exec_iam_role && var.create_task_exec_policy -} - -data "aws_iam_policy_document" "task_exec_assume" { - count = local.create_task_exec_iam_role ? 1 : 0 - - statement { - sid = "ECSTaskExecutionAssumeRole" - actions = ["sts:AssumeRole"] - - principals { - type = "Service" - identifiers = ["ecs-tasks.amazonaws.com"] - } - } -} - -resource "aws_iam_role" "task_exec" { - count = local.create_task_exec_iam_role ? 1 : 0 - - name = var.task_exec_iam_role_use_name_prefix ? null : local.task_exec_iam_role_name - name_prefix = var.task_exec_iam_role_use_name_prefix ? "${local.task_exec_iam_role_name}-" : null - path = var.task_exec_iam_role_path - description = coalesce(var.task_exec_iam_role_description, "Task execution role for ${var.cluster_name}") - - assume_role_policy = data.aws_iam_policy_document.task_exec_assume[0].json - permissions_boundary = var.task_exec_iam_role_permissions_boundary - force_detach_policies = true - - tags = merge(var.tags, var.task_exec_iam_role_tags) -} - -resource "aws_iam_role_policy_attachment" "task_exec_additional" { - for_each = { for k, v in var.task_exec_iam_role_policies : k => v if local.create_task_exec_iam_role } - - role = aws_iam_role.task_exec[0].name - policy_arn = each.value -} - -data "aws_iam_policy_document" "task_exec" { - count = local.create_task_exec_policy ? 1 : 0 - - # Pulled from AmazonECSTaskExecutionRolePolicy - statement { - sid = "Logs" - actions = [ - "logs:CreateLogStream", - "logs:PutLogEvents", - ] - resources = ["*"] - } - - # Pulled from AmazonECSTaskExecutionRolePolicy - statement { - sid = "ECR" - actions = [ - "ecr:GetAuthorizationToken", - "ecr:BatchCheckLayerAvailability", - "ecr:GetDownloadUrlForLayer", - "ecr:BatchGetImage", - ] - resources = ["*"] - } - - dynamic "statement" { - for_each = length(var.task_exec_ssm_param_arns) > 0 ? [1] : [] - - content { - sid = "GetSSMParams" - actions = ["ssm:GetParameters"] - resources = var.task_exec_ssm_param_arns - } - } - - dynamic "statement" { - for_each = length(var.task_exec_secret_arns) > 0 ? [1] : [] - - content { - sid = "GetSecrets" - actions = ["secretsmanager:GetSecretValue"] - resources = var.task_exec_secret_arns - } - } - - dynamic "statement" { - for_each = var.task_exec_iam_statements - - content { - sid = try(statement.value.sid, null) - actions = try(statement.value.actions, null) - not_actions = try(statement.value.not_actions, null) - effect = try(statement.value.effect, null) - resources = try(statement.value.resources, null) - not_resources = try(statement.value.not_resources, null) - - dynamic "principals" { - for_each = try(statement.value.principals, []) - - content { - type = principals.value.type - identifiers = principals.value.identifiers - } - } - - dynamic "not_principals" { - for_each = try(statement.value.not_principals, []) - - content { - type = not_principals.value.type - identifiers = not_principals.value.identifiers - } - } - - dynamic "condition" { - for_each = try(statement.value.conditions, []) - - content { - test = condition.value.test - values = condition.value.values - variable = condition.value.variable - } - } - } - } -} - -resource "aws_iam_policy" "task_exec" { - count = local.create_task_exec_policy ? 1 : 0 - - name = var.task_exec_iam_role_use_name_prefix ? null : local.task_exec_iam_role_name - name_prefix = var.task_exec_iam_role_use_name_prefix ? "${local.task_exec_iam_role_name}-" : null - description = coalesce(var.task_exec_iam_role_description, "Task execution role IAM policy") - policy = data.aws_iam_policy_document.task_exec[0].json - - tags = merge(var.tags, var.task_exec_iam_role_tags) -} - -resource "aws_iam_role_policy_attachment" "task_exec" { - count = local.create_task_exec_policy ? 1 : 0 - - role = aws_iam_role.task_exec[0].name - policy_arn = aws_iam_policy.task_exec[0].arn -} diff --git a/demo/iac/modules/cluster/outputs.tf b/demo/iac/modules/cluster/outputs.tf deleted file mode 100644 index 4e05381..0000000 --- a/demo/iac/modules/cluster/outputs.tf +++ /dev/null @@ -1,70 +0,0 @@ -################################################################################ -# Cluster -################################################################################ - -output "arn" { - description = "ARN that identifies the cluster" - value = try(aws_ecs_cluster.this[0].arn, null) -} - -output "id" { - description = "ID that identifies the cluster" - value = try(aws_ecs_cluster.this[0].id, null) -} - -output "name" { - description = "Name that identifies the cluster" - value = try(aws_ecs_cluster.this[0].name, null) -} - -################################################################################ -# CloudWatch Log Group -################################################################################ - -output "cloudwatch_log_group_name" { - description = "Name of CloudWatch log group created" - value = try(aws_cloudwatch_log_group.this[0].name, null) -} - -output "cloudwatch_log_group_arn" { - description = "ARN of CloudWatch log group created" - value = try(aws_cloudwatch_log_group.this[0].arn, null) -} - -################################################################################ -# Cluster Capacity Providers -################################################################################ - -output "cluster_capacity_providers" { - description = "Map of cluster capacity providers attributes" - value = { for k, v in aws_ecs_cluster_capacity_providers.this : v.id => v } -} - -################################################################################ -# Capacity Provider - Autoscaling Group(s) -################################################################################ - -output "autoscaling_capacity_providers" { - description = "Map of autoscaling capacity providers created and their attributes" - value = aws_ecs_capacity_provider.this -} - -################################################################################ -# Task Execution - IAM Role -# https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html -################################################################################ - -output "task_exec_iam_role_name" { - description = "Task execution IAM role name" - value = try(aws_iam_role.task_exec[0].name, null) -} - -output "task_exec_iam_role_arn" { - description = "Task execution IAM role ARN" - value = try(aws_iam_role.task_exec[0].arn, null) -} - -output "task_exec_iam_role_unique_id" { - description = "Stable and unique string identifying the task execution IAM role" - value = try(aws_iam_role.task_exec[0].unique_id, null) -} diff --git a/demo/iac/modules/cluster/variables.tf b/demo/iac/modules/cluster/variables.tf deleted file mode 100644 index 6629743..0000000 --- a/demo/iac/modules/cluster/variables.tf +++ /dev/null @@ -1,177 +0,0 @@ -variable "create" { - description = "Determines whether resources will be created (affects all resources)" - type = bool - default = true -} - -variable "tags" { - description = "A map of tags to add to all resources" - type = map(string) - default = {} -} - -################################################################################ -# Cluster -################################################################################ - -variable "cluster_name" { - description = "Name of the cluster (up to 255 letters, numbers, hyphens, and underscores)" - type = string - default = "" -} - -variable "cluster_configuration" { - description = "The execute command configuration for the cluster" - type = any - default = {} -} - -variable "cluster_settings" { - description = "List of configuration block(s) with cluster settings. For example, this can be used to enable CloudWatch Container Insights for a cluster" - type = any - default = [ - { - name = "containerInsights" - value = "enabled" - } - ] -} - -variable "cluster_service_connect_defaults" { - description = "Configures a default Service Connect namespace" - type = map(string) - default = {} -} - -################################################################################ -# CloudWatch Log Group -################################################################################ - -variable "create_cloudwatch_log_group" { - description = "Determines whether a log group is created by this module for the cluster logs. If not, AWS will automatically create one if logging is enabled" - type = bool - default = true -} - -variable "cloudwatch_log_group_name" { - description = "Custom name of CloudWatch Log Group for ECS cluster" - type = string - default = null -} - -variable "cloudwatch_log_group_retention_in_days" { - description = "Number of days to retain log events" - type = number - default = 90 -} - -variable "cloudwatch_log_group_kms_key_id" { - description = "If a KMS Key ARN is set, this key will be used to encrypt the corresponding log group. Please be sure that the KMS Key has an appropriate key policy (https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html)" - type = string - default = null -} - -variable "cloudwatch_log_group_tags" { - description = "A map of additional tags to add to the log group created" - type = map(string) - default = {} -} - -################################################################################ -# Capacity Providers -################################################################################ - -variable "default_capacity_provider_use_fargate" { - description = "Determines whether to use Fargate or autoscaling for default capacity provider strategy" - type = bool - default = true -} - -variable "fargate_capacity_providers" { - description = "Map of Fargate capacity provider definitions to use for the cluster" - type = any - default = {} -} - -variable "autoscaling_capacity_providers" { - description = "Map of autoscaling capacity provider definitions to create for the cluster" - type = any - default = {} -} - -################################################################################ -# Task Execution - IAM Role -# https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html -################################################################################ - -variable "create_task_exec_iam_role" { - description = "Determines whether the ECS task definition IAM role should be created" - type = bool - default = false -} - -variable "task_exec_iam_role_name" { - description = "Name to use on IAM role created" - type = string - default = null -} - -variable "task_exec_iam_role_use_name_prefix" { - description = "Determines whether the IAM role name (`task_exec_iam_role_name`) is used as a prefix" - type = bool - default = true -} - -variable "task_exec_iam_role_path" { - description = "IAM role path" - type = string - default = null -} - -variable "task_exec_iam_role_description" { - description = "Description of the role" - type = string - default = null -} - -variable "task_exec_iam_role_permissions_boundary" { - description = "ARN of the policy that is used to set the permissions boundary for the IAM role" - type = string - default = null -} - -variable "task_exec_iam_role_tags" { - description = "A map of additional tags to add to the IAM role created" - type = map(string) - default = {} -} - -variable "task_exec_iam_role_policies" { - description = "Map of IAM role policy ARNs to attach to the IAM role" - type = map(string) - default = {} -} - -variable "create_task_exec_policy" { - description = "Determines whether the ECS task definition IAM policy should be created. This includes permissions included in AmazonECSTaskExecutionRolePolicy as well as access to secrets and SSM parameters" - type = bool - default = true -} - -variable "task_exec_ssm_param_arns" { - description = "List of SSM parameter ARNs the task execution role will be permitted to get/read" - type = list(string) - default = ["arn:aws:ssm:*:*:parameter/*"] -} - -variable "task_exec_secret_arns" { - description = "List of SecretsManager secret ARNs the task execution role will be permitted to get/read" - type = list(string) - default = ["arn:aws:secretsmanager:*:*:secret:*"] -} - -variable "task_exec_iam_statements" { - description = "A map of IAM policy [statements](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document#statement) for custom permission usage" - type = any - default = {} -} diff --git a/demo/iac/modules/container-definition/README.md b/demo/iac/modules/container-definition/README.md deleted file mode 100644 index ada38d2..0000000 --- a/demo/iac/modules/container-definition/README.md +++ /dev/null @@ -1,203 +0,0 @@ -# Amazon ECS Container Definition Module - -Configuration in this directory creates an Amazon ECS container definition. - -The module defaults to creating and utilizing a CloudWatch log group. You can disable this behavior by setting `enable_cloudwatch_logging` = `false` - useful for scenarios where Firelens is used for log forwarding. - -For more details see the [design doc](https://github.com/terraform-aws-modules/terraform-aws-ecs/blob/master/docs/design.md) - -## Usage - -### Standard - -```hcl -module "ecs_container_definition" { - source = "terraform-aws-modules/ecs/aws//modules/container-definition" - - name = "example" - cpu = 512 - memory = 1024 - essential = true - image = "public.ecr.aws/aws-containers/ecsdemo-frontend:776fd50" - port_mappings = [ - { - name = "ecs-sample" - containerPort = 80 - protocol = "tcp" - } - ] - - # Example image used requires access to write to root filesystem - readonly_root_filesystem = false - - memory_reservation = 100 - - tags = { - Environment = "dev" - Terraform = "true" - } -} -``` - -### W/ Firelens - -```hcl -module "fluentbit_ecs_container_definition" { - source = "terraform-aws-modules/ecs/aws//modules/container-definition" - name = "fluent-bit" - - cpu = 512 - memory = 1024 - essential = true - image = "906394416424.dkr.ecr.us-west-2.amazonaws.com/aws-for-fluent-bit:stable" - firelens_configuration = { - type = "fluentbit" - } - memory_reservation = 50 - - tags = { - Environment = "dev" - Terraform = "true" - } -} - -module "example_ecs_container_definition" { - source = "terraform-aws-modules/ecs/aws//modules/container-definition" - - name = "example" - cpu = 512 - memory = 1024 - essential = true - image = "public.ecr.aws/aws-containers/ecsdemo-frontend:776fd50" - port_mappings = [ - { - name = "ecs-sample" - containerPort = 80 - protocol = "tcp" - } - ] - - # Example image used requires access to write to root filesystem - readonly_root_filesystem = false - - dependencies = [{ - containerName = "fluent-bit" - condition = "START" - }] - - enable_cloudwatch_logging = false - log_configuration = { - logDriver = "awsfirelens" - options = { - Name = "firehose" - region = "eu-west-1" - delivery_stream = "my-stream" - log-driver-buffer-limit = "2097152" - } - } - memory_reservation = 100 - - tags = { - Environment = "dev" - Terraform = "true" - } -} -``` - -## Examples - -- [ECS Cluster Complete](https://github.com/terraform-aws-modules/terraform-aws-ecs/tree/master/examples/complete) -- [ECS Cluster w/ EC2 Autoscaling Capacity Provider](https://github.com/terraform-aws-modules/terraform-aws-ecs/tree/master/examples/ec2-autoscaling) -- [ECS Cluster w/ Fargate Capacity Provider](https://github.com/terraform-aws-modules/terraform-aws-ecs/tree/master/examples/fargate) - - -## Requirements - -| Name | Version | -|------|---------| -| [terraform](#requirement\_terraform) | >= 1.0 | -| [aws](#requirement\_aws) | >= 4.66.1 | - -## Providers - -| Name | Version | -|------|---------| -| [aws](#provider\_aws) | >= 4.66.1 | - -## Modules - -No modules. - -## Resources - -| Name | Type | -|------|------| -| [aws_cloudwatch_log_group.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_log_group) | resource | -| [aws_region.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/region) | data source | - -## Inputs - -| Name | Description | Type | Default | Required | -|------|-------------|------|---------|:--------:| -| [cloudwatch\_log\_group\_kms\_key\_id](#input\_cloudwatch\_log\_group\_kms\_key\_id) | If a KMS Key ARN is set, this key will be used to encrypt the corresponding log group. Please be sure that the KMS Key has an appropriate key policy (https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html) | `string` | `null` | no | -| [cloudwatch\_log\_group\_name](#input\_cloudwatch\_log\_group\_name) | Custom name of CloudWatch log group for a service associated with the container definition | `string` | `null` | no | -| [cloudwatch\_log\_group\_retention\_in\_days](#input\_cloudwatch\_log\_group\_retention\_in\_days) | Number of days to retain log events. Default is 30 days | `number` | `30` | no | -| [cloudwatch\_log\_group\_use\_name\_prefix](#input\_cloudwatch\_log\_group\_use\_name\_prefix) | Determines whether the log group name should be used as a prefix | `bool` | `false` | no | -| [command](#input\_command) | The command that's passed to the container | `list(string)` | `[]` | no | -| [cpu](#input\_cpu) | The number of cpu units to reserve for the container. This is optional for tasks using Fargate launch type and the total amount of `cpu` of all containers in a task will need to be lower than the task-level cpu value | `number` | `null` | no | -| [create\_cloudwatch\_log\_group](#input\_create\_cloudwatch\_log\_group) | Determines whether a log group is created by this module. If not, AWS will automatically create one if logging is enabled | `bool` | `true` | no | -| [dependencies](#input\_dependencies) | The dependencies defined for container startup and shutdown. A container can contain multiple dependencies. When a dependency is defined for container startup, for container shutdown it is reversed. The condition can be one of START, COMPLETE, SUCCESS or HEALTHY |
    list(object({
    condition = string
    containerName = string
    }))
    | `[]` | no | -| [disable\_networking](#input\_disable\_networking) | When this parameter is true, networking is disabled within the container | `bool` | `null` | no | -| [dns\_search\_domains](#input\_dns\_search\_domains) | Container DNS search domains. A list of DNS search domains that are presented to the container | `list(string)` | `[]` | no | -| [dns\_servers](#input\_dns\_servers) | Container DNS servers. This is a list of strings specifying the IP addresses of the DNS servers | `list(string)` | `[]` | no | -| [docker\_labels](#input\_docker\_labels) | A key/value map of labels to add to the container | `map(string)` | `{}` | no | -| [docker\_security\_options](#input\_docker\_security\_options) | A list of strings to provide custom labels for SELinux and AppArmor multi-level security systems. This field isn't valid for containers in tasks using the Fargate launch type | `list(string)` | `[]` | no | -| [enable\_cloudwatch\_logging](#input\_enable\_cloudwatch\_logging) | Determines whether CloudWatch logging is configured for this container definition. Set to `false` to use other logging drivers | `bool` | `true` | no | -| [enable\_execute\_command](#input\_enable\_execute\_command) | Specifies whether to enable Amazon ECS Exec for the tasks within the service | `bool` | `false` | no | -| [entrypoint](#input\_entrypoint) | The entry point that is passed to the container | `list(string)` | `[]` | no | -| [environment](#input\_environment) | The environment variables to pass to the container |
    list(object({
    name = string
    value = string
    }))
    | `[]` | no | -| [environment\_files](#input\_environment\_files) | A list of files containing the environment variables to pass to a container |
    list(object({
    value = string
    type = string
    }))
    | `[]` | no | -| [essential](#input\_essential) | If the `essential` parameter of a container is marked as `true`, and that container fails or stops for any reason, all other containers that are part of the task are stopped | `bool` | `null` | no | -| [extra\_hosts](#input\_extra\_hosts) | A list of hostnames and IP address mappings to append to the `/etc/hosts` file on the container |
    list(object({
    hostname = string
    ipAddress = string
    }))
    | `[]` | no | -| [firelens\_configuration](#input\_firelens\_configuration) | The FireLens configuration for the container. This is used to specify and configure a log router for container logs. For more information, see [Custom Log Routing](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html) in the Amazon Elastic Container Service Developer Guide | `any` | `{}` | no | -| [health\_check](#input\_health\_check) | The container health check command and associated configuration parameters for the container. See [HealthCheck](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_HealthCheck.html) | `any` | `{}` | no | -| [hostname](#input\_hostname) | The hostname to use for your container | `string` | `null` | no | -| [image](#input\_image) | The image used to start a container. This string is passed directly to the Docker daemon. By default, images in the Docker Hub registry are available. Other repositories are specified with either `repository-url/image:tag` or `repository-url/image@digest` | `string` | `null` | no | -| [interactive](#input\_interactive) | When this parameter is `true`, you can deploy containerized applications that require `stdin` or a `tty` to be allocated | `bool` | `false` | no | -| [links](#input\_links) | The links parameter allows containers to communicate with each other without the need for port mappings. This parameter is only supported if the network mode of a task definition is `bridge` | `list(string)` | `[]` | no | -| [linux\_parameters](#input\_linux\_parameters) | Linux-specific modifications that are applied to the container, such as Linux kernel capabilities. For more information see [KernelCapabilities](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_KernelCapabilities.html) | `any` | `{}` | no | -| [log\_configuration](#input\_log\_configuration) | The log configuration for the container. For more information see [LogConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_LogConfiguration.html) | `any` | `{}` | no | -| [memory](#input\_memory) | The amount (in MiB) of memory to present to the container. If your container attempts to exceed the memory specified here, the container is killed. The total amount of memory reserved for all containers within a task must be lower than the task `memory` value, if one is specified | `number` | `null` | no | -| [memory\_reservation](#input\_memory\_reservation) | The soft limit (in MiB) of memory to reserve for the container. When system memory is under heavy contention, Docker attempts to keep the container memory to this soft limit. However, your container can consume more memory when it needs to, up to either the hard limit specified with the `memory` parameter (if applicable), or all of the available memory on the container instance | `number` | `null` | no | -| [mount\_points](#input\_mount\_points) | The mount points for data volumes in your container | `list(any)` | `[]` | no | -| [name](#input\_name) | The name of a container. If you're linking multiple containers together in a task definition, the name of one container can be entered in the links of another container to connect the containers. Up to 255 letters (uppercase and lowercase), numbers, underscores, and hyphens are allowed | `string` | `null` | no | -| [operating\_system\_family](#input\_operating\_system\_family) | The OS family for task | `string` | `"LINUX"` | no | -| [port\_mappings](#input\_port\_mappings) | The list of port mappings for the container. Port mappings allow containers to access ports on the host container instance to send or receive traffic. For task definitions that use the awsvpc network mode, only specify the containerPort. The hostPort can be left blank or it must be the same value as the containerPort | `list(any)` | `[]` | no | -| [privileged](#input\_privileged) | When this parameter is true, the container is given elevated privileges on the host container instance (similar to the root user) | `bool` | `false` | no | -| [pseudo\_terminal](#input\_pseudo\_terminal) | When this parameter is true, a `TTY` is allocated | `bool` | `false` | no | -| [readonly\_root\_filesystem](#input\_readonly\_root\_filesystem) | When this parameter is true, the container is given read-only access to its root file system | `bool` | `true` | no | -| [repository\_credentials](#input\_repository\_credentials) | Container repository credentials; required when using a private repo. This map currently supports a single key; "credentialsParameter", which should be the ARN of a Secrets Manager's secret holding the credentials | `map(string)` | `{}` | no | -| [resource\_requirements](#input\_resource\_requirements) | The type and amount of a resource to assign to a container. The only supported resource is a GPU |
    list(object({
    type = string
    value = string
    }))
    | `[]` | no | -| [secrets](#input\_secrets) | The secrets to pass to the container. For more information, see [Specifying Sensitive Data](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data.html) in the Amazon Elastic Container Service Developer Guide |
    list(object({
    name = string
    valueFrom = string
    }))
    | `[]` | no | -| [service](#input\_service) | The name of the service that the container definition is associated with | `string` | `""` | no | -| [start\_timeout](#input\_start\_timeout) | Time duration (in seconds) to wait before giving up on resolving dependencies for a container | `number` | `30` | no | -| [stop\_timeout](#input\_stop\_timeout) | Time duration (in seconds) to wait before the container is forcefully killed if it doesn't exit normally on its own | `number` | `120` | no | -| [system\_controls](#input\_system\_controls) | A list of namespaced kernel parameters to set in the container | `list(map(string))` | `[]` | no | -| [tags](#input\_tags) | A map of tags to add to all resources | `map(string)` | `{}` | no | -| [ulimits](#input\_ulimits) | A list of ulimits to set in the container. If a ulimit value is specified in a task definition, it overrides the default values set by Docker |
    list(object({
    hardLimit = number
    name = string
    softLimit = number
    }))
    | `[]` | no | -| [user](#input\_user) | The user to run as inside the container. Can be any of these formats: user, user:group, uid, uid:gid, user:gid, uid:group. The default (null) will use the container's configured `USER` directive or root if not set | `string` | `null` | no | -| [volumes\_from](#input\_volumes\_from) | Data volumes to mount from another container | `list(any)` | `[]` | no | -| [working\_directory](#input\_working\_directory) | The working directory to run commands inside the container | `string` | `null` | no | - -## Outputs - -| Name | Description | -|------|-------------| -| [cloudwatch\_log\_group\_arn](#output\_cloudwatch\_log\_group\_arn) | ARN of CloudWatch log group created | -| [cloudwatch\_log\_group\_name](#output\_cloudwatch\_log\_group\_name) | Name of CloudWatch log group created | -| [container\_definition](#output\_container\_definition) | Container definition | - - -## License - -Apache-2.0 Licensed. See [LICENSE](https://github.com/terraform-aws-modules/terraform-aws-ecs/blob/master/LICENSE). diff --git a/demo/iac/modules/container-definition/main.tf b/demo/iac/modules/container-definition/main.tf deleted file mode 100644 index 682fc94..0000000 --- a/demo/iac/modules/container-definition/main.tf +++ /dev/null @@ -1,83 +0,0 @@ -data "aws_region" "current" {} - -locals { - is_not_windows = contains(["LINUX"], var.operating_system_family) - - log_group_name = try(coalesce(var.cloudwatch_log_group_name, "/aws/ecs/${var.service}/${var.name}"), "") - - log_configuration = merge( - { for k, v in { - logDriver = "awslogs", - options = { - awslogs-region = data.aws_region.current.name, - awslogs-group = try(aws_cloudwatch_log_group.this[0].name, ""), - awslogs-stream-prefix = "ecs" - }, - } : k => v if var.enable_cloudwatch_logging }, - var.log_configuration - ) - - linux_parameters = var.enable_execute_command ? merge({ "initProcessEnabled" : true }, var.linux_parameters) : merge({ "initProcessEnabled" : false }, var.linux_parameters) - - health_check = length(var.health_check) > 0 ? merge({ - interval = 30, - retries = 3, - timeout = 5 - }, var.health_check) : null - - definition = { - command = length(var.command) > 0 ? var.command : null - cpu = var.cpu - dependsOn = length(var.dependencies) > 0 ? var.dependencies : null # depends_on is a reserved word - disableNetworking = local.is_not_windows ? var.disable_networking : null - dnsSearchDomains = local.is_not_windows && length(var.dns_search_domains) > 0 ? var.dns_search_domains : null - dnsServers = local.is_not_windows && length(var.dns_servers) > 0 ? var.dns_servers : null - dockerLabels = length(var.docker_labels) > 0 ? var.docker_labels : null - dockerSecurityOptions = length(var.docker_security_options) > 0 ? var.docker_security_options : null - entrypoint = length(var.entrypoint) > 0 ? var.entrypoint : null - environment = var.environment - environmentFiles = length(var.environment_files) > 0 ? var.environment_files : null - essential = var.essential - extraHosts = local.is_not_windows && length(var.extra_hosts) > 0 ? var.extra_hosts : null - firelensConfiguration = length(var.firelens_configuration) > 0 ? var.firelens_configuration : null - healthCheck = local.health_check - hostname = var.hostname - image = var.image - interactive = var.interactive - links = local.is_not_windows && length(var.links) > 0 ? var.links : null - linuxParameters = local.is_not_windows && length(local.linux_parameters) > 0 ? local.linux_parameters : null - logConfiguration = length(local.log_configuration) > 0 ? local.log_configuration : null - memory = var.memory - memoryReservation = var.memory_reservation - mountPoints = var.mount_points - name = var.name - portMappings = var.port_mappings - privileged = local.is_not_windows ? var.privileged : null - pseudoTerminal = var.pseudo_terminal - readonlyRootFilesystem = local.is_not_windows ? var.readonly_root_filesystem : null - repositoryCredentials = length(var.repository_credentials) > 0 ? var.repository_credentials : null - resourceRequirements = length(var.resource_requirements) > 0 ? var.resource_requirements : null - secrets = length(var.secrets) > 0 ? var.secrets : null - startTimeout = var.start_timeout - stopTimeout = var.stop_timeout - systemControls = length(var.system_controls) > 0 ? var.system_controls : [] - ulimits = local.is_not_windows && length(var.ulimits) > 0 ? var.ulimits : null - user = local.is_not_windows ? var.user : null - volumesFrom = var.volumes_from - workingDirectory = var.working_directory - } - - # Strip out all null values, ECS API will provide defaults in place of null/empty values - container_definition = { for k, v in local.definition : k => v if v != null } -} - -resource "aws_cloudwatch_log_group" "this" { - count = var.create_cloudwatch_log_group && var.enable_cloudwatch_logging ? 1 : 0 - - name = var.cloudwatch_log_group_use_name_prefix ? null : local.log_group_name - name_prefix = var.cloudwatch_log_group_use_name_prefix ? "${local.log_group_name}-" : null - retention_in_days = var.cloudwatch_log_group_retention_in_days - kms_key_id = var.cloudwatch_log_group_kms_key_id - - tags = var.tags -} diff --git a/demo/iac/modules/container-definition/outputs.tf b/demo/iac/modules/container-definition/outputs.tf deleted file mode 100644 index 2f26967..0000000 --- a/demo/iac/modules/container-definition/outputs.tf +++ /dev/null @@ -1,22 +0,0 @@ -################################################################################ -# Container Definition -################################################################################ - -output "container_definition" { - description = "Container definition" - value = local.container_definition -} - -################################################################################ -# CloudWatch Log Group -################################################################################ - -output "cloudwatch_log_group_name" { - description = "Name of CloudWatch log group created" - value = try(aws_cloudwatch_log_group.this[0].name, null) -} - -output "cloudwatch_log_group_arn" { - description = "ARN of CloudWatch log group created" - value = try(aws_cloudwatch_log_group.this[0].arn, null) -} diff --git a/demo/iac/modules/container-definition/variables.tf b/demo/iac/modules/container-definition/variables.tf deleted file mode 100644 index 0f88b9d..0000000 --- a/demo/iac/modules/container-definition/variables.tf +++ /dev/null @@ -1,323 +0,0 @@ -variable "operating_system_family" { - description = "The OS family for task" - type = string - default = "LINUX" -} - -################################################################################ -# Container Definition -################################################################################ - -variable "command" { - description = "The command that's passed to the container" - type = list(string) - default = [] -} - -variable "cpu" { - description = "The number of cpu units to reserve for the container. This is optional for tasks using Fargate launch type and the total amount of `cpu` of all containers in a task will need to be lower than the task-level cpu value" - type = number - default = null -} - -variable "dependencies" { - description = "The dependencies defined for container startup and shutdown. A container can contain multiple dependencies. When a dependency is defined for container startup, for container shutdown it is reversed. The condition can be one of START, COMPLETE, SUCCESS or HEALTHY" - type = list(object({ - condition = string - containerName = string - })) - default = [] -} - -variable "disable_networking" { - description = "When this parameter is true, networking is disabled within the container" - type = bool - default = null -} - -variable "dns_search_domains" { - description = "Container DNS search domains. A list of DNS search domains that are presented to the container" - type = list(string) - default = [] -} - -variable "dns_servers" { - description = "Container DNS servers. This is a list of strings specifying the IP addresses of the DNS servers" - type = list(string) - default = [] -} - -variable "docker_labels" { - description = "A key/value map of labels to add to the container" - type = map(string) - default = {} -} - -variable "docker_security_options" { - description = "A list of strings to provide custom labels for SELinux and AppArmor multi-level security systems. This field isn't valid for containers in tasks using the Fargate launch type" - type = list(string) - default = [] -} - -variable "enable_execute_command" { - description = "Specifies whether to enable Amazon ECS Exec for the tasks within the service" - type = bool - default = false -} - -variable "entrypoint" { - description = "The entry point that is passed to the container" - type = list(string) - default = [] -} - -variable "environment" { - description = "The environment variables to pass to the container" - type = list(object({ - name = string - value = string - })) - default = [] -} - -variable "environment_files" { - description = "A list of files containing the environment variables to pass to a container" - type = list(object({ - value = string - type = string - })) - default = [] -} - -variable "essential" { - description = "If the `essential` parameter of a container is marked as `true`, and that container fails or stops for any reason, all other containers that are part of the task are stopped" - type = bool - default = null -} - -variable "extra_hosts" { - description = "A list of hostnames and IP address mappings to append to the `/etc/hosts` file on the container" - type = list(object({ - hostname = string - ipAddress = string - })) - default = [] -} - -variable "firelens_configuration" { - description = "The FireLens configuration for the container. This is used to specify and configure a log router for container logs. For more information, see [Custom Log Routing](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html) in the Amazon Elastic Container Service Developer Guide" - type = any - default = {} -} - -variable "health_check" { - description = "The container health check command and associated configuration parameters for the container. See [HealthCheck](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_HealthCheck.html)" - type = any - default = {} -} - -variable "hostname" { - description = "The hostname to use for your container" - type = string - default = null -} - -variable "image" { - description = "The image used to start a container. This string is passed directly to the Docker daemon. By default, images in the Docker Hub registry are available. Other repositories are specified with either `repository-url/image:tag` or `repository-url/image@digest`" - type = string - default = null -} - -variable "interactive" { - description = "When this parameter is `true`, you can deploy containerized applications that require `stdin` or a `tty` to be allocated" - type = bool - default = false -} - -variable "links" { - description = "The links parameter allows containers to communicate with each other without the need for port mappings. This parameter is only supported if the network mode of a task definition is `bridge`" - type = list(string) - default = [] -} - -variable "linux_parameters" { - description = "Linux-specific modifications that are applied to the container, such as Linux kernel capabilities. For more information see [KernelCapabilities](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_KernelCapabilities.html)" - type = any - default = {} -} - -variable "log_configuration" { - description = "The log configuration for the container. For more information see [LogConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_LogConfiguration.html)" - type = any - default = {} -} - -variable "memory" { - description = "The amount (in MiB) of memory to present to the container. If your container attempts to exceed the memory specified here, the container is killed. The total amount of memory reserved for all containers within a task must be lower than the task `memory` value, if one is specified" - type = number - default = null -} - -variable "memory_reservation" { - description = "The soft limit (in MiB) of memory to reserve for the container. When system memory is under heavy contention, Docker attempts to keep the container memory to this soft limit. However, your container can consume more memory when it needs to, up to either the hard limit specified with the `memory` parameter (if applicable), or all of the available memory on the container instance" - type = number - default = null -} - -variable "mount_points" { - description = "The mount points for data volumes in your container" - type = list(any) - default = [] -} - -variable "name" { - description = "The name of a container. If you're linking multiple containers together in a task definition, the name of one container can be entered in the links of another container to connect the containers. Up to 255 letters (uppercase and lowercase), numbers, underscores, and hyphens are allowed" - type = string - default = null -} - -variable "port_mappings" { - description = "The list of port mappings for the container. Port mappings allow containers to access ports on the host container instance to send or receive traffic. For task definitions that use the awsvpc network mode, only specify the containerPort. The hostPort can be left blank or it must be the same value as the containerPort" - type = list(any) - default = [] -} - -variable "privileged" { - description = "When this parameter is true, the container is given elevated privileges on the host container instance (similar to the root user)" - type = bool - default = false -} - -variable "pseudo_terminal" { - description = "When this parameter is true, a `TTY` is allocated" - type = bool - default = false -} - -variable "readonly_root_filesystem" { - description = "When this parameter is true, the container is given read-only access to its root file system" - type = bool - default = true -} - -variable "repository_credentials" { - description = "Container repository credentials; required when using a private repo. This map currently supports a single key; \"credentialsParameter\", which should be the ARN of a Secrets Manager's secret holding the credentials" - type = map(string) - default = {} -} - -variable "resource_requirements" { - description = "The type and amount of a resource to assign to a container. The only supported resource is a GPU" - type = list(object({ - type = string - value = string - })) - default = [] -} - -variable "secrets" { - description = "The secrets to pass to the container. For more information, see [Specifying Sensitive Data](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data.html) in the Amazon Elastic Container Service Developer Guide" - type = list(object({ - name = string - valueFrom = string - })) - default = [] -} - -variable "start_timeout" { - description = "Time duration (in seconds) to wait before giving up on resolving dependencies for a container" - type = number - default = 30 -} - -variable "stop_timeout" { - description = "Time duration (in seconds) to wait before the container is forcefully killed if it doesn't exit normally on its own" - type = number - default = 120 -} - -variable "system_controls" { - description = "A list of namespaced kernel parameters to set in the container" - type = list(map(string)) - default = [] -} - -variable "ulimits" { - description = "A list of ulimits to set in the container. If a ulimit value is specified in a task definition, it overrides the default values set by Docker" - type = list(object({ - hardLimit = number - name = string - softLimit = number - })) - default = [] -} - -variable "user" { - description = "The user to run as inside the container. Can be any of these formats: user, user:group, uid, uid:gid, user:gid, uid:group. The default (null) will use the container's configured `USER` directive or root if not set" - type = string - default = null -} - -variable "volumes_from" { - description = "Data volumes to mount from another container" - type = list(any) - default = [] -} - -variable "working_directory" { - description = "The working directory to run commands inside the container" - type = string - default = null -} - -################################################################################ -# CloudWatch Log Group -################################################################################ - -variable "service" { - description = "The name of the service that the container definition is associated with" - type = string - default = "" -} - -variable "enable_cloudwatch_logging" { - description = "Determines whether CloudWatch logging is configured for this container definition. Set to `false` to use other logging drivers" - type = bool - default = true -} - -variable "create_cloudwatch_log_group" { - description = "Determines whether a log group is created by this module. If not, AWS will automatically create one if logging is enabled" - type = bool - default = true -} - -variable "cloudwatch_log_group_name" { - description = "Custom name of CloudWatch log group for a service associated with the container definition" - type = string - default = null -} - -variable "cloudwatch_log_group_use_name_prefix" { - description = "Determines whether the log group name should be used as a prefix" - type = bool - default = false -} - -variable "cloudwatch_log_group_retention_in_days" { - description = "Number of days to retain log events. Default is 30 days" - type = number - default = 30 -} - -variable "cloudwatch_log_group_kms_key_id" { - description = "If a KMS Key ARN is set, this key will be used to encrypt the corresponding log group. Please be sure that the KMS Key has an appropriate key policy (https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html)" - type = string - default = null -} - -variable "tags" { - description = "A map of tags to add to all resources" - type = map(string) - default = {} -} diff --git a/demo/iac/modules/container-definition/versions.tf b/demo/iac/modules/container-definition/versions.tf deleted file mode 100644 index 682191e..0000000 --- a/demo/iac/modules/container-definition/versions.tf +++ /dev/null @@ -1,10 +0,0 @@ -terraform { - required_version = ">= 1.0" - - required_providers { - aws = { - source = "hashicorp/aws" - version = ">= 4.66.1" - } - } -} diff --git a/demo/iac/modules/service/README.md b/demo/iac/modules/service/README.md deleted file mode 100644 index 2101fd3..0000000 --- a/demo/iac/modules/service/README.md +++ /dev/null @@ -1,358 +0,0 @@ -# Amazon ECS Service Module - -Configuration in this directory creates an Amazon ECS Service and associated resources. - -Some notable configurations to be aware of when using this module: -1. `desired_count`/`scale` is always ignored; the module is designed to utilize autoscaling by default (though it can be disabled) -2. The default configuration is intended for `FARGATE` use - -For more details see the [design doc](https://github.com/terraform-aws-modules/terraform-aws-ecs/blob/master/docs/README.md) - -### Logging - -Please refer to [FireLens examples repository](https://github.com/aws-samples/amazon-ecs-firelens-examples) for logging configuration examples for FireLens on Amazon ECS and AWS Fargate. - -## Usage - -```hcl -module "ecs_service" { - source = "terraform-aws-modules/ecs/aws//modules/service" - - name = "example" - cluster_arn = "arn:aws:ecs:us-west-2:123456789012:cluster/default" - - cpu = 1024 - memory = 4096 - - # Container definition(s) - container_definitions = { - - fluent-bit = { - cpu = 512 - memory = 1024 - essential = true - image = "906394416424.dkr.ecr.us-west-2.amazonaws.com/aws-for-fluent-bit:stable" - firelens_configuration = { - type = "fluentbit" - } - memory_reservation = 50 - } - - ecs-sample = { - cpu = 512 - memory = 1024 - essential = true - image = "public.ecr.aws/aws-containers/ecsdemo-frontend:776fd50" - port_mappings = [ - { - name = "ecs-sample" - containerPort = 80 - protocol = "tcp" - } - ] - - # Example image used requires access to write to root filesystem - readonly_root_filesystem = false - - dependencies = [{ - containerName = "fluent-bit" - condition = "START" - }] - - enable_cloudwatch_logging = false - log_configuration = { - logDriver = "awsfirelens" - options = { - Name = "firehose" - region = "eu-west-1" - delivery_stream = "my-stream" - log-driver-buffer-limit = "2097152" - } - } - memory_reservation = 100 - } - } - - service_connect_configuration = { - namespace = "example" - service = { - client_alias = { - port = 80 - dns_name = "ecs-sample" - } - port_name = "ecs-sample" - discovery_name = "ecs-sample" - } - } - - load_balancer = { - service = { - target_group_arn = "arn:aws:elasticloadbalancing:eu-west-1:1234567890:targetgroup/bluegreentarget1/209a844cd01825a4" - container_name = "ecs-sample" - container_port = 80 - } - } - - subnet_ids = ["subnet-abcde012", "subnet-bcde012a", "subnet-fghi345a"] - security_group_rules = { - alb_ingress_3000 = { - type = "ingress" - from_port = 80 - to_port = 80 - protocol = "tcp" - description = "Service port" - source_security_group_id = "sg-12345678" - } - egress_all = { - type = "egress" - from_port = 0 - to_port = 0 - protocol = "-1" - cidr_blocks = ["0.0.0.0/0"] - } - } - - tags = { - Environment = "dev" - Terraform = "true" - } -} -``` - -## Conditional Creation - -The following values are provided to toggle on/off creation of the associated resources as desired: - -```hcl -module "ecs_service" { - source = "terraform-aws-modules/ecs/aws//modules/service" - - # Disable creation of service and all resources - create = false - - # Enable ECS Exec - enable_execute_command = true - - # Disable creation of the service IAM role; `iam_role_arn` should be provided - create_iam_role = false - - # Disable creation of the task definition; `task_definition_arn` should be provided - create_task_definition = false - - # Disable creation of the task execution IAM role; `task_exec_iam_role_arn` should be provided - create_task_exec_iam_role = false - - # Disable creation of the task execution IAM role policy - create_task_exec_policy = false - - # Disable creation of the tasks IAM role; `tasks_iam_role_arn` should be provided - create_tasks_iam_role = false - - # Disable creation of the service security group - create_security_group = false - - # ... omitted -} -``` - -## Examples - -- [ECS Cluster Complete](https://github.com/terraform-aws-modules/terraform-aws-ecs/tree/master/examples/complete) -- [ECS Cluster w/ EC2 Autoscaling Capacity Provider](https://github.com/terraform-aws-modules/terraform-aws-ecs/tree/master/examples/ec2-autoscaling) -- [ECS Cluster w/ Fargate Capacity Provider](https://github.com/terraform-aws-modules/terraform-aws-ecs/tree/master/examples/fargate) - - -## Requirements - -| Name | Version | -|------|---------| -| [terraform](#requirement\_terraform) | >= 1.0 | -| [aws](#requirement\_aws) | >= 4.66.1 | - -## Providers - -| Name | Version | -|------|---------| -| [aws](#provider\_aws) | >= 4.66.1 | - -## Modules - -| Name | Source | Version | -|------|--------|---------| -| [container\_definition](#module\_container\_definition) | ../container-definition | n/a | - -## Resources - -| Name | Type | -|------|------| -| [aws_appautoscaling_policy.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/appautoscaling_policy) | resource | -| [aws_appautoscaling_scheduled_action.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/appautoscaling_scheduled_action) | resource | -| [aws_appautoscaling_target.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/appautoscaling_target) | resource | -| [aws_ecs_service.ignore_task_definition](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_service) | resource | -| [aws_ecs_service.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_service) | resource | -| [aws_ecs_task_definition.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_task_definition) | resource | -| [aws_ecs_task_set.ignore_task_definition](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_task_set) | resource | -| [aws_ecs_task_set.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_task_set) | resource | -| [aws_iam_policy.service](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_policy) | resource | -| [aws_iam_policy.task_exec](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_policy) | resource | -| [aws_iam_role.service](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role) | resource | -| [aws_iam_role.task_exec](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role) | resource | -| [aws_iam_role.tasks](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role) | resource | -| [aws_iam_role_policy.tasks](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy) | resource | -| [aws_iam_role_policy_attachment.service](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource | -| [aws_iam_role_policy_attachment.task_exec](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource | -| [aws_iam_role_policy_attachment.task_exec_additional](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource | -| [aws_iam_role_policy_attachment.tasks](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource | -| [aws_security_group.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/security_group) | resource | -| [aws_security_group_rule.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/security_group_rule) | resource | -| [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | data source | -| [aws_ecs_task_definition.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ecs_task_definition) | data source | -| [aws_iam_policy_document.service](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source | -| [aws_iam_policy_document.service_assume](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source | -| [aws_iam_policy_document.task_exec](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source | -| [aws_iam_policy_document.task_exec_assume](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source | -| [aws_iam_policy_document.tasks](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source | -| [aws_iam_policy_document.tasks_assume](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source | -| [aws_partition.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/partition) | data source | -| [aws_region.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/region) | data source | -| [aws_subnet.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/subnet) | data source | - -## Inputs - -| Name | Description | Type | Default | Required | -|------|-------------|------|---------|:--------:| -| [alarms](#input\_alarms) | Information about the CloudWatch alarms | `any` | `{}` | no | -| [assign\_public\_ip](#input\_assign\_public\_ip) | Assign a public IP address to the ENI (Fargate launch type only) | `bool` | `false` | no | -| [autoscaling\_max\_capacity](#input\_autoscaling\_max\_capacity) | Maximum number of tasks to run in your service | `number` | `10` | no | -| [autoscaling\_min\_capacity](#input\_autoscaling\_min\_capacity) | Minimum number of tasks to run in your service | `number` | `1` | no | -| [autoscaling\_policies](#input\_autoscaling\_policies) | Map of autoscaling policies to create for the service | `any` |
    {
    "cpu": {
    "policy_type": "TargetTrackingScaling",
    "target_tracking_scaling_policy_configuration": {
    "predefined_metric_specification": {
    "predefined_metric_type": "ECSServiceAverageCPUUtilization"
    }
    }
    },
    "memory": {
    "policy_type": "TargetTrackingScaling",
    "target_tracking_scaling_policy_configuration": {
    "predefined_metric_specification": {
    "predefined_metric_type": "ECSServiceAverageMemoryUtilization"
    }
    }
    }
    }
    | no | -| [autoscaling\_scheduled\_actions](#input\_autoscaling\_scheduled\_actions) | Map of autoscaling scheduled actions to create for the service | `any` | `{}` | no | -| [capacity\_provider\_strategy](#input\_capacity\_provider\_strategy) | Capacity provider strategies to use for the service. Can be one or more | `any` | `{}` | no | -| [cluster\_arn](#input\_cluster\_arn) | ARN of the ECS cluster where the resources will be provisioned | `string` | `""` | no | -| [container\_definition\_defaults](#input\_container\_definition\_defaults) | A map of default values for [container definitions](http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDefinition.html) created by `container_definitions` | `any` | `{}` | no | -| [container\_definitions](#input\_container\_definitions) | A map of valid [container definitions](http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDefinition.html). Please note that you should only provide values that are part of the container definition document | `any` | `{}` | no | -| [cpu](#input\_cpu) | Number of cpu units used by the task. If the `requires_compatibilities` is `FARGATE` this field is required | `number` | `1024` | no | -| [create](#input\_create) | Determines whether resources will be created (affects all resources) | `bool` | `true` | no | -| [create\_iam\_role](#input\_create\_iam\_role) | Determines whether the ECS service IAM role should be created | `bool` | `true` | no | -| [create\_security\_group](#input\_create\_security\_group) | Determines if a security group is created | `bool` | `true` | no | -| [create\_service](#input\_create\_service) | Determines whether service resource will be created (set to `false` in case you want to create task definition only) | `bool` | `true` | no | -| [create\_task\_definition](#input\_create\_task\_definition) | Determines whether to create a task definition or use existing/provided | `bool` | `true` | no | -| [create\_task\_exec\_iam\_role](#input\_create\_task\_exec\_iam\_role) | Determines whether the ECS task definition IAM role should be created | `bool` | `true` | no | -| [create\_task\_exec\_policy](#input\_create\_task\_exec\_policy) | Determines whether the ECS task definition IAM policy should be created. This includes permissions included in AmazonECSTaskExecutionRolePolicy as well as access to secrets and SSM parameters | `bool` | `true` | no | -| [create\_tasks\_iam\_role](#input\_create\_tasks\_iam\_role) | Determines whether the ECS tasks IAM role should be created | `bool` | `true` | no | -| [deployment\_circuit\_breaker](#input\_deployment\_circuit\_breaker) | Configuration block for deployment circuit breaker | `any` | `{}` | no | -| [deployment\_controller](#input\_deployment\_controller) | Configuration block for deployment controller configuration | `any` | `{}` | no | -| [deployment\_maximum\_percent](#input\_deployment\_maximum\_percent) | Upper limit (as a percentage of the service's `desired_count`) of the number of running tasks that can be running in a service during a deployment | `number` | `200` | no | -| [deployment\_minimum\_healthy\_percent](#input\_deployment\_minimum\_healthy\_percent) | Lower limit (as a percentage of the service's `desired_count`) of the number of running tasks that must remain running and healthy in a service during a deployment | `number` | `66` | no | -| [desired\_count](#input\_desired\_count) | Number of instances of the task definition to place and keep running | `number` | `1` | no | -| [enable\_autoscaling](#input\_enable\_autoscaling) | Determines whether to enable autoscaling for the service | `bool` | `true` | no | -| [enable\_ecs\_managed\_tags](#input\_enable\_ecs\_managed\_tags) | Specifies whether to enable Amazon ECS managed tags for the tasks within the service | `bool` | `true` | no | -| [enable\_execute\_command](#input\_enable\_execute\_command) | Specifies whether to enable Amazon ECS Exec for the tasks within the service | `bool` | `false` | no | -| [ephemeral\_storage](#input\_ephemeral\_storage) | The amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on AWS Fargate | `any` | `{}` | no | -| [external\_id](#input\_external\_id) | The external ID associated with the task set | `string` | `null` | no | -| [family](#input\_family) | A unique name for your task definition | `string` | `null` | no | -| [force\_delete](#input\_force\_delete) | Whether to allow deleting the task set without waiting for scaling down to 0 | `bool` | `null` | no | -| [force\_new\_deployment](#input\_force\_new\_deployment) | Enable to force a new task deployment of the service. This can be used to update tasks to use a newer Docker image with same image/tag combination, roll Fargate tasks onto a newer platform version, or immediately deploy `ordered_placement_strategy` and `placement_constraints` updates | `bool` | `true` | no | -| [health\_check\_grace\_period\_seconds](#input\_health\_check\_grace\_period\_seconds) | Seconds to ignore failing load balancer health checks on newly instantiated tasks to prevent premature shutdown, up to 2147483647. Only valid for services configured to use load balancers | `number` | `null` | no | -| [iam\_role\_arn](#input\_iam\_role\_arn) | Existing IAM role ARN | `string` | `null` | no | -| [iam\_role\_description](#input\_iam\_role\_description) | Description of the role | `string` | `null` | no | -| [iam\_role\_name](#input\_iam\_role\_name) | Name to use on IAM role created | `string` | `null` | no | -| [iam\_role\_path](#input\_iam\_role\_path) | IAM role path | `string` | `null` | no | -| [iam\_role\_permissions\_boundary](#input\_iam\_role\_permissions\_boundary) | ARN of the policy that is used to set the permissions boundary for the IAM role | `string` | `null` | no | -| [iam\_role\_statements](#input\_iam\_role\_statements) | A map of IAM policy [statements](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document#statement) for custom permission usage | `any` | `{}` | no | -| [iam\_role\_tags](#input\_iam\_role\_tags) | A map of additional tags to add to the IAM role created | `map(string)` | `{}` | no | -| [iam\_role\_use\_name\_prefix](#input\_iam\_role\_use\_name\_prefix) | Determines whether the IAM role name (`iam_role_name`) is used as a prefix | `bool` | `true` | no | -| [ignore\_task\_definition\_changes](#input\_ignore\_task\_definition\_changes) | Whether changes to service `task_definition` changes should be ignored | `bool` | `false` | no | -| [inference\_accelerator](#input\_inference\_accelerator) | Configuration block(s) with Inference Accelerators settings | `any` | `{}` | no | -| [ipc\_mode](#input\_ipc\_mode) | IPC resource namespace to be used for the containers in the task The valid values are `host`, `task`, and `none` | `string` | `null` | no | -| [launch\_type](#input\_launch\_type) | Launch type on which to run your service. The valid values are `EC2`, `FARGATE`, and `EXTERNAL`. Defaults to `FARGATE` | `string` | `"FARGATE"` | no | -| [load\_balancer](#input\_load\_balancer) | Configuration block for load balancers | `any` | `{}` | no | -| [memory](#input\_memory) | Amount (in MiB) of memory used by the task. If the `requires_compatibilities` is `FARGATE` this field is required | `number` | `2048` | no | -| [name](#input\_name) | Name of the service (up to 255 letters, numbers, hyphens, and underscores) | `string` | `null` | no | -| [network\_mode](#input\_network\_mode) | Docker networking mode to use for the containers in the task. Valid values are `none`, `bridge`, `awsvpc`, and `host` | `string` | `"awsvpc"` | no | -| [ordered\_placement\_strategy](#input\_ordered\_placement\_strategy) | Service level strategy rules that are taken into consideration during task placement. List from top to bottom in order of precedence | `any` | `{}` | no | -| [pid\_mode](#input\_pid\_mode) | Process namespace to use for the containers in the task. The valid values are `host` and `task` | `string` | `null` | no | -| [placement\_constraints](#input\_placement\_constraints) | Configuration block for rules that are taken into consideration during task placement (up to max of 10). This is set at the service, see `task_definition_placement_constraints` for setting at the task definition | `any` | `{}` | no | -| [platform\_version](#input\_platform\_version) | Platform version on which to run your service. Only applicable for `launch_type` set to `FARGATE`. Defaults to `LATEST` | `string` | `null` | no | -| [propagate\_tags](#input\_propagate\_tags) | Specifies whether to propagate the tags from the task definition or the service to the tasks. The valid values are `SERVICE` and `TASK_DEFINITION` | `string` | `null` | no | -| [proxy\_configuration](#input\_proxy\_configuration) | Configuration block for the App Mesh proxy | `any` | `{}` | no | -| [requires\_compatibilities](#input\_requires\_compatibilities) | Set of launch types required by the task. The valid values are `EC2` and `FARGATE` | `list(string)` |
    [
    "FARGATE"
    ]
    | no | -| [runtime\_platform](#input\_runtime\_platform) | Configuration block for `runtime_platform` that containers in your task may use | `any` |
    {
    "cpu_architecture": "X86_64",
    "operating_system_family": "LINUX"
    }
    | no | -| [scale](#input\_scale) | A floating-point percentage of the desired number of tasks to place and keep running in the task set | `any` | `{}` | no | -| [scheduling\_strategy](#input\_scheduling\_strategy) | Scheduling strategy to use for the service. The valid values are `REPLICA` and `DAEMON`. Defaults to `REPLICA` | `string` | `null` | no | -| [security\_group\_description](#input\_security\_group\_description) | Description of the security group created | `string` | `null` | no | -| [security\_group\_ids](#input\_security\_group\_ids) | List of security groups to associate with the task or service | `list(string)` | `[]` | no | -| [security\_group\_name](#input\_security\_group\_name) | Name to use on security group created | `string` | `null` | no | -| [security\_group\_rules](#input\_security\_group\_rules) | Security group rules to add to the security group created | `any` | `{}` | no | -| [security\_group\_tags](#input\_security\_group\_tags) | A map of additional tags to add to the security group created | `map(string)` | `{}` | no | -| [security\_group\_use\_name\_prefix](#input\_security\_group\_use\_name\_prefix) | Determines whether the security group name (`security_group_name`) is used as a prefix | `bool` | `true` | no | -| [service\_connect\_configuration](#input\_service\_connect\_configuration) | The ECS Service Connect configuration for this service to discover and connect to services, and be discovered by, and connected from, other services within a namespace | `any` | `{}` | no | -| [service\_registries](#input\_service\_registries) | Service discovery registries for the service | `any` | `{}` | no | -| [service\_tags](#input\_service\_tags) | A map of additional tags to add to the service | `map(string)` | `{}` | no | -| [skip\_destroy](#input\_skip\_destroy) | If true, the task is not deleted when the service is deleted | `bool` | `null` | no | -| [subnet\_ids](#input\_subnet\_ids) | List of subnets to associate with the task or service | `list(string)` | `[]` | no | -| [tags](#input\_tags) | A map of tags to add to all resources | `map(string)` | `{}` | no | -| [task\_definition\_arn](#input\_task\_definition\_arn) | Existing task definition ARN. Required when `create_task_definition` is `false` | `string` | `null` | no | -| [task\_definition\_placement\_constraints](#input\_task\_definition\_placement\_constraints) | Configuration block for rules that are taken into consideration during task placement (up to max of 10). This is set at the task definition, see `placement_constraints` for setting at the service | `any` | `{}` | no | -| [task\_exec\_iam\_role\_arn](#input\_task\_exec\_iam\_role\_arn) | Existing IAM role ARN | `string` | `null` | no | -| [task\_exec\_iam\_role\_description](#input\_task\_exec\_iam\_role\_description) | Description of the role | `string` | `null` | no | -| [task\_exec\_iam\_role\_max\_session\_duration](#input\_task\_exec\_iam\_role\_max\_session\_duration) | Maximum session duration (in seconds) for ECS task execution role. Default is 3600. | `number` | `null` | no | -| [task\_exec\_iam\_role\_name](#input\_task\_exec\_iam\_role\_name) | Name to use on IAM role created | `string` | `null` | no | -| [task\_exec\_iam\_role\_path](#input\_task\_exec\_iam\_role\_path) | IAM role path | `string` | `null` | no | -| [task\_exec\_iam\_role\_permissions\_boundary](#input\_task\_exec\_iam\_role\_permissions\_boundary) | ARN of the policy that is used to set the permissions boundary for the IAM role | `string` | `null` | no | -| [task\_exec\_iam\_role\_policies](#input\_task\_exec\_iam\_role\_policies) | Map of IAM role policy ARNs to attach to the IAM role | `map(string)` | `{}` | no | -| [task\_exec\_iam\_role\_tags](#input\_task\_exec\_iam\_role\_tags) | A map of additional tags to add to the IAM role created | `map(string)` | `{}` | no | -| [task\_exec\_iam\_role\_use\_name\_prefix](#input\_task\_exec\_iam\_role\_use\_name\_prefix) | Determines whether the IAM role name (`task_exec_iam_role_name`) is used as a prefix | `bool` | `true` | no | -| [task\_exec\_iam\_statements](#input\_task\_exec\_iam\_statements) | A map of IAM policy [statements](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document#statement) for custom permission usage | `any` | `{}` | no | -| [task\_exec\_secret\_arns](#input\_task\_exec\_secret\_arns) | List of SecretsManager secret ARNs the task execution role will be permitted to get/read | `list(string)` |
    [
    "arn:aws:secretsmanager:*:*:secret:*"
    ]
    | no | -| [task\_exec\_ssm\_param\_arns](#input\_task\_exec\_ssm\_param\_arns) | List of SSM parameter ARNs the task execution role will be permitted to get/read | `list(string)` |
    [
    "arn:aws:ssm:*:*:parameter/*"
    ]
    | no | -| [task\_tags](#input\_task\_tags) | A map of additional tags to add to the task definition/set created | `map(string)` | `{}` | no | -| [tasks\_iam\_role\_arn](#input\_tasks\_iam\_role\_arn) | Existing IAM role ARN | `string` | `null` | no | -| [tasks\_iam\_role\_description](#input\_tasks\_iam\_role\_description) | Description of the role | `string` | `null` | no | -| [tasks\_iam\_role\_name](#input\_tasks\_iam\_role\_name) | Name to use on IAM role created | `string` | `null` | no | -| [tasks\_iam\_role\_path](#input\_tasks\_iam\_role\_path) | IAM role path | `string` | `null` | no | -| [tasks\_iam\_role\_permissions\_boundary](#input\_tasks\_iam\_role\_permissions\_boundary) | ARN of the policy that is used to set the permissions boundary for the IAM role | `string` | `null` | no | -| [tasks\_iam\_role\_policies](#input\_tasks\_iam\_role\_policies) | Map of IAM role policy ARNs to attach to the IAM role | `map(string)` | `{}` | no | -| [tasks\_iam\_role\_statements](#input\_tasks\_iam\_role\_statements) | A map of IAM policy [statements](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document#statement) for custom permission usage | `any` | `{}` | no | -| [tasks\_iam\_role\_tags](#input\_tasks\_iam\_role\_tags) | A map of additional tags to add to the IAM role created | `map(string)` | `{}` | no | -| [tasks\_iam\_role\_use\_name\_prefix](#input\_tasks\_iam\_role\_use\_name\_prefix) | Determines whether the IAM role name (`tasks_iam_role_name`) is used as a prefix | `bool` | `true` | no | -| [timeouts](#input\_timeouts) | Create, update, and delete timeout configurations for the service | `map(string)` | `{}` | no | -| [triggers](#input\_triggers) | Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `timestamp()` | `any` | `{}` | no | -| [volume](#input\_volume) | Configuration block for volumes that containers in your task may use | `any` | `{}` | no | -| [wait\_for\_steady\_state](#input\_wait\_for\_steady\_state) | If true, Terraform will wait for the service to reach a steady state before continuing. Default is `false` | `bool` | `null` | no | -| [wait\_until\_stable](#input\_wait\_until\_stable) | Whether terraform should wait until the task set has reached `STEADY_STATE` | `bool` | `null` | no | -| [wait\_until\_stable\_timeout](#input\_wait\_until\_stable\_timeout) | Wait timeout for task set to reach `STEADY_STATE`. Valid time units include `ns`, `us` (or µs), `ms`, `s`, `m`, and `h`. Default `10m` | `string` | `null` | no | - -## Outputs - -| Name | Description | -|------|-------------| -| [autoscaling\_policies](#output\_autoscaling\_policies) | Map of autoscaling policies and their attributes | -| [autoscaling\_scheduled\_actions](#output\_autoscaling\_scheduled\_actions) | Map of autoscaling scheduled actions and their attributes | -| [container\_definitions](#output\_container\_definitions) | Container definitions | -| [iam\_role\_arn](#output\_iam\_role\_arn) | Service IAM role ARN | -| [iam\_role\_name](#output\_iam\_role\_name) | Service IAM role name | -| [iam\_role\_unique\_id](#output\_iam\_role\_unique\_id) | Stable and unique string identifying the service IAM role | -| [id](#output\_id) | ARN that identifies the service | -| [name](#output\_name) | Name of the service | -| [security\_group\_arn](#output\_security\_group\_arn) | Amazon Resource Name (ARN) of the security group | -| [security\_group\_id](#output\_security\_group\_id) | ID of the security group | -| [task\_definition\_arn](#output\_task\_definition\_arn) | Full ARN of the Task Definition (including both `family` and `revision`) | -| [task\_definition\_family](#output\_task\_definition\_family) | The unique name of the task definition | -| [task\_definition\_family\_revision](#output\_task\_definition\_family\_revision) | The family and revision (family:revision) of the task definition | -| [task\_definition\_revision](#output\_task\_definition\_revision) | Revision of the task in a particular family | -| [task\_exec\_iam\_role\_arn](#output\_task\_exec\_iam\_role\_arn) | Task execution IAM role ARN | -| [task\_exec\_iam\_role\_name](#output\_task\_exec\_iam\_role\_name) | Task execution IAM role name | -| [task\_exec\_iam\_role\_unique\_id](#output\_task\_exec\_iam\_role\_unique\_id) | Stable and unique string identifying the task execution IAM role | -| [task\_set\_arn](#output\_task\_set\_arn) | The Amazon Resource Name (ARN) that identifies the task set | -| [task\_set\_id](#output\_task\_set\_id) | The ID of the task set | -| [task\_set\_stability\_status](#output\_task\_set\_stability\_status) | The stability status. This indicates whether the task set has reached a steady state | -| [task\_set\_status](#output\_task\_set\_status) | The status of the task set | -| [tasks\_iam\_role\_arn](#output\_tasks\_iam\_role\_arn) | Tasks IAM role ARN | -| [tasks\_iam\_role\_name](#output\_tasks\_iam\_role\_name) | Tasks IAM role name | -| [tasks\_iam\_role\_unique\_id](#output\_tasks\_iam\_role\_unique\_id) | Stable and unique string identifying the tasks IAM role | - - -## License - -Apache-2.0 Licensed. See [LICENSE](https://github.com/terraform-aws-modules/terraform-aws-ecs/blob/master/LICENSE). diff --git a/demo/iac/modules/service/main.tf b/demo/iac/modules/service/main.tf deleted file mode 100644 index b244f7b..0000000 --- a/demo/iac/modules/service/main.tf +++ /dev/null @@ -1,1354 +0,0 @@ -data "aws_region" "current" {} -data "aws_partition" "current" {} -data "aws_caller_identity" "current" {} - -locals { - account_id = data.aws_caller_identity.current.account_id - partition = data.aws_partition.current.partition - region = data.aws_region.current.name -} - -################################################################################ -# Service -################################################################################ - -locals { - # https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-external.html - is_external_deployment = try(var.deployment_controller.type, null) == "EXTERNAL" - is_daemon = var.scheduling_strategy == "DAEMON" - is_fargate = var.launch_type == "FARGATE" - - # Flattened `network_configuration` - network_configuration = { - assign_public_ip = var.assign_public_ip - security_groups = flatten(concat([try(aws_security_group.this[0].id, [])], var.security_group_ids)) - subnets = var.subnet_ids - } - - create_service = var.create && var.create_service -} - -resource "aws_ecs_service" "this" { - count = local.create_service && !var.ignore_task_definition_changes ? 1 : 0 - - dynamic "alarms" { - for_each = length(var.alarms) > 0 ? [var.alarms] : [] - - content { - alarm_names = alarms.value.alarm_names - enable = try(alarms.value.enable, true) - rollback = try(alarms.value.rollback, true) - } - } - - dynamic "capacity_provider_strategy" { - # Set by task set if deployment controller is external - for_each = { for k, v in var.capacity_provider_strategy : k => v if !local.is_external_deployment } - - content { - base = try(capacity_provider_strategy.value.base, null) - capacity_provider = capacity_provider_strategy.value.capacity_provider - weight = try(capacity_provider_strategy.value.weight, null) - } - } - - cluster = var.cluster_arn - - dynamic "deployment_circuit_breaker" { - for_each = length(var.deployment_circuit_breaker) > 0 ? [var.deployment_circuit_breaker] : [] - - content { - enable = deployment_circuit_breaker.value.enable - rollback = deployment_circuit_breaker.value.rollback - } - } - - dynamic "deployment_controller" { - for_each = length(var.deployment_controller) > 0 ? [var.deployment_controller] : [] - - content { - type = try(deployment_controller.value.type, null) - } - } - - deployment_maximum_percent = local.is_daemon || local.is_external_deployment ? null : var.deployment_maximum_percent - deployment_minimum_healthy_percent = local.is_daemon || local.is_external_deployment ? null : var.deployment_minimum_healthy_percent - desired_count = local.is_daemon || local.is_external_deployment ? null : var.desired_count - enable_ecs_managed_tags = var.enable_ecs_managed_tags - enable_execute_command = var.enable_execute_command - force_new_deployment = local.is_external_deployment ? null : var.force_new_deployment - health_check_grace_period_seconds = var.health_check_grace_period_seconds - iam_role = local.iam_role_arn - launch_type = local.is_external_deployment || length(var.capacity_provider_strategy) > 0 ? null : var.launch_type - - dynamic "load_balancer" { - # Set by task set if deployment controller is external - for_each = { for k, v in var.load_balancer : k => v if !local.is_external_deployment } - - content { - container_name = load_balancer.value.container_name - container_port = load_balancer.value.container_port - elb_name = try(load_balancer.value.elb_name, null) - target_group_arn = try(load_balancer.value.target_group_arn, null) - } - } - - name = var.name - - dynamic "network_configuration" { - # Set by task set if deployment controller is external - for_each = var.network_mode == "awsvpc" && !local.is_external_deployment ? [local.network_configuration] : [] - - content { - assign_public_ip = network_configuration.value.assign_public_ip - security_groups = network_configuration.value.security_groups - subnets = network_configuration.value.subnets - } - } - - dynamic "ordered_placement_strategy" { - for_each = var.ordered_placement_strategy - - content { - field = try(ordered_placement_strategy.value.field, null) - type = ordered_placement_strategy.value.type - } - } - - dynamic "placement_constraints" { - for_each = var.placement_constraints - - content { - expression = try(placement_constraints.value.expression, null) - type = placement_constraints.value.type - } - } - - # Set by task set if deployment controller is external - platform_version = local.is_fargate && !local.is_external_deployment ? var.platform_version : null - scheduling_strategy = local.is_fargate ? "REPLICA" : var.scheduling_strategy - - dynamic "service_connect_configuration" { - for_each = length(var.service_connect_configuration) > 0 ? [var.service_connect_configuration] : [] - - content { - enabled = try(service_connect_configuration.value.enabled, true) - - dynamic "log_configuration" { - for_each = try([service_connect_configuration.value.log_configuration], []) - - content { - log_driver = try(log_configuration.value.log_driver, null) - options = try(log_configuration.value.options, null) - - dynamic "secret_option" { - for_each = try(log_configuration.value.secret_option, []) - - content { - name = secret_option.value.name - value_from = secret_option.value.value_from - } - } - } - } - - namespace = lookup(service_connect_configuration.value, "namespace", null) - - dynamic "service" { - for_each = try([service_connect_configuration.value.service], []) - - content { - - dynamic "client_alias" { - for_each = try([service.value.client_alias], []) - - content { - dns_name = try(client_alias.value.dns_name, null) - port = client_alias.value.port - } - } - - discovery_name = try(service.value.discovery_name, null) - ingress_port_override = try(service.value.ingress_port_override, null) - port_name = service.value.port_name - } - } - } - } - - dynamic "service_registries" { - # Set by task set if deployment controller is external - for_each = length(var.service_registries) > 0 ? [{ for k, v in var.service_registries : k => v if !local.is_external_deployment }] : [] - - content { - container_name = try(service_registries.value.container_name, null) - container_port = try(service_registries.value.container_port, null) - port = try(service_registries.value.port, null) - registry_arn = service_registries.value.registry_arn - } - } - - task_definition = local.task_definition - triggers = var.triggers - wait_for_steady_state = var.wait_for_steady_state - - propagate_tags = var.propagate_tags - tags = merge(var.tags, var.service_tags) - - timeouts { - create = try(var.timeouts.create, null) - update = try(var.timeouts.update, null) - delete = try(var.timeouts.delete, null) - } - - depends_on = [aws_iam_role_policy_attachment.service] - - lifecycle { - ignore_changes = [ - desired_count, # Always ignored - ] - } -} - -################################################################################ -# Service - Ignore `task_definition` -################################################################################ - -resource "aws_ecs_service" "ignore_task_definition" { - count = local.create_service && var.ignore_task_definition_changes ? 1 : 0 - - dynamic "alarms" { - for_each = length(var.alarms) > 0 ? [var.alarms] : [] - - content { - alarm_names = alarms.value.alarm_names - enable = try(alarms.value.enable, true) - rollback = try(alarms.value.rollback, true) - } - } - - dynamic "capacity_provider_strategy" { - # Set by task set if deployment controller is external - for_each = { for k, v in var.capacity_provider_strategy : k => v if !local.is_external_deployment } - - content { - base = try(capacity_provider_strategy.value.base, null) - capacity_provider = capacity_provider_strategy.value.capacity_provider - weight = try(capacity_provider_strategy.value.weight, null) - } - } - - cluster = var.cluster_arn - - dynamic "deployment_circuit_breaker" { - for_each = length(var.deployment_circuit_breaker) > 0 ? [var.deployment_circuit_breaker] : [] - - content { - enable = deployment_circuit_breaker.value.enable - rollback = deployment_circuit_breaker.value.rollback - } - } - - dynamic "deployment_controller" { - for_each = length(var.deployment_controller) > 0 ? [var.deployment_controller] : [] - - content { - type = try(deployment_controller.value.type, null) - } - } - - deployment_maximum_percent = local.is_daemon || local.is_external_deployment ? null : var.deployment_maximum_percent - deployment_minimum_healthy_percent = local.is_daemon || local.is_external_deployment ? null : var.deployment_minimum_healthy_percent - desired_count = local.is_daemon || local.is_external_deployment ? null : var.desired_count - enable_ecs_managed_tags = var.enable_ecs_managed_tags - enable_execute_command = var.enable_execute_command - force_new_deployment = local.is_external_deployment ? null : var.force_new_deployment - health_check_grace_period_seconds = var.health_check_grace_period_seconds - iam_role = local.iam_role_arn - launch_type = local.is_external_deployment || length(var.capacity_provider_strategy) > 0 ? null : var.launch_type - - dynamic "load_balancer" { - # Set by task set if deployment controller is external - for_each = { for k, v in var.load_balancer : k => v if !local.is_external_deployment } - - content { - container_name = load_balancer.value.container_name - container_port = load_balancer.value.container_port - elb_name = try(load_balancer.value.elb_name, null) - target_group_arn = try(load_balancer.value.target_group_arn, null) - } - } - - name = var.name - - dynamic "network_configuration" { - # Set by task set if deployment controller is external - for_each = var.network_mode == "awsvpc" ? [{ for k, v in local.network_configuration : k => v if !local.is_external_deployment }] : [] - - content { - assign_public_ip = network_configuration.value.assign_public_ip - security_groups = network_configuration.value.security_groups - subnets = network_configuration.value.subnets - } - } - - dynamic "ordered_placement_strategy" { - for_each = var.ordered_placement_strategy - - content { - field = try(ordered_placement_strategy.value.field, null) - type = ordered_placement_strategy.value.type - } - } - - dynamic "placement_constraints" { - for_each = var.placement_constraints - - content { - expression = try(placement_constraints.value.expression, null) - type = placement_constraints.value.type - } - } - - # Set by task set if deployment controller is external - platform_version = local.is_fargate && !local.is_external_deployment ? var.platform_version : null - scheduling_strategy = local.is_fargate ? "REPLICA" : var.scheduling_strategy - - dynamic "service_connect_configuration" { - for_each = length(var.service_connect_configuration) > 0 ? [var.service_connect_configuration] : [] - - content { - enabled = try(service_connect_configuration.value.enabled, true) - - dynamic "log_configuration" { - for_each = try([service_connect_configuration.value.log_configuration], []) - - content { - log_driver = try(log_configuration.value.log_driver, null) - options = try(log_configuration.value.options, null) - - dynamic "secret_option" { - for_each = try(log_configuration.value.secret_option, []) - - content { - name = secret_option.value.name - value_from = secret_option.value.value_from - } - } - } - } - - namespace = lookup(service_connect_configuration.value, "namespace", null) - - dynamic "service" { - for_each = try([service_connect_configuration.value.service], []) - - content { - - dynamic "client_alias" { - for_each = try([service.value.client_alias], []) - - content { - dns_name = try(client_alias.value.dns_name, null) - port = client_alias.value.port - } - } - - discovery_name = try(service.value.discovery_name, null) - ingress_port_override = try(service.value.ingress_port_override, null) - port_name = service.value.port_name - } - } - } - } - - dynamic "service_registries" { - # Set by task set if deployment controller is external - for_each = length(var.service_registries) > 0 ? [{ for k, v in var.service_registries : k => v if !local.is_external_deployment }] : [] - - content { - container_name = try(service_registries.value.container_name, null) - container_port = try(service_registries.value.container_port, null) - port = try(service_registries.value.port, null) - registry_arn = service_registries.value.registry_arn - } - } - - task_definition = local.task_definition - triggers = var.triggers - wait_for_steady_state = var.wait_for_steady_state - - propagate_tags = var.propagate_tags - tags = var.tags - - timeouts { - create = try(var.timeouts.create, null) - update = try(var.timeouts.update, null) - delete = try(var.timeouts.delete, null) - } - - depends_on = [aws_iam_role_policy_attachment.service] - - lifecycle { - ignore_changes = [ - desired_count, # Always ignored - task_definition, - load_balancer, - ] - } -} - -################################################################################ -# Service - IAM Role -################################################################################ - -locals { - # Role is not required if task definition uses `awsvpc` network mode or if a load balancer is not used - needs_iam_role = var.network_mode != "awsvpc" && length(var.load_balancer) > 0 - create_iam_role = var.create && var.create_iam_role && local.needs_iam_role - iam_role_arn = local.needs_iam_role ? try(aws_iam_role.service[0].arn, var.iam_role_arn) : null - - iam_role_name = try(coalesce(var.iam_role_name, var.name), "") -} - -data "aws_iam_policy_document" "service_assume" { - count = local.create_iam_role ? 1 : 0 - - statement { - sid = "ECSServiceAssumeRole" - actions = ["sts:AssumeRole"] - - principals { - type = "Service" - identifiers = ["ecs.amazonaws.com"] - } - } -} - -resource "aws_iam_role" "service" { - count = local.create_iam_role ? 1 : 0 - - name = var.iam_role_use_name_prefix ? null : local.iam_role_name - name_prefix = var.iam_role_use_name_prefix ? "${local.iam_role_name}-" : null - path = var.iam_role_path - description = var.iam_role_description - - assume_role_policy = data.aws_iam_policy_document.service_assume[0].json - permissions_boundary = var.iam_role_permissions_boundary - force_detach_policies = true - - tags = merge(var.tags, var.iam_role_tags) -} - -data "aws_iam_policy_document" "service" { - count = local.create_iam_role ? 1 : 0 - - statement { - sid = "ECSService" - resources = ["*"] - - actions = [ - "ec2:Describe*", - "elasticloadbalancing:DeregisterInstancesFromLoadBalancer", - "elasticloadbalancing:DeregisterTargets", - "elasticloadbalancing:Describe*", - "elasticloadbalancing:RegisterInstancesWithLoadBalancer", - "elasticloadbalancing:RegisterTargets" - ] - } - - dynamic "statement" { - for_each = var.iam_role_statements - - content { - sid = try(statement.value.sid, null) - actions = try(statement.value.actions, null) - not_actions = try(statement.value.not_actions, null) - effect = try(statement.value.effect, null) - resources = try(statement.value.resources, null) - not_resources = try(statement.value.not_resources, null) - - dynamic "principals" { - for_each = try(statement.value.principals, []) - - content { - type = principals.value.type - identifiers = principals.value.identifiers - } - } - - dynamic "not_principals" { - for_each = try(statement.value.not_principals, []) - - content { - type = not_principals.value.type - identifiers = not_principals.value.identifiers - } - } - - dynamic "condition" { - for_each = try(statement.value.conditions, []) - - content { - test = condition.value.test - values = condition.value.values - variable = condition.value.variable - } - } - } - } -} - -resource "aws_iam_policy" "service" { - count = local.create_iam_role ? 1 : 0 - - name = var.iam_role_use_name_prefix ? null : local.iam_role_name - name_prefix = var.iam_role_use_name_prefix ? "${local.iam_role_name}-" : null - description = coalesce(var.iam_role_description, "ECS service policy that allows Amazon ECS to make calls to your load balancer on your behalf") - policy = data.aws_iam_policy_document.service[0].json - - tags = merge(var.tags, var.iam_role_tags) -} - -resource "aws_iam_role_policy_attachment" "service" { - count = local.create_iam_role ? 1 : 0 - - role = aws_iam_role.service[0].name - policy_arn = aws_iam_policy.service[0].arn -} - -################################################################################ -# Container Definition -################################################################################ - -module "container_definition" { - source = "../container-definition" - - for_each = { for k, v in var.container_definitions : k => v if local.create_task_definition && try(v.create, true) } - - operating_system_family = try(var.runtime_platform.operating_system_family, "LINUX") - - # Container Definition - command = try(each.value.command, var.container_definition_defaults.command, []) - cpu = try(each.value.cpu, var.container_definition_defaults.cpu, null) - dependencies = try(each.value.dependencies, var.container_definition_defaults.dependencies, []) # depends_on is a reserved word - disable_networking = try(each.value.disable_networking, var.container_definition_defaults.disable_networking, null) - dns_search_domains = try(each.value.dns_search_domains, var.container_definition_defaults.dns_search_domains, []) - dns_servers = try(each.value.dns_servers, var.container_definition_defaults.dns_servers, []) - docker_labels = try(each.value.docker_labels, var.container_definition_defaults.docker_labels, {}) - docker_security_options = try(each.value.docker_security_options, var.container_definition_defaults.docker_security_options, []) - enable_execute_command = try(each.value.enable_execute_command, var.container_definition_defaults.enable_execute_command, var.enable_execute_command) - entrypoint = try(each.value.entrypoint, var.container_definition_defaults.entrypoint, []) - environment = try(each.value.environment, var.container_definition_defaults.environment, []) - environment_files = try(each.value.environment_files, var.container_definition_defaults.environment_files, []) - essential = try(each.value.essential, var.container_definition_defaults.essential, null) - extra_hosts = try(each.value.extra_hosts, var.container_definition_defaults.extra_hosts, []) - firelens_configuration = try(each.value.firelens_configuration, var.container_definition_defaults.firelens_configuration, {}) - health_check = try(each.value.health_check, var.container_definition_defaults.health_check, {}) - hostname = try(each.value.hostname, var.container_definition_defaults.hostname, null) - image = try(each.value.image, var.container_definition_defaults.image, null) - interactive = try(each.value.interactive, var.container_definition_defaults.interactive, false) - links = try(each.value.links, var.container_definition_defaults.links, []) - linux_parameters = try(each.value.linux_parameters, var.container_definition_defaults.linux_parameters, {}) - log_configuration = try(each.value.log_configuration, var.container_definition_defaults.log_configuration, {}) - memory = try(each.value.memory, var.container_definition_defaults.memory, null) - memory_reservation = try(each.value.memory_reservation, var.container_definition_defaults.memory_reservation, null) - mount_points = try(each.value.mount_points, var.container_definition_defaults.mount_points, []) - name = try(each.value.name, each.key) - port_mappings = try(each.value.port_mappings, var.container_definition_defaults.port_mappings, []) - privileged = try(each.value.privileged, var.container_definition_defaults.privileged, false) - pseudo_terminal = try(each.value.pseudo_terminal, var.container_definition_defaults.pseudo_terminal, false) - readonly_root_filesystem = try(each.value.readonly_root_filesystem, var.container_definition_defaults.readonly_root_filesystem, true) - repository_credentials = try(each.value.repository_credentials, var.container_definition_defaults.repository_credentials, {}) - resource_requirements = try(each.value.resource_requirements, var.container_definition_defaults.resource_requirements, []) - secrets = try(each.value.secrets, var.container_definition_defaults.secrets, []) - start_timeout = try(each.value.start_timeout, var.container_definition_defaults.start_timeout, 30) - stop_timeout = try(each.value.stop_timeout, var.container_definition_defaults.stop_timeout, 120) - system_controls = try(each.value.system_controls, var.container_definition_defaults.system_controls, []) - ulimits = try(each.value.ulimits, var.container_definition_defaults.ulimits, []) - user = try(each.value.user, var.container_definition_defaults.user, 0) - volumes_from = try(each.value.volumes_from, var.container_definition_defaults.volumes_from, []) - working_directory = try(each.value.working_directory, var.container_definition_defaults.working_directory, null) - - # CloudWatch Log Group - service = var.name - enable_cloudwatch_logging = try(each.value.enable_cloudwatch_logging, var.container_definition_defaults.enable_cloudwatch_logging, true) - create_cloudwatch_log_group = try(each.value.create_cloudwatch_log_group, var.container_definition_defaults.create_cloudwatch_log_group, true) - cloudwatch_log_group_name = try(each.value.cloudwatch_log_group_name, var.container_definition_defaults.cloudwatch_log_group_name, null) - cloudwatch_log_group_use_name_prefix = try(each.value.cloudwatch_log_group_use_name_prefix, var.container_definition_defaults.cloudwatch_log_group_use_name_prefix, false) - cloudwatch_log_group_retention_in_days = try(each.value.cloudwatch_log_group_retention_in_days, var.container_definition_defaults.cloudwatch_log_group_retention_in_days, 14) - cloudwatch_log_group_kms_key_id = try(each.value.cloudwatch_log_group_kms_key_id, var.container_definition_defaults.cloudwatch_log_group_kms_key_id, null) - - tags = var.tags -} - -################################################################################ -# Task Definition -################################################################################ - -locals { - create_task_definition = var.create && var.create_task_definition - - # This allows us to query both the existing as well as Terraform's state and get - # and get the max version of either source, useful for when external resources - # update the container definition - max_task_def_revision = local.create_task_definition ? max(aws_ecs_task_definition.this[0].revision, data.aws_ecs_task_definition.this[0].revision) : 0 - task_definition = local.create_task_definition ? "${aws_ecs_task_definition.this[0].family}:${local.max_task_def_revision}" : var.task_definition_arn -} - -# This allows us to query both the existing as well as Terraform's state and get -# and get the max version of either source, useful for when external resources -# update the container definition -data "aws_ecs_task_definition" "this" { - count = local.create_task_definition ? 1 : 0 - - task_definition = aws_ecs_task_definition.this[0].family - - depends_on = [ - # Needs to exist first on first deployment - aws_ecs_task_definition.this - ] -} - -resource "aws_ecs_task_definition" "this" { - count = local.create_task_definition ? 1 : 0 - - # Convert map of maps to array of maps before JSON encoding - container_definitions = jsonencode([for k, v in module.container_definition : v.container_definition]) - cpu = var.cpu - - dynamic "ephemeral_storage" { - for_each = length(var.ephemeral_storage) > 0 ? [var.ephemeral_storage] : [] - - content { - size_in_gib = ephemeral_storage.value.size_in_gib - } - } - - execution_role_arn = try(aws_iam_role.task_exec[0].arn, var.task_exec_iam_role_arn) - family = coalesce(var.family, var.name) - - dynamic "inference_accelerator" { - for_each = var.inference_accelerator - - content { - device_name = inference_accelerator.value.device_name - device_type = inference_accelerator.value.device_type - } - } - - ipc_mode = var.ipc_mode - memory = var.memory - network_mode = var.network_mode - pid_mode = var.pid_mode - - dynamic "placement_constraints" { - for_each = var.task_definition_placement_constraints - - content { - expression = try(placement_constraints.value.expression, null) - type = placement_constraints.value.type - } - } - - dynamic "proxy_configuration" { - for_each = length(var.proxy_configuration) > 0 ? [var.proxy_configuration] : [] - - content { - container_name = proxy_configuration.value.container_name - properties = try(proxy_configuration.value.properties, null) - type = try(proxy_configuration.value.type, null) - } - } - - requires_compatibilities = var.requires_compatibilities - - dynamic "runtime_platform" { - for_each = length(var.runtime_platform) > 0 ? [var.runtime_platform] : [] - - content { - cpu_architecture = try(runtime_platform.value.cpu_architecture, null) - operating_system_family = try(runtime_platform.value.operating_system_family, null) - } - } - - skip_destroy = var.skip_destroy - task_role_arn = try(aws_iam_role.tasks[0].arn, var.tasks_iam_role_arn) - - dynamic "volume" { - for_each = var.volume - - content { - dynamic "docker_volume_configuration" { - for_each = try([volume.value.docker_volume_configuration], []) - - content { - autoprovision = try(docker_volume_configuration.value.autoprovision, null) - driver = try(docker_volume_configuration.value.driver, null) - driver_opts = try(docker_volume_configuration.value.driver_opts, null) - labels = try(docker_volume_configuration.value.labels, null) - scope = try(docker_volume_configuration.value.scope, null) - } - } - - dynamic "efs_volume_configuration" { - for_each = try([volume.value.efs_volume_configuration], []) - - content { - dynamic "authorization_config" { - for_each = try([efs_volume_configuration.value.authorization_config], []) - - content { - access_point_id = try(authorization_config.value.access_point_id, null) - iam = try(authorization_config.value.iam, null) - } - } - - file_system_id = efs_volume_configuration.value.file_system_id - root_directory = try(efs_volume_configuration.value.root_directory, null) - transit_encryption = try(efs_volume_configuration.value.transit_encryption, null) - transit_encryption_port = try(efs_volume_configuration.value.transit_encryption_port, null) - } - } - - dynamic "fsx_windows_file_server_volume_configuration" { - for_each = try([volume.value.fsx_windows_file_server_volume_configuration], []) - - content { - dynamic "authorization_config" { - for_each = try([fsx_windows_file_server_volume_configuration.value.authorization_config], []) - - content { - credentials_parameter = authorization_config.value.credentials_parameter - domain = authorization_config.value.domain - } - } - - file_system_id = fsx_windows_file_server_volume_configuration.value.file_system_id - root_directory = fsx_windows_file_server_volume_configuration.value.root_directory - } - } - - host_path = try(volume.value.host_path, null) - name = try(volume.value.name, volume.key) - } - } - - tags = merge(var.tags, var.task_tags) - - lifecycle { - create_before_destroy = true - } -} - -################################################################################ -# Task Execution - IAM Role -# https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html -################################################################################ - -locals { - task_exec_iam_role_name = try(coalesce(var.task_exec_iam_role_name, var.name), "") - - create_task_exec_iam_role = local.create_task_definition && var.create_task_exec_iam_role - create_task_exec_policy = local.create_task_exec_iam_role && var.create_task_exec_policy -} - -data "aws_iam_policy_document" "task_exec_assume" { - count = local.create_task_exec_iam_role ? 1 : 0 - - statement { - sid = "ECSTaskExecutionAssumeRole" - actions = ["sts:AssumeRole"] - - principals { - type = "Service" - identifiers = ["ecs-tasks.amazonaws.com"] - } - } -} - -resource "aws_iam_role" "task_exec" { - count = local.create_task_exec_iam_role ? 1 : 0 - - name = var.task_exec_iam_role_use_name_prefix ? null : local.task_exec_iam_role_name - name_prefix = var.task_exec_iam_role_use_name_prefix ? "${local.task_exec_iam_role_name}-" : null - path = var.task_exec_iam_role_path - description = coalesce(var.task_exec_iam_role_description, "Task execution role for ${local.task_exec_iam_role_name}") - - assume_role_policy = data.aws_iam_policy_document.task_exec_assume[0].json - max_session_duration = var.task_exec_iam_role_max_session_duration - permissions_boundary = var.task_exec_iam_role_permissions_boundary - force_detach_policies = true - - tags = merge(var.tags, var.task_exec_iam_role_tags) -} - -resource "aws_iam_role_policy_attachment" "task_exec_additional" { - for_each = { for k, v in var.task_exec_iam_role_policies : k => v if local.create_task_exec_iam_role } - - role = aws_iam_role.task_exec[0].name - policy_arn = each.value -} - -data "aws_iam_policy_document" "task_exec" { - count = local.create_task_exec_policy ? 1 : 0 - - # Pulled from AmazonECSTaskExecutionRolePolicy - statement { - sid = "Logs" - actions = [ - "logs:CreateLogStream", - "logs:PutLogEvents", - ] - resources = ["*"] - } - - # Pulled from AmazonECSTaskExecutionRolePolicy - statement { - sid = "ECR" - actions = [ - "ecr:GetAuthorizationToken", - "ecr:BatchCheckLayerAvailability", - "ecr:GetDownloadUrlForLayer", - "ecr:BatchGetImage", - ] - resources = ["*"] - } - - dynamic "statement" { - for_each = length(var.task_exec_ssm_param_arns) > 0 ? [1] : [] - - content { - sid = "GetSSMParams" - actions = ["ssm:GetParameters"] - resources = var.task_exec_ssm_param_arns - } - } - - dynamic "statement" { - for_each = length(var.task_exec_secret_arns) > 0 ? [1] : [] - - content { - sid = "GetSecrets" - actions = ["secretsmanager:GetSecretValue"] - resources = var.task_exec_secret_arns - } - } - - dynamic "statement" { - for_each = var.task_exec_iam_statements - - content { - sid = try(statement.value.sid, null) - actions = try(statement.value.actions, null) - not_actions = try(statement.value.not_actions, null) - effect = try(statement.value.effect, null) - resources = try(statement.value.resources, null) - not_resources = try(statement.value.not_resources, null) - - dynamic "principals" { - for_each = try(statement.value.principals, []) - - content { - type = principals.value.type - identifiers = principals.value.identifiers - } - } - - dynamic "not_principals" { - for_each = try(statement.value.not_principals, []) - - content { - type = not_principals.value.type - identifiers = not_principals.value.identifiers - } - } - - dynamic "condition" { - for_each = try(statement.value.conditions, []) - - content { - test = condition.value.test - values = condition.value.values - variable = condition.value.variable - } - } - } - } -} - -resource "aws_iam_policy" "task_exec" { - count = local.create_task_exec_policy ? 1 : 0 - - name = var.task_exec_iam_role_use_name_prefix ? null : local.task_exec_iam_role_name - name_prefix = var.task_exec_iam_role_use_name_prefix ? "${local.task_exec_iam_role_name}-" : null - description = coalesce(var.task_exec_iam_role_description, "Task execution role IAM policy") - policy = data.aws_iam_policy_document.task_exec[0].json - - tags = merge(var.tags, var.task_exec_iam_role_tags) -} - -resource "aws_iam_role_policy_attachment" "task_exec" { - count = local.create_task_exec_policy ? 1 : 0 - - role = aws_iam_role.task_exec[0].name - policy_arn = aws_iam_policy.task_exec[0].arn -} - -################################################################################ -# Tasks - IAM role -# https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html -################################################################################ - -locals { - tasks_iam_role_name = try(coalesce(var.tasks_iam_role_name, var.name), "") - create_tasks_iam_role = local.create_task_definition && var.create_tasks_iam_role -} - -data "aws_iam_policy_document" "tasks_assume" { - count = local.create_tasks_iam_role ? 1 : 0 - - statement { - sid = "ECSTasksAssumeRole" - actions = ["sts:AssumeRole"] - - principals { - type = "Service" - identifiers = ["ecs-tasks.amazonaws.com"] - } - - # https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#create_task_iam_policy_and_role - condition { - test = "ArnLike" - variable = "aws:SourceArn" - values = ["arn:${local.partition}:ecs:${local.region}:${local.account_id}:*"] - } - - condition { - test = "StringEquals" - variable = "aws:SourceAccount" - values = [local.account_id] - } - } -} - -resource "aws_iam_role" "tasks" { - count = local.create_tasks_iam_role ? 1 : 0 - - name = var.tasks_iam_role_use_name_prefix ? null : local.tasks_iam_role_name - name_prefix = var.tasks_iam_role_use_name_prefix ? "${local.tasks_iam_role_name}-" : null - path = var.tasks_iam_role_path - description = var.tasks_iam_role_description - - assume_role_policy = data.aws_iam_policy_document.tasks_assume[0].json - permissions_boundary = var.tasks_iam_role_permissions_boundary - force_detach_policies = true - - tags = merge(var.tags, var.tasks_iam_role_tags) -} - -resource "aws_iam_role_policy_attachment" "tasks" { - for_each = { for k, v in var.tasks_iam_role_policies : k => v if local.create_tasks_iam_role } - - role = aws_iam_role.tasks[0].name - policy_arn = each.value -} - -data "aws_iam_policy_document" "tasks" { - count = local.create_tasks_iam_role && (length(var.tasks_iam_role_statements) > 0 || var.enable_execute_command) ? 1 : 0 - - dynamic "statement" { - for_each = var.enable_execute_command ? [1] : [] - - content { - sid = "ECSExec" - actions = [ - "ssmmessages:CreateControlChannel", - "ssmmessages:CreateDataChannel", - "ssmmessages:OpenControlChannel", - "ssmmessages:OpenDataChannel", - ] - resources = ["*"] - } - } - - dynamic "statement" { - for_each = var.tasks_iam_role_statements - - content { - sid = try(statement.value.sid, null) - actions = try(statement.value.actions, null) - not_actions = try(statement.value.not_actions, null) - effect = try(statement.value.effect, null) - resources = try(statement.value.resources, null) - not_resources = try(statement.value.not_resources, null) - - dynamic "principals" { - for_each = try(statement.value.principals, []) - - content { - type = principals.value.type - identifiers = principals.value.identifiers - } - } - - dynamic "not_principals" { - for_each = try(statement.value.not_principals, []) - - content { - type = not_principals.value.type - identifiers = not_principals.value.identifiers - } - } - - dynamic "condition" { - for_each = try(statement.value.conditions, []) - - content { - test = condition.value.test - values = condition.value.values - variable = condition.value.variable - } - } - } - } -} - -resource "aws_iam_role_policy" "tasks" { - count = local.create_tasks_iam_role && (length(var.tasks_iam_role_statements) > 0 || var.enable_execute_command) ? 1 : 0 - - name = var.tasks_iam_role_use_name_prefix ? null : local.tasks_iam_role_name - name_prefix = var.tasks_iam_role_use_name_prefix ? "${local.tasks_iam_role_name}-" : null - policy = data.aws_iam_policy_document.tasks[0].json - role = aws_iam_role.tasks[0].id -} - -################################################################################ -# Task Set -################################################################################ - -resource "aws_ecs_task_set" "this" { - # https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskset.html - count = local.create_task_definition && local.is_external_deployment && !var.ignore_task_definition_changes ? 1 : 0 - - service = try(aws_ecs_service.this[0].id, aws_ecs_service.ignore_task_definition[0].id) - cluster = var.cluster_arn - external_id = var.external_id - task_definition = local.task_definition - - dynamic "network_configuration" { - for_each = var.network_mode == "awsvpc" ? [local.network_configuration] : [] - - content { - assign_public_ip = network_configuration.value.assign_public_ip - security_groups = network_configuration.value.security_groups - subnets = network_configuration.value.subnets - } - } - - dynamic "load_balancer" { - for_each = var.load_balancer - - content { - load_balancer_name = try(load_balancer.value.load_balancer_name, null) - target_group_arn = try(load_balancer.value.target_group_arn, null) - container_name = load_balancer.value.container_name - container_port = try(load_balancer.value.container_port, null) - } - } - - dynamic "service_registries" { - for_each = length(var.service_registries) > 0 ? [var.service_registries] : [] - - content { - container_name = try(service_registries.value.container_name, null) - container_port = try(service_registries.value.container_port, null) - port = try(service_registries.value.port, null) - registry_arn = service_registries.value.registry_arn - } - } - - launch_type = length(var.capacity_provider_strategy) > 0 ? null : var.launch_type - - dynamic "capacity_provider_strategy" { - for_each = var.capacity_provider_strategy - - content { - base = try(capacity_provider_strategy.value.base, null) - capacity_provider = capacity_provider_strategy.value.capacity_provider - weight = try(capacity_provider_strategy.value.weight, null) - } - } - - platform_version = local.is_fargate ? var.platform_version : null - - dynamic "scale" { - for_each = length(var.scale) > 0 ? [var.scale] : [] - - content { - unit = try(scale.value.unit, null) - value = try(scale.value.value, null) - } - } - - force_delete = var.force_delete - wait_until_stable = var.wait_until_stable - wait_until_stable_timeout = var.wait_until_stable_timeout - - tags = merge(var.tags, var.task_tags) - - lifecycle { - ignore_changes = [ - scale, # Always ignored - ] - } -} - -################################################################################ -# Task Set - Ignore `task_definition` -################################################################################ - -resource "aws_ecs_task_set" "ignore_task_definition" { - # https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskset.html - count = local.create_task_definition && local.is_external_deployment && var.ignore_task_definition_changes ? 1 : 0 - - service = try(aws_ecs_service.this[0].id, aws_ecs_service.ignore_task_definition[0].id) - cluster = var.cluster_arn - external_id = var.external_id - task_definition = local.task_definition - - dynamic "network_configuration" { - for_each = var.network_mode == "awsvpc" ? [local.network_configuration] : [] - - content { - assign_public_ip = network_configuration.value.assign_public_ip - security_groups = network_configuration.value.security_groups - subnets = network_configuration.value.subnets - } - } - - dynamic "load_balancer" { - for_each = var.load_balancer - - content { - load_balancer_name = try(load_balancer.value.load_balancer_name, null) - target_group_arn = try(load_balancer.value.target_group_arn, null) - container_name = load_balancer.value.container_name - container_port = try(load_balancer.value.container_port, null) - } - } - - dynamic "service_registries" { - for_each = length(var.service_registries) > 0 ? [var.service_registries] : [] - - content { - container_name = try(service_registries.value.container_name, null) - container_port = try(service_registries.value.container_port, null) - port = try(service_registries.value.port, null) - registry_arn = service_registries.value.registry_arn - } - } - - launch_type = length(var.capacity_provider_strategy) > 0 ? null : var.launch_type - - dynamic "capacity_provider_strategy" { - for_each = var.capacity_provider_strategy - - content { - base = try(capacity_provider_strategy.value.base, null) - capacity_provider = capacity_provider_strategy.value.capacity_provider - weight = try(capacity_provider_strategy.value.weight, null) - } - } - - platform_version = local.is_fargate ? var.platform_version : null - - dynamic "scale" { - for_each = length(var.scale) > 0 ? [var.scale] : [] - - content { - unit = try(scale.value.unit, null) - value = try(scale.value.value, null) - } - } - - force_delete = var.force_delete - wait_until_stable = var.wait_until_stable - wait_until_stable_timeout = var.wait_until_stable_timeout - - tags = merge(var.tags, var.task_tags) - - lifecycle { - ignore_changes = [ - scale, # Always ignored - task_definition, - ] - } -} - -################################################################################ -# Autoscaling -################################################################################ - -locals { - enable_autoscaling = local.create_service && var.enable_autoscaling && !local.is_daemon - - cluster_name = element(split("/", var.cluster_arn), 1) -} - -resource "aws_appautoscaling_target" "this" { - count = local.enable_autoscaling ? 1 : 0 - - # Desired needs to be between or equal to min/max - min_capacity = min(var.autoscaling_min_capacity, var.desired_count) - max_capacity = max(var.autoscaling_max_capacity, var.desired_count) - - resource_id = "service/${local.cluster_name}/${try(aws_ecs_service.this[0].name, aws_ecs_service.ignore_task_definition[0].name)}" - scalable_dimension = "ecs:service:DesiredCount" - service_namespace = "ecs" - tags = var.tags -} - -resource "aws_appautoscaling_policy" "this" { - for_each = { for k, v in var.autoscaling_policies : k => v if local.enable_autoscaling } - - name = try(each.value.name, each.key) - policy_type = try(each.value.policy_type, "TargetTrackingScaling") - resource_id = aws_appautoscaling_target.this[0].resource_id - scalable_dimension = aws_appautoscaling_target.this[0].scalable_dimension - service_namespace = aws_appautoscaling_target.this[0].service_namespace - - dynamic "step_scaling_policy_configuration" { - for_each = try([each.value.step_scaling_policy_configuration], []) - - content { - adjustment_type = try(step_scaling_policy_configuration.value.adjustment_type, null) - cooldown = try(step_scaling_policy_configuration.value.cooldown, null) - metric_aggregation_type = try(step_scaling_policy_configuration.value.metric_aggregation_type, null) - min_adjustment_magnitude = try(step_scaling_policy_configuration.value.min_adjustment_magnitude, null) - - dynamic "step_adjustment" { - for_each = try(step_scaling_policy_configuration.value.step_adjustment, []) - - content { - metric_interval_lower_bound = try(step_adjustment.value.metric_interval_lower_bound, null) - metric_interval_upper_bound = try(step_adjustment.value.metric_interval_upper_bound, null) - scaling_adjustment = try(step_adjustment.value.scaling_adjustment, null) - } - } - } - } - - dynamic "target_tracking_scaling_policy_configuration" { - for_each = try(each.value.policy_type, null) == "TargetTrackingScaling" ? try([each.value.target_tracking_scaling_policy_configuration], []) : [] - - content { - dynamic "customized_metric_specification" { - for_each = try([target_tracking_scaling_policy_configuration.value.customized_metric_specification], []) - - content { - dynamic "dimensions" { - for_each = try(customized_metric_specification.value.dimensions, []) - - content { - name = dimensions.value.name - value = dimensions.value.value - } - } - - metric_name = customized_metric_specification.value.metric_name - namespace = customized_metric_specification.value.namespace - statistic = customized_metric_specification.value.statistic - unit = try(customized_metric_specification.value.unit, null) - } - } - - disable_scale_in = try(target_tracking_scaling_policy_configuration.value.disable_scale_in, null) - - dynamic "predefined_metric_specification" { - for_each = try([target_tracking_scaling_policy_configuration.value.predefined_metric_specification], []) - - content { - predefined_metric_type = predefined_metric_specification.value.predefined_metric_type - resource_label = try(predefined_metric_specification.value.resource_label, null) - } - } - - scale_in_cooldown = try(target_tracking_scaling_policy_configuration.value.scale_in_cooldown, 300) - scale_out_cooldown = try(target_tracking_scaling_policy_configuration.value.scale_out_cooldown, 60) - target_value = try(target_tracking_scaling_policy_configuration.value.target_value, 75) - } - } -} - -resource "aws_appautoscaling_scheduled_action" "this" { - for_each = { for k, v in var.autoscaling_scheduled_actions : k => v if local.enable_autoscaling } - - name = try(each.value.name, each.key) - service_namespace = aws_appautoscaling_target.this[0].service_namespace - resource_id = aws_appautoscaling_target.this[0].resource_id - scalable_dimension = aws_appautoscaling_target.this[0].scalable_dimension - - scalable_target_action { - min_capacity = each.value.min_capacity - max_capacity = each.value.max_capacity - } - - schedule = each.value.schedule - start_time = try(each.value.start_time, null) - end_time = try(each.value.end_time, null) - timezone = try(each.value.timezone, null) -} - -################################################################################ -# Security Group -################################################################################ - -locals { - create_security_group = var.create && var.create_security_group && var.network_mode == "awsvpc" - security_group_name = try(coalesce(var.security_group_name, var.name), "") -} - -data "aws_subnet" "this" { - count = local.create_security_group ? 1 : 0 - - id = element(var.subnet_ids, 0) -} - -resource "aws_security_group" "this" { - count = local.create_security_group ? 1 : 0 - - name = var.security_group_use_name_prefix ? null : local.security_group_name - name_prefix = var.security_group_use_name_prefix ? "${local.security_group_name}-" : null - description = var.security_group_description - vpc_id = data.aws_subnet.this[0].vpc_id - - tags = merge( - var.tags, - { "Name" = local.security_group_name }, - var.security_group_tags - ) - - lifecycle { - create_before_destroy = true - } -} - -resource "aws_security_group_rule" "this" { - for_each = { for k, v in var.security_group_rules : k => v if local.create_security_group } - - # Required - security_group_id = aws_security_group.this[0].id - protocol = each.value.protocol - from_port = each.value.from_port - to_port = each.value.to_port - type = each.value.type - - # Optional - description = lookup(each.value, "description", null) - cidr_blocks = lookup(each.value, "cidr_blocks", null) - ipv6_cidr_blocks = lookup(each.value, "ipv6_cidr_blocks", null) - prefix_list_ids = lookup(each.value, "prefix_list_ids", null) - self = lookup(each.value, "self", null) - source_security_group_id = lookup(each.value, "source_security_group_id", null) -} diff --git a/demo/iac/modules/service/outputs.tf b/demo/iac/modules/service/outputs.tf deleted file mode 100644 index 1eaa851..0000000 --- a/demo/iac/modules/service/outputs.tf +++ /dev/null @@ -1,157 +0,0 @@ -################################################################################ -# Service -################################################################################ - -output "id" { - description = "ARN that identifies the service" - value = try(aws_ecs_service.this[0].id, aws_ecs_service.ignore_task_definition[0].id, null) -} - -output "name" { - description = "Name of the service" - value = try(aws_ecs_service.this[0].name, aws_ecs_service.ignore_task_definition[0].name, null) -} - -################################################################################ -# IAM Role -################################################################################ - -output "iam_role_name" { - description = "Service IAM role name" - value = try(aws_iam_role.service[0].name, null) -} - -output "iam_role_arn" { - description = "Service IAM role ARN" - value = try(aws_iam_role.service[0].arn, var.iam_role_arn) -} - -output "iam_role_unique_id" { - description = "Stable and unique string identifying the service IAM role" - value = try(aws_iam_role.service[0].unique_id, null) -} - -################################################################################ -# Container Definition -################################################################################ - -output "container_definitions" { - description = "Container definitions" - value = module.container_definition -} - -################################################################################ -# Task Definition -################################################################################ - -output "task_definition_arn" { - description = "Full ARN of the Task Definition (including both `family` and `revision`)" - value = try(aws_ecs_task_definition.this[0].arn, var.task_definition_arn) -} - -output "task_definition_revision" { - description = "Revision of the task in a particular family" - value = try(aws_ecs_task_definition.this[0].revision, null) -} - -output "task_definition_family" { - description = "The unique name of the task definition" - value = try(aws_ecs_task_definition.this[0].family, null) -} - -output "task_definition_family_revision" { - description = "The family and revision (family:revision) of the task definition" - value = "${try(aws_ecs_task_definition.this[0].family, "")}:${local.max_task_def_revision}" -} - -################################################################################ -# Task Execution - IAM Role -# https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html -################################################################################ - -output "task_exec_iam_role_name" { - description = "Task execution IAM role name" - value = try(aws_iam_role.task_exec[0].name, null) -} - -output "task_exec_iam_role_arn" { - description = "Task execution IAM role ARN" - value = try(aws_iam_role.task_exec[0].arn, var.task_exec_iam_role_arn) -} - -output "task_exec_iam_role_unique_id" { - description = "Stable and unique string identifying the task execution IAM role" - value = try(aws_iam_role.task_exec[0].unique_id, null) -} - -################################################################################ -# Tasks - IAM role -# https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html -################################################################################ - -output "tasks_iam_role_name" { - description = "Tasks IAM role name" - value = try(aws_iam_role.tasks[0].name, null) -} - -output "tasks_iam_role_arn" { - description = "Tasks IAM role ARN" - value = try(aws_iam_role.tasks[0].arn, var.tasks_iam_role_arn) -} - -output "tasks_iam_role_unique_id" { - description = "Stable and unique string identifying the tasks IAM role" - value = try(aws_iam_role.tasks[0].unique_id, null) -} - -################################################################################ -# Task Set -################################################################################ - -output "task_set_id" { - description = "The ID of the task set" - value = try(aws_ecs_task_set.this[0].task_set_id, aws_ecs_task_set.ignore_task_definition[0].task_set_id, null) -} - -output "task_set_arn" { - description = "The Amazon Resource Name (ARN) that identifies the task set" - value = try(aws_ecs_task_set.this[0].arn, aws_ecs_task_set.ignore_task_definition[0].arn, null) -} - -output "task_set_stability_status" { - description = "The stability status. This indicates whether the task set has reached a steady state" - value = try(aws_ecs_task_set.this[0].stability_status, aws_ecs_task_set.ignore_task_definition[0].stability_status, null) -} - -output "task_set_status" { - description = "The status of the task set" - value = try(aws_ecs_task_set.this[0].status, aws_ecs_task_set.ignore_task_definition[0].status, null) -} - -################################################################################ -# Autoscaling -################################################################################ - -output "autoscaling_policies" { - description = "Map of autoscaling policies and their attributes" - value = aws_appautoscaling_policy.this -} - -output "autoscaling_scheduled_actions" { - description = "Map of autoscaling scheduled actions and their attributes" - value = aws_appautoscaling_scheduled_action.this -} - -################################################################################ -# Security Group -################################################################################ - -output "security_group_arn" { - description = "Amazon Resource Name (ARN) of the security group" - value = try(aws_security_group.this[0].arn, null) -} - -output "security_group_id" { - description = "ID of the security group" - value = try(aws_security_group.this[0].id, null) -} diff --git a/demo/iac/modules/service/variables.tf b/demo/iac/modules/service/variables.tf deleted file mode 100644 index 1c542e1..0000000 --- a/demo/iac/modules/service/variables.tf +++ /dev/null @@ -1,661 +0,0 @@ -variable "create" { - description = "Determines whether resources will be created (affects all resources)" - type = bool - default = true -} - -variable "create_service" { - description = "Determines whether service resource will be created (set to `false` in case you want to create task definition only)" - type = bool - default = true -} - -variable "tags" { - description = "A map of tags to add to all resources" - type = map(string) - default = {} -} - -################################################################################ -# Service -################################################################################ - -variable "ignore_task_definition_changes" { - description = "Whether changes to service `task_definition` changes should be ignored" - type = bool - default = false -} - -variable "alarms" { - description = "Information about the CloudWatch alarms" - type = any - default = {} -} - -variable "capacity_provider_strategy" { - description = "Capacity provider strategies to use for the service. Can be one or more" - type = any - default = {} -} - -variable "cluster_arn" { - description = "ARN of the ECS cluster where the resources will be provisioned" - type = string - default = "" -} - -variable "deployment_circuit_breaker" { - description = "Configuration block for deployment circuit breaker" - type = any - default = {} -} - -variable "deployment_controller" { - description = "Configuration block for deployment controller configuration" - type = any - default = {} -} - -variable "deployment_maximum_percent" { - description = "Upper limit (as a percentage of the service's `desired_count`) of the number of running tasks that can be running in a service during a deployment" - type = number - default = 200 -} - -variable "deployment_minimum_healthy_percent" { - description = "Lower limit (as a percentage of the service's `desired_count`) of the number of running tasks that must remain running and healthy in a service during a deployment" - type = number - default = 66 -} - -variable "desired_count" { - description = "Number of instances of the task definition to place and keep running" - type = number - default = 1 -} - -variable "enable_ecs_managed_tags" { - description = "Specifies whether to enable Amazon ECS managed tags for the tasks within the service" - type = bool - default = true -} - -variable "enable_execute_command" { - description = "Specifies whether to enable Amazon ECS Exec for the tasks within the service" - type = bool - default = false -} - -variable "force_new_deployment" { - description = "Enable to force a new task deployment of the service. This can be used to update tasks to use a newer Docker image with same image/tag combination, roll Fargate tasks onto a newer platform version, or immediately deploy `ordered_placement_strategy` and `placement_constraints` updates" - type = bool - default = true -} - -variable "health_check_grace_period_seconds" { - description = "Seconds to ignore failing load balancer health checks on newly instantiated tasks to prevent premature shutdown, up to 2147483647. Only valid for services configured to use load balancers" - type = number - default = null -} - -variable "launch_type" { - description = "Launch type on which to run your service. The valid values are `EC2`, `FARGATE`, and `EXTERNAL`. Defaults to `FARGATE`" - type = string - default = "FARGATE" -} - -variable "load_balancer" { - description = "Configuration block for load balancers" - type = any - default = {} -} - -variable "name" { - description = "Name of the service (up to 255 letters, numbers, hyphens, and underscores)" - type = string - default = null -} - -variable "assign_public_ip" { - description = "Assign a public IP address to the ENI (Fargate launch type only)" - type = bool - default = false -} - -variable "security_group_ids" { - description = "List of security groups to associate with the task or service" - type = list(string) - default = [] -} - -variable "subnet_ids" { - description = "List of subnets to associate with the task or service" - type = list(string) - default = [] -} - -variable "ordered_placement_strategy" { - description = "Service level strategy rules that are taken into consideration during task placement. List from top to bottom in order of precedence" - type = any - default = {} -} - -variable "placement_constraints" { - description = "Configuration block for rules that are taken into consideration during task placement (up to max of 10). This is set at the service, see `task_definition_placement_constraints` for setting at the task definition" - type = any - default = {} -} - -variable "platform_version" { - description = "Platform version on which to run your service. Only applicable for `launch_type` set to `FARGATE`. Defaults to `LATEST`" - type = string - default = null -} - -variable "propagate_tags" { - description = "Specifies whether to propagate the tags from the task definition or the service to the tasks. The valid values are `SERVICE` and `TASK_DEFINITION`" - type = string - default = null -} - -variable "scheduling_strategy" { - description = "Scheduling strategy to use for the service. The valid values are `REPLICA` and `DAEMON`. Defaults to `REPLICA`" - type = string - default = null -} - -variable "service_connect_configuration" { - description = "The ECS Service Connect configuration for this service to discover and connect to services, and be discovered by, and connected from, other services within a namespace" - type = any - default = {} -} - -variable "service_registries" { - description = "Service discovery registries for the service" - type = any - default = {} -} - -variable "timeouts" { - description = "Create, update, and delete timeout configurations for the service" - type = map(string) - default = {} -} - -variable "triggers" { - description = "Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `timestamp()`" - type = any - default = {} -} - -variable "wait_for_steady_state" { - description = "If true, Terraform will wait for the service to reach a steady state before continuing. Default is `false`" - type = bool - default = null -} - -variable "service_tags" { - description = "A map of additional tags to add to the service" - type = map(string) - default = {} -} - -################################################################################ -# Service - IAM Role -################################################################################ - -variable "create_iam_role" { - description = "Determines whether the ECS service IAM role should be created" - type = bool - default = true -} - -variable "iam_role_arn" { - description = "Existing IAM role ARN" - type = string - default = null -} - -variable "iam_role_name" { - description = "Name to use on IAM role created" - type = string - default = null -} - -variable "iam_role_use_name_prefix" { - description = "Determines whether the IAM role name (`iam_role_name`) is used as a prefix" - type = bool - default = true -} - -variable "iam_role_path" { - description = "IAM role path" - type = string - default = null -} - -variable "iam_role_description" { - description = "Description of the role" - type = string - default = null -} - -variable "iam_role_permissions_boundary" { - description = "ARN of the policy that is used to set the permissions boundary for the IAM role" - type = string - default = null -} - -variable "iam_role_tags" { - description = "A map of additional tags to add to the IAM role created" - type = map(string) - default = {} -} - -variable "iam_role_statements" { - description = "A map of IAM policy [statements](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document#statement) for custom permission usage" - type = any - default = {} -} - -################################################################################ -# Task Definition -################################################################################ - -variable "create_task_definition" { - description = "Determines whether to create a task definition or use existing/provided" - type = bool - default = true -} - -variable "task_definition_arn" { - description = "Existing task definition ARN. Required when `create_task_definition` is `false`" - type = string - default = null -} - -variable "container_definitions" { - description = "A map of valid [container definitions](http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDefinition.html). Please note that you should only provide values that are part of the container definition document" - type = any - default = {} -} - -variable "container_definition_defaults" { - description = "A map of default values for [container definitions](http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDefinition.html) created by `container_definitions`" - type = any - default = {} -} - -variable "cpu" { - description = "Number of cpu units used by the task. If the `requires_compatibilities` is `FARGATE` this field is required" - type = number - default = 1024 -} - -variable "ephemeral_storage" { - description = "The amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on AWS Fargate" - type = any - default = {} -} - -variable "family" { - description = "A unique name for your task definition" - type = string - default = null -} - -variable "inference_accelerator" { - description = "Configuration block(s) with Inference Accelerators settings" - type = any - default = {} -} - -variable "ipc_mode" { - description = "IPC resource namespace to be used for the containers in the task The valid values are `host`, `task`, and `none`" - type = string - default = null -} - -variable "memory" { - description = "Amount (in MiB) of memory used by the task. If the `requires_compatibilities` is `FARGATE` this field is required" - type = number - default = 2048 -} - -variable "network_mode" { - description = "Docker networking mode to use for the containers in the task. Valid values are `none`, `bridge`, `awsvpc`, and `host`" - type = string - default = "awsvpc" -} - -variable "pid_mode" { - description = "Process namespace to use for the containers in the task. The valid values are `host` and `task`" - type = string - default = null -} - -variable "task_definition_placement_constraints" { - description = "Configuration block for rules that are taken into consideration during task placement (up to max of 10). This is set at the task definition, see `placement_constraints` for setting at the service" - type = any - default = {} -} - -variable "proxy_configuration" { - description = "Configuration block for the App Mesh proxy" - type = any - default = {} -} - -variable "requires_compatibilities" { - description = "Set of launch types required by the task. The valid values are `EC2` and `FARGATE`" - type = list(string) - default = ["FARGATE"] -} - -variable "runtime_platform" { - description = "Configuration block for `runtime_platform` that containers in your task may use" - type = any - default = { - operating_system_family = "LINUX" - cpu_architecture = "X86_64" - } -} - -variable "skip_destroy" { - description = "If true, the task is not deleted when the service is deleted" - type = bool - default = null -} - -variable "volume" { - description = "Configuration block for volumes that containers in your task may use" - type = any - default = {} -} - -variable "task_tags" { - description = "A map of additional tags to add to the task definition/set created" - type = map(string) - default = {} -} - -################################################################################ -# Task Execution - IAM Role -# https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html -################################################################################ - -variable "create_task_exec_iam_role" { - description = "Determines whether the ECS task definition IAM role should be created" - type = bool - default = true -} - -variable "task_exec_iam_role_arn" { - description = "Existing IAM role ARN" - type = string - default = null -} - -variable "task_exec_iam_role_name" { - description = "Name to use on IAM role created" - type = string - default = null -} - -variable "task_exec_iam_role_use_name_prefix" { - description = "Determines whether the IAM role name (`task_exec_iam_role_name`) is used as a prefix" - type = bool - default = true -} - -variable "task_exec_iam_role_path" { - description = "IAM role path" - type = string - default = null -} - -variable "task_exec_iam_role_description" { - description = "Description of the role" - type = string - default = null -} - -variable "task_exec_iam_role_permissions_boundary" { - description = "ARN of the policy that is used to set the permissions boundary for the IAM role" - type = string - default = null -} - -variable "task_exec_iam_role_tags" { - description = "A map of additional tags to add to the IAM role created" - type = map(string) - default = {} -} - -variable "task_exec_iam_role_policies" { - description = "Map of IAM role policy ARNs to attach to the IAM role" - type = map(string) - default = {} -} - -variable "task_exec_iam_role_max_session_duration" { - description = "Maximum session duration (in seconds) for ECS task execution role. Default is 3600." - type = number - default = null -} - -variable "create_task_exec_policy" { - description = "Determines whether the ECS task definition IAM policy should be created. This includes permissions included in AmazonECSTaskExecutionRolePolicy as well as access to secrets and SSM parameters" - type = bool - default = true -} - -variable "task_exec_ssm_param_arns" { - description = "List of SSM parameter ARNs the task execution role will be permitted to get/read" - type = list(string) - default = ["arn:aws:ssm:*:*:parameter/*"] -} - -variable "task_exec_secret_arns" { - description = "List of SecretsManager secret ARNs the task execution role will be permitted to get/read" - type = list(string) - default = ["arn:aws:secretsmanager:*:*:secret:*"] -} - -variable "task_exec_iam_statements" { - description = "A map of IAM policy [statements](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document#statement) for custom permission usage" - type = any - default = {} -} - -################################################################################ -# Tasks - IAM role -# https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html -################################################################################ - -variable "create_tasks_iam_role" { - description = "Determines whether the ECS tasks IAM role should be created" - type = bool - default = true -} - -variable "tasks_iam_role_arn" { - description = "Existing IAM role ARN" - type = string - default = null -} - -variable "tasks_iam_role_name" { - description = "Name to use on IAM role created" - type = string - default = null -} - -variable "tasks_iam_role_use_name_prefix" { - description = "Determines whether the IAM role name (`tasks_iam_role_name`) is used as a prefix" - type = bool - default = true -} - -variable "tasks_iam_role_path" { - description = "IAM role path" - type = string - default = null -} - -variable "tasks_iam_role_description" { - description = "Description of the role" - type = string - default = null -} - -variable "tasks_iam_role_permissions_boundary" { - description = "ARN of the policy that is used to set the permissions boundary for the IAM role" - type = string - default = null -} - -variable "tasks_iam_role_tags" { - description = "A map of additional tags to add to the IAM role created" - type = map(string) - default = {} -} - -variable "tasks_iam_role_policies" { - description = "Map of IAM role policy ARNs to attach to the IAM role" - type = map(string) - default = {} -} - -variable "tasks_iam_role_statements" { - description = "A map of IAM policy [statements](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document#statement) for custom permission usage" - type = any - default = {} -} - -################################################################################ -# Task Set -################################################################################ - -variable "external_id" { - description = "The external ID associated with the task set" - type = string - default = null -} - -variable "scale" { - description = "A floating-point percentage of the desired number of tasks to place and keep running in the task set" - type = any - default = {} -} - -variable "force_delete" { - description = "Whether to allow deleting the task set without waiting for scaling down to 0" - type = bool - default = null -} - -variable "wait_until_stable" { - description = "Whether terraform should wait until the task set has reached `STEADY_STATE`" - type = bool - default = null -} - -variable "wait_until_stable_timeout" { - description = "Wait timeout for task set to reach `STEADY_STATE`. Valid time units include `ns`, `us` (or µs), `ms`, `s`, `m`, and `h`. Default `10m`" - type = string - default = null -} - -################################################################################ -# Autoscaling -################################################################################ - -variable "enable_autoscaling" { - description = "Determines whether to enable autoscaling for the service" - type = bool - default = true -} - -variable "autoscaling_min_capacity" { - description = "Minimum number of tasks to run in your service" - type = number - default = 1 -} - -variable "autoscaling_max_capacity" { - description = "Maximum number of tasks to run in your service" - type = number - default = 10 -} - -variable "autoscaling_policies" { - description = "Map of autoscaling policies to create for the service" - type = any - default = { - cpu = { - policy_type = "TargetTrackingScaling" - - target_tracking_scaling_policy_configuration = { - predefined_metric_specification = { - predefined_metric_type = "ECSServiceAverageCPUUtilization" - } - } - } - memory = { - policy_type = "TargetTrackingScaling" - - target_tracking_scaling_policy_configuration = { - predefined_metric_specification = { - predefined_metric_type = "ECSServiceAverageMemoryUtilization" - } - } - } - } -} - -variable "autoscaling_scheduled_actions" { - description = "Map of autoscaling scheduled actions to create for the service" - type = any - default = {} -} - -################################################################################ -# Security Group -################################################################################ - -variable "create_security_group" { - description = "Determines if a security group is created" - type = bool - default = true -} - -variable "security_group_name" { - description = "Name to use on security group created" - type = string - default = null -} - -variable "security_group_use_name_prefix" { - description = "Determines whether the security group name (`security_group_name`) is used as a prefix" - type = bool - default = true -} - -variable "security_group_description" { - description = "Description of the security group created" - type = string - default = null -} - -variable "security_group_rules" { - description = "Security group rules to add to the security group created" - type = any - default = {} -} - -variable "security_group_tags" { - description = "A map of additional tags to add to the security group created" - type = map(string) - default = {} -} diff --git a/demo/iac/modules/service/versions.tf b/demo/iac/modules/service/versions.tf deleted file mode 100644 index 682191e..0000000 --- a/demo/iac/modules/service/versions.tf +++ /dev/null @@ -1,10 +0,0 @@ -terraform { - required_version = ">= 1.0" - - required_providers { - aws = { - source = "hashicorp/aws" - version = ">= 4.66.1" - } - } -} diff --git a/demo/iac/outputs.tf b/demo/iac/outputs.tf deleted file mode 100644 index 71fddb2..0000000 --- a/demo/iac/outputs.tf +++ /dev/null @@ -1,153 +0,0 @@ -################################################################################ -# Cluster -################################################################################ - -output "cluster_arn" { - description = "ARN that identifies the cluster" - value = module.ecs_cluster.arn -} - -output "cluster_id" { - description = "ID that identifies the cluster" - value = module.ecs_cluster.id -} - -output "cluster_name" { - description = "Name that identifies the cluster" - value = module.ecs_cluster.name -} - -output "cluster_capacity_providers" { - description = "Map of cluster capacity providers attributes" - value = module.ecs_cluster.cluster_capacity_providers -} - -output "cluster_autoscaling_capacity_providers" { - description = "Map of capacity providers created and their attributes" - value = module.ecs_cluster.autoscaling_capacity_providers -} - -################################################################################ -# Service -################################################################################ - -output "service_id" { - description = "ARN that identifies the service" - value = module.ecs_service.id -} - -output "service_name" { - description = "Name of the service" - value = module.ecs_service.name -} - -output "service_iam_role_name" { - description = "Service IAM role name" - value = module.ecs_service.iam_role_name -} - -output "service_iam_role_arn" { - description = "Service IAM role ARN" - value = module.ecs_service.iam_role_arn -} - -output "service_iam_role_unique_id" { - description = "Stable and unique string identifying the service IAM role" - value = module.ecs_service.iam_role_unique_id -} - -output "service_container_definitions" { - description = "Container definitions" - value = module.ecs_service.container_definitions -} - -output "service_task_definition_arn" { - description = "Full ARN of the Task Definition (including both `family` and `revision`)" - value = module.ecs_service.task_definition_arn -} - -output "service_task_definition_revision" { - description = "Revision of the task in a particular family" - value = module.ecs_service.task_definition_revision -} - -output "service_task_definition_family" { - description = "The unique name of the task definition" - value = module.ecs_service.task_definition_family -} - -output "service_task_definition_family_revision" { - description = "The family and revision (family:revision) of the task definition" - value = module.ecs_service.task_definition_family_revision -} - -output "service_task_exec_iam_role_name" { - description = "Task execution IAM role name" - value = module.ecs_service.task_exec_iam_role_name -} - -output "service_task_exec_iam_role_arn" { - description = "Task execution IAM role ARN" - value = module.ecs_service.task_exec_iam_role_arn -} - -output "service_task_exec_iam_role_unique_id" { - description = "Stable and unique string identifying the task execution IAM role" - value = module.ecs_service.task_exec_iam_role_unique_id -} - -output "service_tasks_iam_role_name" { - description = "Tasks IAM role name" - value = module.ecs_service.tasks_iam_role_name -} - -output "service_tasks_iam_role_arn" { - description = "Tasks IAM role ARN" - value = module.ecs_service.tasks_iam_role_arn -} - -output "service_tasks_iam_role_unique_id" { - description = "Stable and unique string identifying the tasks IAM role" - value = module.ecs_service.tasks_iam_role_unique_id -} - -output "service_task_set_id" { - description = "The ID of the task set" - value = module.ecs_service.task_set_id -} - -output "service_task_set_arn" { - description = "The Amazon Resource Name (ARN) that identifies the task set" - value = module.ecs_service.task_set_arn -} - -output "service_task_set_stability_status" { - description = "The stability status. This indicates whether the task set has reached a steady state" - value = module.ecs_service.task_set_stability_status -} - -output "service_task_set_status" { - description = "The status of the task set" - value = module.ecs_service.task_set_status -} - -output "service_autoscaling_policies" { - description = "Map of autoscaling policies and their attributes" - value = module.ecs_service.autoscaling_policies -} - -output "service_autoscaling_scheduled_actions" { - description = "Map of autoscaling scheduled actions and their attributes" - value = module.ecs_service.autoscaling_scheduled_actions -} - -output "service_security_group_arn" { - description = "Amazon Resource Name (ARN) of the security group" - value = module.ecs_service.security_group_arn -} - -output "service_security_group_id" { - description = "ID of the security group" - value = module.ecs_service.security_group_id -} - diff --git a/demo/iac/route53.tf b/demo/iac/route53.tf deleted file mode 100644 index bce61da..0000000 --- a/demo/iac/route53.tf +++ /dev/null @@ -1,11 +0,0 @@ -resource "aws_route53_record" "chat" { - zone_id = "Z2TWGHEC8YQMWW" - name = "chat.ngd.io" - type = "A" - - alias { - name = module.alb.dns_name - zone_id = module.alb.zone_id - evaluate_target_health = true - } -} diff --git a/demo/iac/terraform.tfstate b/demo/iac/terraform.tfstate deleted file mode 100644 index 0abac90..0000000 --- a/demo/iac/terraform.tfstate +++ /dev/null @@ -1,9 +0,0 @@ -{ - "version": 4, - "terraform_version": "1.6.2", - "serial": 306, - "lineage": "eee76b09-c66c-0cf5-be4a-cdd9e6b807e9", - "outputs": {}, - "resources": [], - "check_results": null -} diff --git a/demo/iac/terraform.tfstate.backup b/demo/iac/terraform.tfstate.backup deleted file mode 100644 index 53eceb8..0000000 --- a/demo/iac/terraform.tfstate.backup +++ /dev/null @@ -1,3698 +0,0 @@ -{ - "version": 4, - "terraform_version": "1.6.2", - "serial": 241, - "lineage": "eee76b09-c66c-0cf5-be4a-cdd9e6b807e9", - "outputs": { - "cluster_arn": { - "value": "arn:aws:ecs:eu-west-1:355614969320:cluster/chat-app-demo", - "type": "string" - }, - "cluster_autoscaling_capacity_providers": { - "value": {}, - "type": [ - "object", - {} - ] - }, - "cluster_capacity_providers": { - "value": { - "chat-app-demo": { - "capacity_providers": [ - "FARGATE", - "FARGATE_SPOT" - ], - "cluster_name": "chat-app-demo", - "default_capacity_provider_strategy": [ - { - "base": 0, - "capacity_provider": "FARGATE_SPOT", - "weight": 50 - }, - { - "base": 20, - "capacity_provider": "FARGATE", - "weight": 50 - } - ], - "id": "chat-app-demo" - } - }, - "type": [ - "object", - { - "chat-app-demo": [ - "object", - { - "capacity_providers": [ - "set", - "string" - ], - "cluster_name": "string", - "default_capacity_provider_strategy": [ - "set", - [ - "object", - { - "base": "number", - "capacity_provider": "string", - "weight": "number" - } - ] - ], - "id": "string" - } - ] - } - ] - }, - "cluster_id": { - "value": "arn:aws:ecs:eu-west-1:355614969320:cluster/chat-app-demo", - "type": "string" - }, - "cluster_name": { - "value": "chat-app-demo", - "type": "string" - }, - "service_autoscaling_policies": { - "value": { - "cpu": { - "alarm_arns": [ - "arn:aws:cloudwatch:eu-west-1:355614969320:alarm:TargetTracking-service/chat-app-demo/chat-app-demo-AlarmHigh-4a15096b-24f3-4d5e-92c7-2dcad838dd96", - "arn:aws:cloudwatch:eu-west-1:355614969320:alarm:TargetTracking-service/chat-app-demo/chat-app-demo-AlarmLow-7517ee09-8ead-4ef7-96a2-1da4d3ca50f8" - ], - "arn": "arn:aws:autoscaling:eu-west-1:355614969320:scalingPolicy:4124fdd5-6308-45e0-bb88-59b50bd7e1e5:resource/ecs/service/chat-app-demo/chat-app-demo:policyName/cpu", - "id": "cpu", - "name": "cpu", - "policy_type": "TargetTrackingScaling", - "resource_id": "service/chat-app-demo/chat-app-demo", - "scalable_dimension": "ecs:service:DesiredCount", - "service_namespace": "ecs", - "step_scaling_policy_configuration": [], - "target_tracking_scaling_policy_configuration": [ - { - "customized_metric_specification": [], - "disable_scale_in": false, - "predefined_metric_specification": [ - { - "predefined_metric_type": "ECSServiceAverageCPUUtilization", - "resource_label": "" - } - ], - "scale_in_cooldown": 300, - "scale_out_cooldown": 60, - "target_value": 75 - } - ] - }, - "memory": { - "alarm_arns": [ - "arn:aws:cloudwatch:eu-west-1:355614969320:alarm:TargetTracking-service/chat-app-demo/chat-app-demo-AlarmHigh-e1ac6d4d-a925-4f16-82e1-7265670bc5d7", - "arn:aws:cloudwatch:eu-west-1:355614969320:alarm:TargetTracking-service/chat-app-demo/chat-app-demo-AlarmLow-b31315ea-bbd0-4c22-8c1d-52aaafc579d3" - ], - "arn": "arn:aws:autoscaling:eu-west-1:355614969320:scalingPolicy:4124fdd5-6308-45e0-bb88-59b50bd7e1e5:resource/ecs/service/chat-app-demo/chat-app-demo:policyName/memory", - "id": "memory", - "name": "memory", - "policy_type": "TargetTrackingScaling", - "resource_id": "service/chat-app-demo/chat-app-demo", - "scalable_dimension": "ecs:service:DesiredCount", - "service_namespace": "ecs", - "step_scaling_policy_configuration": [], - "target_tracking_scaling_policy_configuration": [ - { - "customized_metric_specification": [], - "disable_scale_in": false, - "predefined_metric_specification": [ - { - "predefined_metric_type": "ECSServiceAverageMemoryUtilization", - "resource_label": "" - } - ], - "scale_in_cooldown": 300, - "scale_out_cooldown": 60, - "target_value": 75 - } - ] - } - }, - "type": [ - "object", - { - "cpu": [ - "object", - { - "alarm_arns": [ - "list", - "string" - ], - "arn": "string", - "id": "string", - "name": "string", - "policy_type": "string", - "resource_id": "string", - "scalable_dimension": "string", - "service_namespace": "string", - "step_scaling_policy_configuration": [ - "list", - [ - "object", - { - "adjustment_type": "string", - "cooldown": "number", - "metric_aggregation_type": "string", - "min_adjustment_magnitude": "number", - "step_adjustment": [ - "set", - [ - "object", - { - "metric_interval_lower_bound": "string", - "metric_interval_upper_bound": "string", - "scaling_adjustment": "number" - } - ] - ] - } - ] - ], - "target_tracking_scaling_policy_configuration": [ - "list", - [ - "object", - { - "customized_metric_specification": [ - "list", - [ - "object", - { - "dimensions": [ - "set", - [ - "object", - { - "name": "string", - "value": "string" - } - ] - ], - "metric_name": "string", - "metrics": [ - "set", - [ - "object", - { - "expression": "string", - "id": "string", - "label": "string", - "metric_stat": [ - "list", - [ - "object", - { - "metric": [ - "list", - [ - "object", - { - "dimensions": [ - "set", - [ - "object", - { - "name": "string", - "value": "string" - } - ] - ], - "metric_name": "string", - "namespace": "string" - } - ] - ], - "stat": "string", - "unit": "string" - } - ] - ], - "return_data": "bool" - } - ] - ], - "namespace": "string", - "statistic": "string", - "unit": "string" - } - ] - ], - "disable_scale_in": "bool", - "predefined_metric_specification": [ - "list", - [ - "object", - { - "predefined_metric_type": "string", - "resource_label": "string" - } - ] - ], - "scale_in_cooldown": "number", - "scale_out_cooldown": "number", - "target_value": "number" - } - ] - ] - } - ], - "memory": [ - "object", - { - "alarm_arns": [ - "list", - "string" - ], - "arn": "string", - "id": "string", - "name": "string", - "policy_type": "string", - "resource_id": "string", - "scalable_dimension": "string", - "service_namespace": "string", - "step_scaling_policy_configuration": [ - "list", - [ - "object", - { - "adjustment_type": "string", - "cooldown": "number", - "metric_aggregation_type": "string", - "min_adjustment_magnitude": "number", - "step_adjustment": [ - "set", - [ - "object", - { - "metric_interval_lower_bound": "string", - "metric_interval_upper_bound": "string", - "scaling_adjustment": "number" - } - ] - ] - } - ] - ], - "target_tracking_scaling_policy_configuration": [ - "list", - [ - "object", - { - "customized_metric_specification": [ - "list", - [ - "object", - { - "dimensions": [ - "set", - [ - "object", - { - "name": "string", - "value": "string" - } - ] - ], - "metric_name": "string", - "metrics": [ - "set", - [ - "object", - { - "expression": "string", - "id": "string", - "label": "string", - "metric_stat": [ - "list", - [ - "object", - { - "metric": [ - "list", - [ - "object", - { - "dimensions": [ - "set", - [ - "object", - { - "name": "string", - "value": "string" - } - ] - ], - "metric_name": "string", - "namespace": "string" - } - ] - ], - "stat": "string", - "unit": "string" - } - ] - ], - "return_data": "bool" - } - ] - ], - "namespace": "string", - "statistic": "string", - "unit": "string" - } - ] - ], - "disable_scale_in": "bool", - "predefined_metric_specification": [ - "list", - [ - "object", - { - "predefined_metric_type": "string", - "resource_label": "string" - } - ] - ], - "scale_in_cooldown": "number", - "scale_out_cooldown": "number", - "target_value": "number" - } - ] - ] - } - ] - } - ] - }, - "service_autoscaling_scheduled_actions": { - "value": {}, - "type": [ - "object", - {} - ] - }, - "service_container_definitions": { - "value": { - "chat-app": { - "cloudwatch_log_group_arn": "arn:aws:logs:eu-west-1:355614969320:log-group:/aws/ecs/chat-app-demo/chat-app", - "cloudwatch_log_group_name": "/aws/ecs/chat-app-demo/chat-app", - "container_definition": { - "cpu": 512, - "environment": [ - { - "name": "REDIS_ENDPOINT", - "value": "valkey" - } - ], - "image": "richarvey/chat-app:latest", - "interactive": false, - "linuxParameters": { - "initProcessEnabled": true - }, - "logConfiguration": { - "logDriver": "awslogs", - "options": { - "awslogs-group": "/aws/ecs/chat-app-demo/chat-app", - "awslogs-region": "eu-west-1", - "awslogs-stream-prefix": "ecs" - } - }, - "memory": 1024, - "memoryReservation": 100, - "mountPoints": [], - "name": "chat-app", - "portMappings": [ - { - "containerPort": 3000, - "hostPort": 3000, - "name": "chat-app", - "protocol": "tcp" - } - ], - "privileged": false, - "pseudoTerminal": false, - "readonlyRootFilesystem": true, - "startTimeout": 30, - "stopTimeout": 120, - "systemControls": [], - "user": "0", - "volumesFrom": [] - } - } - }, - "type": [ - "object", - { - "chat-app": [ - "object", - { - "cloudwatch_log_group_arn": "string", - "cloudwatch_log_group_name": "string", - "container_definition": [ - "object", - { - "cpu": "number", - "environment": [ - "list", - [ - "object", - { - "name": "string", - "value": "string" - } - ] - ], - "image": "string", - "interactive": "bool", - "linuxParameters": [ - "object", - { - "initProcessEnabled": "bool" - } - ], - "logConfiguration": [ - "object", - { - "logDriver": "string", - "options": [ - "object", - { - "awslogs-group": "string", - "awslogs-region": "string", - "awslogs-stream-prefix": "string" - } - ] - } - ], - "memory": "number", - "memoryReservation": "number", - "mountPoints": [ - "list", - "dynamic" - ], - "name": "string", - "portMappings": [ - "list", - [ - "object", - { - "containerPort": "number", - "hostPort": "number", - "name": "string", - "protocol": "string" - } - ] - ], - "privileged": "bool", - "pseudoTerminal": "bool", - "readonlyRootFilesystem": "bool", - "startTimeout": "number", - "stopTimeout": "number", - "systemControls": [ - "list", - [ - "map", - "string" - ] - ], - "user": "string", - "volumesFrom": [ - "list", - "dynamic" - ] - } - ] - } - ] - } - ] - }, - "service_id": { - "value": "arn:aws:ecs:eu-west-1:355614969320:service/chat-app-demo/chat-app-demo", - "type": "string" - }, - "service_name": { - "value": "chat-app-demo", - "type": "string" - }, - "service_security_group_arn": { - "value": "arn:aws:ec2:eu-west-1:355614969320:security-group/sg-05ad2646d8cc5f4a3", - "type": "string" - }, - "service_security_group_id": { - "value": "sg-05ad2646d8cc5f4a3", - "type": "string" - }, - "service_task_definition_arn": { - "value": "arn:aws:ecs:eu-west-1:355614969320:task-definition/chat-app-demo:11", - "type": "string" - }, - "service_task_definition_family": { - "value": "chat-app-demo", - "type": "string" - }, - "service_task_definition_family_revision": { - "value": "chat-app-demo:11", - "type": "string" - }, - "service_task_definition_revision": { - "value": 11, - "type": "number" - }, - "service_task_exec_iam_role_arn": { - "value": "arn:aws:iam::355614969320:role/chat-app-demo-20240415175826752300000004", - "type": "string" - }, - "service_task_exec_iam_role_name": { - "value": "chat-app-demo-20240415175826752300000004", - "type": "string" - }, - "service_task_exec_iam_role_unique_id": { - "value": "AROAVFTCNZXUE6COZ2VQP", - "type": "string" - }, - "service_tasks_iam_role_arn": { - "value": "arn:aws:iam::355614969320:role/chat-app-demo-20240415175826751700000003", - "type": "string" - }, - "service_tasks_iam_role_name": { - "value": "chat-app-demo-20240415175826751700000003", - "type": "string" - }, - "service_tasks_iam_role_unique_id": { - "value": "AROAVFTCNZXUKB5TCDIJT", - "type": "string" - } - }, - "resources": [ - { - "mode": "data", - "type": "aws_availability_zones", - "name": "available", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "all_availability_zones": null, - "exclude_names": null, - "exclude_zone_ids": null, - "filter": null, - "group_names": [ - "eu-west-1" - ], - "id": "eu-west-1", - "names": [ - "eu-west-1a", - "eu-west-1b", - "eu-west-1c" - ], - "state": null, - "timeouts": null, - "zone_ids": [ - "euw1-az1", - "euw1-az2", - "euw1-az3" - ] - }, - "sensitive_attributes": [] - } - ] - }, - { - "mode": "managed", - "type": "aws_ecs_service", - "name": "service", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "alarms": [], - "capacity_provider_strategy": [], - "cluster": "arn:aws:ecs:eu-west-1:355614969320:cluster/chat-app-demo", - "deployment_circuit_breaker": [ - { - "enable": false, - "rollback": false - } - ], - "deployment_controller": [ - { - "type": "ECS" - } - ], - "deployment_maximum_percent": 200, - "deployment_minimum_healthy_percent": 100, - "desired_count": 1, - "enable_ecs_managed_tags": false, - "enable_execute_command": false, - "force_new_deployment": null, - "health_check_grace_period_seconds": 0, - "iam_role": "/aws-service-role/ecs.amazonaws.com/AWSServiceRoleForECS", - "id": "arn:aws:ecs:eu-west-1:355614969320:service/chat-app-demo/valkey", - "launch_type": "FARGATE", - "load_balancer": [], - "name": "valkey", - "network_configuration": [ - { - "assign_public_ip": false, - "security_groups": [ - "sg-0e041494928dc0a6b" - ], - "subnets": [ - "subnet-03484242e7e025e98", - "subnet-08a36304b08dcd4df", - "subnet-0d743b4c62e3de6de" - ] - } - ], - "ordered_placement_strategy": [], - "placement_constraints": [], - "platform_version": "LATEST", - "propagate_tags": "NONE", - "scheduling_strategy": "REPLICA", - "service_connect_configuration": [ - { - "enabled": true, - "log_configuration": [], - "namespace": "chat-app-demo", - "service": [ - { - "client_alias": [ - { - "dns_name": "valkey", - "port": 6379 - } - ], - "discovery_name": "valkey", - "ingress_port_override": 0, - "port_name": "valkey", - "timeout": [], - "tls": [] - } - ] - } - ], - "service_registries": [], - "tags": {}, - "tags_all": {}, - "task_definition": "service:3", - "timeouts": null, - "triggers": {}, - "wait_for_steady_state": false - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "aws_ecs_task_definition.task", - "aws_security_group.sg", - "data.aws_availability_zones.available", - "module.ecs_cluster.aws_cloudwatch_log_group.this", - "module.ecs_cluster.aws_ecs_cluster.this", - "module.vpc.aws_subnet.private", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ] - } - ] - }, - { - "mode": "managed", - "type": "aws_ecs_task_definition", - "name": "task", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 1, - "attributes": { - "arn": "arn:aws:ecs:eu-west-1:355614969320:task-definition/service:4", - "arn_without_revision": "arn:aws:ecs:eu-west-1:355614969320:task-definition/service", - "container_definitions": "[{\"cpu\":512,\"environment\":[],\"essential\":true,\"image\":\"valkey/valkey:7.2.4-rc1-alpine\",\"memory\":1024,\"mountPoints\":[],\"name\":\"valkey\",\"portMappings\":[{\"containerPort\":6379,\"hostPort\":6379,\"name\":\"valkey\",\"protocol\":\"tcp\"}],\"systemControls\":[],\"volumesFrom\":[]}]", - "cpu": "512", - "ephemeral_storage": [], - "execution_role_arn": "", - "family": "service", - "id": "service", - "inference_accelerator": [], - "ipc_mode": "", - "memory": "1024", - "network_mode": "awsvpc", - "pid_mode": "", - "placement_constraints": [], - "proxy_configuration": [], - "requires_compatibilities": [ - "EC2", - "FARGATE" - ], - "revision": 4, - "runtime_platform": [], - "skip_destroy": false, - "tags": {}, - "tags_all": {}, - "task_role_arn": "", - "track_latest": false, - "volume": [] - }, - "sensitive_attributes": [], - "private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==" - } - ] - }, - { - "mode": "managed", - "type": "aws_route53_record", - "name": "chat", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 2, - "attributes": { - "alias": [ - { - "evaluate_target_health": true, - "name": "chat-app-demo-2046813119.eu-west-1.elb.amazonaws.com", - "zone_id": "Z32O12XQLNTSW2" - } - ], - "allow_overwrite": null, - "cidr_routing_policy": [], - "failover_routing_policy": [], - "fqdn": "chat.ngd.io", - "geolocation_routing_policy": [], - "geoproximity_routing_policy": [], - "health_check_id": "", - "id": "Z2TWGHEC8YQMWW_chat.ngd.io_A", - "latency_routing_policy": [], - "multivalue_answer_routing_policy": false, - "name": "chat.ngd.io", - "records": [], - "set_identifier": "", - "ttl": 0, - "type": "A", - "weighted_routing_policy": [], - "zone_id": "Z2TWGHEC8YQMWW" - }, - "sensitive_attributes": [], - "private": "eyJzY2hlbWFfdmVyc2lvbiI6IjIifQ==", - "dependencies": [ - "data.aws_availability_zones.available", - "module.alb.aws_lb.this", - "module.alb.aws_security_group.this", - "module.vpc.aws_subnet.public", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ] - } - ] - }, - { - "mode": "managed", - "type": "aws_security_group", - "name": "sg", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 1, - "attributes": { - "arn": "arn:aws:ec2:eu-west-1:355614969320:security-group/sg-0e041494928dc0a6b", - "description": "Managed by Terraform", - "egress": [ - { - "cidr_blocks": [ - "0.0.0.0/0" - ], - "description": "", - "from_port": 0, - "ipv6_cidr_blocks": [], - "prefix_list_ids": [], - "protocol": "-1", - "security_groups": [], - "self": false, - "to_port": 0 - } - ], - "id": "sg-0e041494928dc0a6b", - "ingress": [ - { - "cidr_blocks": [ - "0.0.0.0/0" - ], - "description": "Port 80", - "from_port": 6379, - "ipv6_cidr_blocks": [], - "prefix_list_ids": [], - "protocol": "tcp", - "security_groups": [], - "self": false, - "to_port": 6379 - }, - { - "cidr_blocks": [], - "description": "", - "from_port": 0, - "ipv6_cidr_blocks": [], - "prefix_list_ids": [], - "protocol": "-1", - "security_groups": [], - "self": true, - "to_port": 0 - } - ], - "name": "ecs", - "name_prefix": "", - "owner_id": "355614969320", - "revoke_rules_on_delete": false, - "tags": {}, - "tags_all": {}, - "timeouts": null, - "vpc_id": "vpc-036c1349ddd4a46ce" - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6OTAwMDAwMDAwMDAwfSwic2NoZW1hX3ZlcnNpb24iOiIxIn0=", - "dependencies": [ - "module.vpc.aws_vpc.this" - ] - } - ] - }, - { - "mode": "managed", - "type": "aws_service_discovery_http_namespace", - "name": "this", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "arn": "arn:aws:servicediscovery:eu-west-1:355614969320:namespace/ns-7exezy2cesetek5e", - "description": "CloudMap namespace for chat-app-demo", - "http_name": "chat-app-demo", - "id": "ns-7exezy2cesetek5e", - "name": "chat-app-demo", - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - } - }, - "sensitive_attributes": [], - "private": "bnVsbA==" - } - ] - }, - { - "mode": "managed", - "type": "null_resource", - "name": "update_desired_count", - "provider": "provider[\"registry.opentofu.org/hashicorp/null\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "id": "1861562314639812291", - "triggers": { - "desired_count": "3" - } - }, - "sensitive_attributes": [], - "dependencies": [ - "aws_service_discovery_http_namespace.this", - "data.aws_availability_zones.available", - "module.alb.aws_lb_target_group.this", - "module.ecs_cluster.aws_cloudwatch_log_group.this", - "module.ecs_cluster.aws_ecs_cluster.this", - "module.ecs_service.aws_ecs_service.ignore_task_definition", - "module.ecs_service.aws_ecs_service.this", - "module.ecs_service.aws_ecs_task_definition.this", - "module.ecs_service.aws_iam_policy.service", - "module.ecs_service.aws_iam_role.service", - "module.ecs_service.aws_iam_role.task_exec", - "module.ecs_service.aws_iam_role.tasks", - "module.ecs_service.aws_iam_role_policy_attachment.service", - "module.ecs_service.aws_security_group.this", - "module.ecs_service.data.aws_caller_identity.current", - "module.ecs_service.data.aws_ecs_task_definition.this", - "module.ecs_service.data.aws_iam_policy_document.service", - "module.ecs_service.data.aws_iam_policy_document.service_assume", - "module.ecs_service.data.aws_iam_policy_document.task_exec_assume", - "module.ecs_service.data.aws_iam_policy_document.tasks_assume", - "module.ecs_service.data.aws_partition.current", - "module.ecs_service.data.aws_region.current", - "module.ecs_service.data.aws_subnet.this", - "module.ecs_service.module.container_definition.aws_cloudwatch_log_group.this", - "module.ecs_service.module.container_definition.data.aws_region.current", - "module.vpc.aws_subnet.private", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ] - } - ] - }, - { - "module": "module.alb", - "mode": "data", - "type": "aws_partition", - "name": "current", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "dns_suffix": "amazonaws.com", - "id": "aws", - "partition": "aws", - "reverse_dns_prefix": "com.amazonaws" - }, - "sensitive_attributes": [] - } - ] - }, - { - "module": "module.alb", - "mode": "managed", - "type": "aws_lb", - "name": "this", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "access_logs": [ - { - "bucket": "", - "enabled": false, - "prefix": "" - } - ], - "arn": "arn:aws:elasticloadbalancing:eu-west-1:355614969320:loadbalancer/app/chat-app-demo/9cf8ea90daa21fc1", - "arn_suffix": "app/chat-app-demo/9cf8ea90daa21fc1", - "connection_logs": [ - { - "bucket": "", - "enabled": false, - "prefix": "" - } - ], - "customer_owned_ipv4_pool": "", - "desync_mitigation_mode": "defensive", - "dns_name": "chat-app-demo-2046813119.eu-west-1.elb.amazonaws.com", - "dns_record_client_routing_policy": null, - "drop_invalid_header_fields": true, - "enable_cross_zone_load_balancing": true, - "enable_deletion_protection": false, - "enable_http2": true, - "enable_tls_version_and_cipher_suite_headers": false, - "enable_waf_fail_open": false, - "enable_xff_client_port": false, - "enforce_security_group_inbound_rules_on_private_link_traffic": "", - "id": "arn:aws:elasticloadbalancing:eu-west-1:355614969320:loadbalancer/app/chat-app-demo/9cf8ea90daa21fc1", - "idle_timeout": 60, - "internal": false, - "ip_address_type": "ipv4", - "load_balancer_type": "application", - "name": "chat-app-demo", - "name_prefix": "", - "preserve_host_header": false, - "security_groups": [ - "sg-062ee908d87078647" - ], - "subnet_mapping": [ - { - "allocation_id": "", - "ipv6_address": "", - "outpost_id": "", - "private_ipv4_address": "", - "subnet_id": "subnet-020b69a138405c937" - }, - { - "allocation_id": "", - "ipv6_address": "", - "outpost_id": "", - "private_ipv4_address": "", - "subnet_id": "subnet-08c4d0f2a7397c568" - }, - { - "allocation_id": "", - "ipv6_address": "", - "outpost_id": "", - "private_ipv4_address": "", - "subnet_id": "subnet-0b0690ac033109c33" - } - ], - "subnets": [ - "subnet-020b69a138405c937", - "subnet-08c4d0f2a7397c568", - "subnet-0b0690ac033109c33" - ], - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs", - "terraform-aws-modules": "alb" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs", - "terraform-aws-modules": "alb" - }, - "timeouts": { - "create": null, - "delete": null, - "update": null - }, - "vpc_id": "vpc-036c1349ddd4a46ce", - "xff_header_processing_mode": "append", - "zone_id": "Z32O12XQLNTSW2" - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.aws_availability_zones.available", - "module.alb.aws_security_group.this", - "module.vpc.aws_subnet.public", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ] - } - ] - }, - { - "module": "module.alb", - "mode": "managed", - "type": "aws_lb_listener", - "name": "this", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": "ex_http", - "schema_version": 0, - "attributes": { - "alpn_policy": null, - "arn": "arn:aws:elasticloadbalancing:eu-west-1:355614969320:listener/app/chat-app-demo/9cf8ea90daa21fc1/ce67dddf7aaf975b", - "certificate_arn": null, - "default_action": [ - { - "authenticate_cognito": [], - "authenticate_oidc": [], - "fixed_response": [], - "forward": [], - "order": 1, - "redirect": [], - "target_group_arn": "arn:aws:elasticloadbalancing:eu-west-1:355614969320:targetgroup/tf-20240415175838841400000009/035dee14007ac0e1", - "type": "forward" - } - ], - "id": "arn:aws:elasticloadbalancing:eu-west-1:355614969320:listener/app/chat-app-demo/9cf8ea90daa21fc1/ce67dddf7aaf975b", - "load_balancer_arn": "arn:aws:elasticloadbalancing:eu-west-1:355614969320:loadbalancer/app/chat-app-demo/9cf8ea90daa21fc1", - "mutual_authentication": [], - "port": 80, - "protocol": "HTTP", - "ssl_policy": "", - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs", - "terraform-aws-modules": "alb" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs", - "terraform-aws-modules": "alb" - }, - "timeouts": null - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDAsInVwZGF0ZSI6MzAwMDAwMDAwMDAwfX0=", - "dependencies": [ - "data.aws_availability_zones.available", - "module.alb.aws_lb.this", - "module.alb.aws_lb_target_group.this", - "module.alb.aws_security_group.this", - "module.vpc.aws_subnet.public", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ] - } - ] - }, - { - "module": "module.alb", - "mode": "managed", - "type": "aws_lb_target_group", - "name": "this", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": "ex_ecs", - "schema_version": 0, - "attributes": { - "arn": "arn:aws:elasticloadbalancing:eu-west-1:355614969320:targetgroup/tf-20240415175838841400000009/035dee14007ac0e1", - "arn_suffix": "targetgroup/tf-20240415175838841400000009/035dee14007ac0e1", - "connection_termination": null, - "deregistration_delay": "5", - "health_check": [ - { - "enabled": true, - "healthy_threshold": 5, - "interval": 30, - "matcher": "200", - "path": "/", - "port": "traffic-port", - "protocol": "HTTP", - "timeout": 5, - "unhealthy_threshold": 2 - } - ], - "id": "arn:aws:elasticloadbalancing:eu-west-1:355614969320:targetgroup/tf-20240415175838841400000009/035dee14007ac0e1", - "ip_address_type": "ipv4", - "lambda_multi_value_headers_enabled": false, - "load_balancer_arns": [ - "arn:aws:elasticloadbalancing:eu-west-1:355614969320:loadbalancer/app/chat-app-demo/9cf8ea90daa21fc1" - ], - "load_balancing_algorithm_type": "round_robin", - "load_balancing_anomaly_mitigation": "off", - "load_balancing_cross_zone_enabled": "true", - "name": "tf-20240415175838841400000009", - "name_prefix": "tf-", - "port": 80, - "preserve_client_ip": null, - "protocol": "HTTP", - "protocol_version": "HTTP1", - "proxy_protocol_v2": false, - "slow_start": 0, - "stickiness": [ - { - "cookie_duration": 86400, - "cookie_name": "", - "enabled": false, - "type": "lb_cookie" - } - ], - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs", - "terraform-aws-modules": "alb" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs", - "terraform-aws-modules": "alb" - }, - "target_failover": [ - { - "on_deregistration": null, - "on_unhealthy": null - } - ], - "target_health_state": [ - { - "enable_unhealthy_connection_termination": null - } - ], - "target_type": "ip", - "vpc_id": "vpc-036c1349ddd4a46ce" - }, - "sensitive_attributes": [], - "private": "bnVsbA==", - "dependencies": [ - "module.vpc.aws_vpc.this" - ], - "create_before_destroy": true - } - ] - }, - { - "module": "module.alb", - "mode": "managed", - "type": "aws_security_group", - "name": "this", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 1, - "attributes": { - "arn": "arn:aws:ec2:eu-west-1:355614969320:security-group/sg-062ee908d87078647", - "description": "Security group for chat-app-demo application load balancer", - "egress": [ - { - "cidr_blocks": [ - "10.0.0.0/16" - ], - "description": "", - "from_port": 0, - "ipv6_cidr_blocks": [], - "prefix_list_ids": [], - "protocol": "-1", - "security_groups": [], - "self": false, - "to_port": 0 - } - ], - "id": "sg-062ee908d87078647", - "ingress": [ - { - "cidr_blocks": [ - "0.0.0.0/0" - ], - "description": "", - "from_port": 80, - "ipv6_cidr_blocks": [], - "prefix_list_ids": [], - "protocol": "tcp", - "security_groups": [], - "self": false, - "to_port": 80 - } - ], - "name": "chat-app-demo-2024041517583920720000000a", - "name_prefix": "chat-app-demo-", - "owner_id": "355614969320", - "revoke_rules_on_delete": false, - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs", - "terraform-aws-modules": "alb" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs", - "terraform-aws-modules": "alb" - }, - "timeouts": null, - "vpc_id": "vpc-036c1349ddd4a46ce" - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6OTAwMDAwMDAwMDAwfSwic2NoZW1hX3ZlcnNpb24iOiIxIn0=", - "dependencies": [ - "module.vpc.aws_vpc.this" - ], - "create_before_destroy": true - } - ] - }, - { - "module": "module.alb", - "mode": "managed", - "type": "aws_vpc_security_group_egress_rule", - "name": "this", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": "all", - "schema_version": 0, - "attributes": { - "arn": "arn:aws:ec2:eu-west-1:355614969320:security-group-rule/sgr-042c963363f21beb4", - "cidr_ipv4": "10.0.0.0/16", - "cidr_ipv6": null, - "description": null, - "from_port": null, - "id": "sgr-042c963363f21beb4", - "ip_protocol": "-1", - "prefix_list_id": null, - "referenced_security_group_id": null, - "security_group_id": "sg-062ee908d87078647", - "security_group_rule_id": "sgr-042c963363f21beb4", - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs", - "terraform-aws-modules": "alb" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs", - "terraform-aws-modules": "alb" - }, - "to_port": null - }, - "sensitive_attributes": [], - "dependencies": [ - "module.alb.aws_security_group.this", - "module.vpc.aws_vpc.this" - ] - } - ] - }, - { - "module": "module.alb", - "mode": "managed", - "type": "aws_vpc_security_group_ingress_rule", - "name": "this", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": "all_http", - "schema_version": 0, - "attributes": { - "arn": "arn:aws:ec2:eu-west-1:355614969320:security-group-rule/sgr-0816e54f4b12b00ca", - "cidr_ipv4": "0.0.0.0/0", - "cidr_ipv6": null, - "description": null, - "from_port": 80, - "id": "sgr-0816e54f4b12b00ca", - "ip_protocol": "tcp", - "prefix_list_id": null, - "referenced_security_group_id": null, - "security_group_id": "sg-062ee908d87078647", - "security_group_rule_id": "sgr-0816e54f4b12b00ca", - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs", - "terraform-aws-modules": "alb" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs", - "terraform-aws-modules": "alb" - }, - "to_port": 80 - }, - "sensitive_attributes": [], - "dependencies": [ - "module.alb.aws_security_group.this", - "module.vpc.aws_vpc.this" - ] - } - ] - }, - { - "module": "module.ecs_cluster", - "mode": "managed", - "type": "aws_cloudwatch_log_group", - "name": "this", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "arn": "arn:aws:logs:eu-west-1:355614969320:log-group:/aws/ecs/chat-app-demo", - "id": "/aws/ecs/chat-app-demo", - "kms_key_id": "", - "log_group_class": "STANDARD", - "name": "/aws/ecs/chat-app-demo", - "name_prefix": "", - "retention_in_days": 90, - "skip_destroy": false, - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - } - }, - "sensitive_attributes": [], - "private": "bnVsbA==" - } - ] - }, - { - "module": "module.ecs_cluster", - "mode": "managed", - "type": "aws_ecs_cluster", - "name": "this", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "arn": "arn:aws:ecs:eu-west-1:355614969320:cluster/chat-app-demo", - "configuration": [ - { - "execute_command_configuration": [ - { - "kms_key_id": "", - "log_configuration": [], - "logging": "DEFAULT" - } - ] - } - ], - "id": "arn:aws:ecs:eu-west-1:355614969320:cluster/chat-app-demo", - "name": "chat-app-demo", - "service_connect_defaults": [], - "setting": [ - { - "name": "containerInsights", - "value": "enabled" - } - ], - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - } - }, - "sensitive_attributes": [], - "private": "bnVsbA==", - "dependencies": [ - "module.ecs_cluster.aws_cloudwatch_log_group.this" - ] - } - ] - }, - { - "module": "module.ecs_cluster", - "mode": "managed", - "type": "aws_ecs_cluster_capacity_providers", - "name": "this", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "capacity_providers": [ - "FARGATE", - "FARGATE_SPOT" - ], - "cluster_name": "chat-app-demo", - "default_capacity_provider_strategy": [ - { - "base": 0, - "capacity_provider": "FARGATE_SPOT", - "weight": 50 - }, - { - "base": 20, - "capacity_provider": "FARGATE", - "weight": 50 - } - ], - "id": "chat-app-demo" - }, - "sensitive_attributes": [], - "private": "bnVsbA==", - "dependencies": [ - "module.ecs_cluster.aws_cloudwatch_log_group.this", - "module.ecs_cluster.aws_ecs_capacity_provider.this", - "module.ecs_cluster.aws_ecs_cluster.this" - ] - } - ] - }, - { - "module": "module.ecs_service", - "mode": "data", - "type": "aws_caller_identity", - "name": "current", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "account_id": "355614969320", - "arn": "arn:aws:iam::355614969320:user/rharvey", - "id": "355614969320", - "user_id": "AIDAIICBK3Q64EOQBD5HM" - }, - "sensitive_attributes": [] - } - ] - }, - { - "module": "module.ecs_service", - "mode": "data", - "type": "aws_ecs_task_definition", - "name": "this", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "arn": "arn:aws:ecs:eu-west-1:355614969320:task-definition/chat-app-demo:11", - "arn_without_revision": "arn:aws:ecs:eu-west-1:355614969320:task-definition/chat-app-demo", - "execution_role_arn": "arn:aws:iam::355614969320:role/chat-app-demo-20240415175826752300000004", - "family": "chat-app-demo", - "id": "arn:aws:ecs:eu-west-1:355614969320:task-definition/chat-app-demo:11", - "network_mode": "awsvpc", - "revision": 11, - "status": "ACTIVE", - "task_definition": "chat-app-demo", - "task_role_arn": "arn:aws:iam::355614969320:role/chat-app-demo-20240415175826751700000003" - }, - "sensitive_attributes": [] - } - ] - }, - { - "module": "module.ecs_service", - "mode": "data", - "type": "aws_iam_policy_document", - "name": "task_exec", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "id": "1415633931", - "json": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"Logs\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"logs:PutLogEvents\",\n \"logs:CreateLogStream\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"ECR\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ecr:GetDownloadUrlForLayer\",\n \"ecr:GetAuthorizationToken\",\n \"ecr:BatchGetImage\",\n \"ecr:BatchCheckLayerAvailability\"\n ],\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"GetSSMParams\",\n \"Effect\": \"Allow\",\n \"Action\": \"ssm:GetParameters\",\n \"Resource\": \"arn:aws:ssm:*:*:parameter/*\"\n },\n {\n \"Sid\": \"GetSecrets\",\n \"Effect\": \"Allow\",\n \"Action\": \"secretsmanager:GetSecretValue\",\n \"Resource\": \"arn:aws:secretsmanager:*:*:secret:*\"\n }\n ]\n}", - "override_json": null, - "override_policy_documents": null, - "policy_id": null, - "source_json": null, - "source_policy_documents": null, - "statement": [ - { - "actions": [ - "logs:CreateLogStream", - "logs:PutLogEvents" - ], - "condition": [], - "effect": "Allow", - "not_actions": [], - "not_principals": [], - "not_resources": [], - "principals": [], - "resources": [ - "*" - ], - "sid": "Logs" - }, - { - "actions": [ - "ecr:BatchCheckLayerAvailability", - "ecr:BatchGetImage", - "ecr:GetAuthorizationToken", - "ecr:GetDownloadUrlForLayer" - ], - "condition": [], - "effect": "Allow", - "not_actions": [], - "not_principals": [], - "not_resources": [], - "principals": [], - "resources": [ - "*" - ], - "sid": "ECR" - }, - { - "actions": [ - "ssm:GetParameters" - ], - "condition": [], - "effect": "Allow", - "not_actions": [], - "not_principals": [], - "not_resources": [], - "principals": [], - "resources": [ - "arn:aws:ssm:*:*:parameter/*" - ], - "sid": "GetSSMParams" - }, - { - "actions": [ - "secretsmanager:GetSecretValue" - ], - "condition": [], - "effect": "Allow", - "not_actions": [], - "not_principals": [], - "not_resources": [], - "principals": [], - "resources": [ - "arn:aws:secretsmanager:*:*:secret:*" - ], - "sid": "GetSecrets" - } - ], - "version": "2012-10-17" - }, - "sensitive_attributes": [] - } - ] - }, - { - "module": "module.ecs_service", - "mode": "data", - "type": "aws_iam_policy_document", - "name": "task_exec_assume", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "id": "2291109037", - "json": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"ECSTaskExecutionAssumeRole\",\n \"Effect\": \"Allow\",\n \"Action\": \"sts:AssumeRole\",\n \"Principal\": {\n \"Service\": \"ecs-tasks.amazonaws.com\"\n }\n }\n ]\n}", - "override_json": null, - "override_policy_documents": null, - "policy_id": null, - "source_json": null, - "source_policy_documents": null, - "statement": [ - { - "actions": [ - "sts:AssumeRole" - ], - "condition": [], - "effect": "Allow", - "not_actions": [], - "not_principals": [], - "not_resources": [], - "principals": [ - { - "identifiers": [ - "ecs-tasks.amazonaws.com" - ], - "type": "Service" - } - ], - "resources": [], - "sid": "ECSTaskExecutionAssumeRole" - } - ], - "version": "2012-10-17" - }, - "sensitive_attributes": [] - } - ] - }, - { - "module": "module.ecs_service", - "mode": "data", - "type": "aws_iam_policy_document", - "name": "tasks", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "id": "757765849", - "json": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"ECSExec\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ssmmessages:OpenDataChannel\",\n \"ssmmessages:OpenControlChannel\",\n \"ssmmessages:CreateDataChannel\",\n \"ssmmessages:CreateControlChannel\"\n ],\n \"Resource\": \"*\"\n }\n ]\n}", - "override_json": null, - "override_policy_documents": null, - "policy_id": null, - "source_json": null, - "source_policy_documents": null, - "statement": [ - { - "actions": [ - "ssmmessages:CreateControlChannel", - "ssmmessages:CreateDataChannel", - "ssmmessages:OpenControlChannel", - "ssmmessages:OpenDataChannel" - ], - "condition": [], - "effect": "Allow", - "not_actions": [], - "not_principals": [], - "not_resources": [], - "principals": [], - "resources": [ - "*" - ], - "sid": "ECSExec" - } - ], - "version": "2012-10-17" - }, - "sensitive_attributes": [] - } - ] - }, - { - "module": "module.ecs_service", - "mode": "data", - "type": "aws_iam_policy_document", - "name": "tasks_assume", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "id": "780565365", - "json": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"ECSTasksAssumeRole\",\n \"Effect\": \"Allow\",\n \"Action\": \"sts:AssumeRole\",\n \"Principal\": {\n \"Service\": \"ecs-tasks.amazonaws.com\"\n },\n \"Condition\": {\n \"ArnLike\": {\n \"aws:SourceArn\": \"arn:aws:ecs:eu-west-1:355614969320:*\"\n },\n \"StringEquals\": {\n \"aws:SourceAccount\": \"355614969320\"\n }\n }\n }\n ]\n}", - "override_json": null, - "override_policy_documents": null, - "policy_id": null, - "source_json": null, - "source_policy_documents": null, - "statement": [ - { - "actions": [ - "sts:AssumeRole" - ], - "condition": [ - { - "test": "ArnLike", - "values": [ - "arn:aws:ecs:eu-west-1:355614969320:*" - ], - "variable": "aws:SourceArn" - }, - { - "test": "StringEquals", - "values": [ - "355614969320" - ], - "variable": "aws:SourceAccount" - } - ], - "effect": "Allow", - "not_actions": [], - "not_principals": [], - "not_resources": [], - "principals": [ - { - "identifiers": [ - "ecs-tasks.amazonaws.com" - ], - "type": "Service" - } - ], - "resources": [], - "sid": "ECSTasksAssumeRole" - } - ], - "version": "2012-10-17" - }, - "sensitive_attributes": [] - } - ] - }, - { - "module": "module.ecs_service", - "mode": "data", - "type": "aws_partition", - "name": "current", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "dns_suffix": "amazonaws.com", - "id": "aws", - "partition": "aws", - "reverse_dns_prefix": "com.amazonaws" - }, - "sensitive_attributes": [] - } - ] - }, - { - "module": "module.ecs_service", - "mode": "data", - "type": "aws_region", - "name": "current", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "description": "Europe (Ireland)", - "endpoint": "ec2.eu-west-1.amazonaws.com", - "id": "eu-west-1", - "name": "eu-west-1" - }, - "sensitive_attributes": [] - } - ] - }, - { - "module": "module.ecs_service", - "mode": "data", - "type": "aws_subnet", - "name": "this", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "arn": "arn:aws:ec2:eu-west-1:355614969320:subnet/subnet-0d743b4c62e3de6de", - "assign_ipv6_address_on_creation": false, - "availability_zone": "eu-west-1a", - "availability_zone_id": "euw1-az1", - "available_ip_address_count": 4091, - "cidr_block": "10.0.0.0/20", - "customer_owned_ipv4_pool": "", - "default_for_az": false, - "enable_dns64": false, - "enable_lni_at_device_index": 0, - "enable_resource_name_dns_a_record_on_launch": false, - "enable_resource_name_dns_aaaa_record_on_launch": false, - "filter": null, - "id": "subnet-0d743b4c62e3de6de", - "ipv6_cidr_block": "", - "ipv6_cidr_block_association_id": "", - "ipv6_native": false, - "map_customer_owned_ip_on_launch": false, - "map_public_ip_on_launch": false, - "outpost_arn": "", - "owner_id": "355614969320", - "private_dns_hostname_type_on_launch": "ip-name", - "state": "available", - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "timeouts": null, - "vpc_id": "vpc-036c1349ddd4a46ce" - }, - "sensitive_attributes": [] - } - ] - }, - { - "module": "module.ecs_service", - "mode": "managed", - "type": "aws_appautoscaling_policy", - "name": "this", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": "cpu", - "schema_version": 0, - "attributes": { - "alarm_arns": [ - "arn:aws:cloudwatch:eu-west-1:355614969320:alarm:TargetTracking-service/chat-app-demo/chat-app-demo-AlarmHigh-4a15096b-24f3-4d5e-92c7-2dcad838dd96", - "arn:aws:cloudwatch:eu-west-1:355614969320:alarm:TargetTracking-service/chat-app-demo/chat-app-demo-AlarmLow-7517ee09-8ead-4ef7-96a2-1da4d3ca50f8" - ], - "arn": "arn:aws:autoscaling:eu-west-1:355614969320:scalingPolicy:4124fdd5-6308-45e0-bb88-59b50bd7e1e5:resource/ecs/service/chat-app-demo/chat-app-demo:policyName/cpu", - "id": "cpu", - "name": "cpu", - "policy_type": "TargetTrackingScaling", - "resource_id": "service/chat-app-demo/chat-app-demo", - "scalable_dimension": "ecs:service:DesiredCount", - "service_namespace": "ecs", - "step_scaling_policy_configuration": [], - "target_tracking_scaling_policy_configuration": [ - { - "customized_metric_specification": [], - "disable_scale_in": false, - "predefined_metric_specification": [ - { - "predefined_metric_type": "ECSServiceAverageCPUUtilization", - "resource_label": "" - } - ], - "scale_in_cooldown": 300, - "scale_out_cooldown": 60, - "target_value": 75 - } - ] - }, - "sensitive_attributes": [], - "private": "bnVsbA==", - "dependencies": [ - "aws_service_discovery_http_namespace.this", - "data.aws_availability_zones.available", - "module.alb.aws_lb_target_group.this", - "module.ecs_cluster.aws_cloudwatch_log_group.this", - "module.ecs_cluster.aws_ecs_cluster.this", - "module.ecs_service.aws_appautoscaling_target.this", - "module.ecs_service.aws_ecs_service.ignore_task_definition", - "module.ecs_service.aws_ecs_service.this", - "module.ecs_service.aws_ecs_task_definition.this", - "module.ecs_service.aws_iam_policy.service", - "module.ecs_service.aws_iam_role.service", - "module.ecs_service.aws_iam_role.task_exec", - "module.ecs_service.aws_iam_role.tasks", - "module.ecs_service.aws_iam_role_policy_attachment.service", - "module.ecs_service.aws_security_group.this", - "module.ecs_service.data.aws_caller_identity.current", - "module.ecs_service.data.aws_ecs_task_definition.this", - "module.ecs_service.data.aws_iam_policy_document.service", - "module.ecs_service.data.aws_iam_policy_document.service_assume", - "module.ecs_service.data.aws_iam_policy_document.task_exec_assume", - "module.ecs_service.data.aws_iam_policy_document.tasks_assume", - "module.ecs_service.data.aws_partition.current", - "module.ecs_service.data.aws_region.current", - "module.ecs_service.data.aws_subnet.this", - "module.ecs_service.module.container_definition.aws_cloudwatch_log_group.this", - "module.ecs_service.module.container_definition.data.aws_region.current", - "module.vpc.aws_subnet.private", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ] - }, - { - "index_key": "memory", - "schema_version": 0, - "attributes": { - "alarm_arns": [ - "arn:aws:cloudwatch:eu-west-1:355614969320:alarm:TargetTracking-service/chat-app-demo/chat-app-demo-AlarmHigh-e1ac6d4d-a925-4f16-82e1-7265670bc5d7", - "arn:aws:cloudwatch:eu-west-1:355614969320:alarm:TargetTracking-service/chat-app-demo/chat-app-demo-AlarmLow-b31315ea-bbd0-4c22-8c1d-52aaafc579d3" - ], - "arn": "arn:aws:autoscaling:eu-west-1:355614969320:scalingPolicy:4124fdd5-6308-45e0-bb88-59b50bd7e1e5:resource/ecs/service/chat-app-demo/chat-app-demo:policyName/memory", - "id": "memory", - "name": "memory", - "policy_type": "TargetTrackingScaling", - "resource_id": "service/chat-app-demo/chat-app-demo", - "scalable_dimension": "ecs:service:DesiredCount", - "service_namespace": "ecs", - "step_scaling_policy_configuration": [], - "target_tracking_scaling_policy_configuration": [ - { - "customized_metric_specification": [], - "disable_scale_in": false, - "predefined_metric_specification": [ - { - "predefined_metric_type": "ECSServiceAverageMemoryUtilization", - "resource_label": "" - } - ], - "scale_in_cooldown": 300, - "scale_out_cooldown": 60, - "target_value": 75 - } - ] - }, - "sensitive_attributes": [], - "private": "bnVsbA==", - "dependencies": [ - "aws_service_discovery_http_namespace.this", - "data.aws_availability_zones.available", - "module.alb.aws_lb_target_group.this", - "module.ecs_cluster.aws_cloudwatch_log_group.this", - "module.ecs_cluster.aws_ecs_cluster.this", - "module.ecs_service.aws_appautoscaling_target.this", - "module.ecs_service.aws_ecs_service.ignore_task_definition", - "module.ecs_service.aws_ecs_service.this", - "module.ecs_service.aws_ecs_task_definition.this", - "module.ecs_service.aws_iam_policy.service", - "module.ecs_service.aws_iam_role.service", - "module.ecs_service.aws_iam_role.task_exec", - "module.ecs_service.aws_iam_role.tasks", - "module.ecs_service.aws_iam_role_policy_attachment.service", - "module.ecs_service.aws_security_group.this", - "module.ecs_service.data.aws_caller_identity.current", - "module.ecs_service.data.aws_ecs_task_definition.this", - "module.ecs_service.data.aws_iam_policy_document.service", - "module.ecs_service.data.aws_iam_policy_document.service_assume", - "module.ecs_service.data.aws_iam_policy_document.task_exec_assume", - "module.ecs_service.data.aws_iam_policy_document.tasks_assume", - "module.ecs_service.data.aws_partition.current", - "module.ecs_service.data.aws_region.current", - "module.ecs_service.data.aws_subnet.this", - "module.ecs_service.module.container_definition.aws_cloudwatch_log_group.this", - "module.ecs_service.module.container_definition.data.aws_region.current", - "module.vpc.aws_subnet.private", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ] - } - ] - }, - { - "module": "module.ecs_service", - "mode": "managed", - "type": "aws_appautoscaling_target", - "name": "this", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "arn": "arn:aws:application-autoscaling:eu-west-1:355614969320:scalable-target/0ec54124fdd5630845e0bb8859b50bd7e1e5", - "id": "service/chat-app-demo/chat-app-demo", - "max_capacity": 10, - "min_capacity": 1, - "resource_id": "service/chat-app-demo/chat-app-demo", - "role_arn": "arn:aws:iam::355614969320:role/aws-service-role/ecs.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ECSService", - "scalable_dimension": "ecs:service:DesiredCount", - "service_namespace": "ecs", - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - } - }, - "sensitive_attributes": [], - "private": "bnVsbA==", - "dependencies": [ - "aws_service_discovery_http_namespace.this", - "data.aws_availability_zones.available", - "module.alb.aws_lb_target_group.this", - "module.ecs_cluster.aws_cloudwatch_log_group.this", - "module.ecs_cluster.aws_ecs_cluster.this", - "module.ecs_service.aws_ecs_service.ignore_task_definition", - "module.ecs_service.aws_ecs_service.this", - "module.ecs_service.aws_ecs_task_definition.this", - "module.ecs_service.aws_iam_policy.service", - "module.ecs_service.aws_iam_role.service", - "module.ecs_service.aws_iam_role.task_exec", - "module.ecs_service.aws_iam_role.tasks", - "module.ecs_service.aws_iam_role_policy_attachment.service", - "module.ecs_service.aws_security_group.this", - "module.ecs_service.data.aws_caller_identity.current", - "module.ecs_service.data.aws_ecs_task_definition.this", - "module.ecs_service.data.aws_iam_policy_document.service", - "module.ecs_service.data.aws_iam_policy_document.service_assume", - "module.ecs_service.data.aws_iam_policy_document.task_exec_assume", - "module.ecs_service.data.aws_iam_policy_document.tasks_assume", - "module.ecs_service.data.aws_partition.current", - "module.ecs_service.data.aws_region.current", - "module.ecs_service.data.aws_subnet.this", - "module.ecs_service.module.container_definition.aws_cloudwatch_log_group.this", - "module.ecs_service.module.container_definition.data.aws_region.current", - "module.vpc.aws_subnet.private", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ] - } - ] - }, - { - "module": "module.ecs_service", - "mode": "managed", - "type": "aws_ecs_service", - "name": "this", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "alarms": [], - "capacity_provider_strategy": [], - "cluster": "arn:aws:ecs:eu-west-1:355614969320:cluster/chat-app-demo", - "deployment_circuit_breaker": [ - { - "enable": false, - "rollback": false - } - ], - "deployment_controller": [ - { - "type": "ECS" - } - ], - "deployment_maximum_percent": 200, - "deployment_minimum_healthy_percent": 66, - "desired_count": 1, - "enable_ecs_managed_tags": true, - "enable_execute_command": true, - "force_new_deployment": true, - "health_check_grace_period_seconds": 0, - "iam_role": "/aws-service-role/ecs.amazonaws.com/AWSServiceRoleForECS", - "id": "arn:aws:ecs:eu-west-1:355614969320:service/chat-app-demo/chat-app-demo", - "launch_type": "FARGATE", - "load_balancer": [ - { - "container_name": "chat-app", - "container_port": 3000, - "elb_name": "", - "target_group_arn": "arn:aws:elasticloadbalancing:eu-west-1:355614969320:targetgroup/tf-20240415175838841400000009/035dee14007ac0e1" - } - ], - "name": "chat-app-demo", - "network_configuration": [ - { - "assign_public_ip": false, - "security_groups": [ - "sg-05ad2646d8cc5f4a3" - ], - "subnets": [ - "subnet-03484242e7e025e98", - "subnet-08a36304b08dcd4df", - "subnet-0d743b4c62e3de6de" - ] - } - ], - "ordered_placement_strategy": [], - "placement_constraints": [], - "platform_version": "LATEST", - "propagate_tags": "NONE", - "scheduling_strategy": "REPLICA", - "service_connect_configuration": [ - { - "enabled": true, - "log_configuration": [], - "namespace": "arn:aws:servicediscovery:eu-west-1:355614969320:namespace/ns-7exezy2cesetek5e", - "service": [ - { - "client_alias": [ - { - "dns_name": "chat-app", - "port": 3000 - } - ], - "discovery_name": "chat-app", - "ingress_port_override": 0, - "port_name": "chat-app", - "timeout": [], - "tls": [] - } - ] - } - ], - "service_registries": [], - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs", - "ServiceTag": "Tag on service level" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs", - "ServiceTag": "Tag on service level" - }, - "task_definition": "chat-app-demo:11", - "timeouts": { - "create": null, - "delete": null, - "update": null - }, - "triggers": {}, - "wait_for_steady_state": false - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "aws_service_discovery_http_namespace.this", - "data.aws_availability_zones.available", - "module.alb.aws_lb_target_group.this", - "module.ecs_cluster.aws_cloudwatch_log_group.this", - "module.ecs_cluster.aws_ecs_cluster.this", - "module.ecs_service.aws_ecs_task_definition.this", - "module.ecs_service.aws_iam_policy.service", - "module.ecs_service.aws_iam_role.service", - "module.ecs_service.aws_iam_role.task_exec", - "module.ecs_service.aws_iam_role.tasks", - "module.ecs_service.aws_iam_role_policy_attachment.service", - "module.ecs_service.aws_security_group.this", - "module.ecs_service.data.aws_caller_identity.current", - "module.ecs_service.data.aws_ecs_task_definition.this", - "module.ecs_service.data.aws_iam_policy_document.service", - "module.ecs_service.data.aws_iam_policy_document.service_assume", - "module.ecs_service.data.aws_iam_policy_document.task_exec_assume", - "module.ecs_service.data.aws_iam_policy_document.tasks_assume", - "module.ecs_service.data.aws_partition.current", - "module.ecs_service.data.aws_region.current", - "module.ecs_service.data.aws_subnet.this", - "module.ecs_service.module.container_definition.aws_cloudwatch_log_group.this", - "module.ecs_service.module.container_definition.data.aws_region.current", - "module.vpc.aws_subnet.private", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ] - } - ] - }, - { - "module": "module.ecs_service", - "mode": "managed", - "type": "aws_ecs_task_definition", - "name": "this", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 1, - "attributes": { - "arn": "arn:aws:ecs:eu-west-1:355614969320:task-definition/chat-app-demo:11", - "arn_without_revision": "arn:aws:ecs:eu-west-1:355614969320:task-definition/chat-app-demo", - "container_definitions": "[{\"cpu\":512,\"environment\":[{\"name\":\"REDIS_ENDPOINT\",\"value\":\"valkey\"}],\"essential\":true,\"image\":\"richarvey/chat-app:latest\",\"interactive\":false,\"linuxParameters\":{\"initProcessEnabled\":true},\"logConfiguration\":{\"logDriver\":\"awslogs\",\"options\":{\"awslogs-group\":\"/aws/ecs/chat-app-demo/chat-app\",\"awslogs-region\":\"eu-west-1\",\"awslogs-stream-prefix\":\"ecs\"}},\"memory\":1024,\"memoryReservation\":100,\"mountPoints\":[],\"name\":\"chat-app\",\"portMappings\":[{\"containerPort\":3000,\"hostPort\":3000,\"name\":\"chat-app\",\"protocol\":\"tcp\"}],\"privileged\":false,\"pseudoTerminal\":false,\"readonlyRootFilesystem\":true,\"startTimeout\":30,\"stopTimeout\":120,\"systemControls\":[],\"user\":\"0\",\"volumesFrom\":[]}]", - "cpu": "1024", - "ephemeral_storage": [], - "execution_role_arn": "arn:aws:iam::355614969320:role/chat-app-demo-20240415175826752300000004", - "family": "chat-app-demo", - "id": "chat-app-demo", - "inference_accelerator": [], - "ipc_mode": "", - "memory": "4096", - "network_mode": "awsvpc", - "pid_mode": "", - "placement_constraints": [], - "proxy_configuration": [], - "requires_compatibilities": [ - "FARGATE" - ], - "revision": 11, - "runtime_platform": [ - { - "cpu_architecture": "X86_64", - "operating_system_family": "LINUX" - } - ], - "skip_destroy": false, - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "task_role_arn": "arn:aws:iam::355614969320:role/chat-app-demo-20240415175826751700000003", - "track_latest": false, - "volume": [] - }, - "sensitive_attributes": [], - "private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==", - "dependencies": [ - "module.ecs_service.aws_iam_role.task_exec", - "module.ecs_service.aws_iam_role.tasks", - "module.ecs_service.data.aws_caller_identity.current", - "module.ecs_service.data.aws_iam_policy_document.task_exec_assume", - "module.ecs_service.data.aws_iam_policy_document.tasks_assume", - "module.ecs_service.data.aws_partition.current", - "module.ecs_service.data.aws_region.current", - "module.ecs_service.module.container_definition.aws_cloudwatch_log_group.this", - "module.ecs_service.module.container_definition.data.aws_region.current" - ], - "create_before_destroy": true - } - ] - }, - { - "module": "module.ecs_service", - "mode": "managed", - "type": "aws_iam_policy", - "name": "task_exec", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "arn": "arn:aws:iam::355614969320:policy/chat-app-demo-20240415175826751600000002", - "description": "Task execution role IAM policy", - "id": "arn:aws:iam::355614969320:policy/chat-app-demo-20240415175826751600000002", - "name": "chat-app-demo-20240415175826751600000002", - "name_prefix": "chat-app-demo-", - "path": "/", - "policy": "{\"Statement\":[{\"Action\":[\"logs:PutLogEvents\",\"logs:CreateLogStream\"],\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"Logs\"},{\"Action\":[\"ecr:GetDownloadUrlForLayer\",\"ecr:GetAuthorizationToken\",\"ecr:BatchGetImage\",\"ecr:BatchCheckLayerAvailability\"],\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"ECR\"},{\"Action\":\"ssm:GetParameters\",\"Effect\":\"Allow\",\"Resource\":\"arn:aws:ssm:*:*:parameter/*\",\"Sid\":\"GetSSMParams\"},{\"Action\":\"secretsmanager:GetSecretValue\",\"Effect\":\"Allow\",\"Resource\":\"arn:aws:secretsmanager:*:*:secret:*\",\"Sid\":\"GetSecrets\"}],\"Version\":\"2012-10-17\"}", - "policy_id": "ANPAVFTCNZXUCAOJRGKTW", - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - } - }, - "sensitive_attributes": [], - "private": "bnVsbA==", - "dependencies": [ - "module.ecs_service.data.aws_iam_policy_document.task_exec" - ] - } - ] - }, - { - "module": "module.ecs_service", - "mode": "managed", - "type": "aws_iam_role", - "name": "task_exec", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "arn": "arn:aws:iam::355614969320:role/chat-app-demo-20240415175826752300000004", - "assume_role_policy": "{\"Statement\":[{\"Action\":\"sts:AssumeRole\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"ecs-tasks.amazonaws.com\"},\"Sid\":\"ECSTaskExecutionAssumeRole\"}],\"Version\":\"2012-10-17\"}", - "create_date": "2024-04-15T17:58:27Z", - "description": "Task execution role for chat-app-demo", - "force_detach_policies": true, - "id": "chat-app-demo-20240415175826752300000004", - "inline_policy": [], - "managed_policy_arns": [ - "arn:aws:iam::355614969320:policy/chat-app-demo-20240415175826751600000002" - ], - "max_session_duration": 3600, - "name": "chat-app-demo-20240415175826752300000004", - "name_prefix": "chat-app-demo-", - "path": "/", - "permissions_boundary": "", - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "unique_id": "AROAVFTCNZXUE6COZ2VQP" - }, - "sensitive_attributes": [], - "private": "bnVsbA==", - "dependencies": [ - "module.ecs_service.data.aws_iam_policy_document.task_exec_assume" - ], - "create_before_destroy": true - } - ] - }, - { - "module": "module.ecs_service", - "mode": "managed", - "type": "aws_iam_role", - "name": "tasks", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "arn": "arn:aws:iam::355614969320:role/chat-app-demo-20240415175826751700000003", - "assume_role_policy": "{\"Statement\":[{\"Action\":\"sts:AssumeRole\",\"Condition\":{\"ArnLike\":{\"aws:SourceArn\":\"arn:aws:ecs:eu-west-1:355614969320:*\"},\"StringEquals\":{\"aws:SourceAccount\":\"355614969320\"}},\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"ecs-tasks.amazonaws.com\"},\"Sid\":\"ECSTasksAssumeRole\"}],\"Version\":\"2012-10-17\"}", - "create_date": "2024-04-15T17:58:27Z", - "description": "", - "force_detach_policies": true, - "id": "chat-app-demo-20240415175826751700000003", - "inline_policy": [ - { - "name": "chat-app-demo-20240415175827755900000005", - "policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Action\":[\"ssmmessages:OpenDataChannel\",\"ssmmessages:OpenControlChannel\",\"ssmmessages:CreateDataChannel\",\"ssmmessages:CreateControlChannel\"],\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"ECSExec\"}]}" - } - ], - "managed_policy_arns": [], - "max_session_duration": 3600, - "name": "chat-app-demo-20240415175826751700000003", - "name_prefix": "chat-app-demo-", - "path": "/", - "permissions_boundary": "", - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "unique_id": "AROAVFTCNZXUKB5TCDIJT" - }, - "sensitive_attributes": [], - "private": "bnVsbA==", - "dependencies": [ - "module.ecs_service.data.aws_caller_identity.current", - "module.ecs_service.data.aws_iam_policy_document.tasks_assume", - "module.ecs_service.data.aws_partition.current", - "module.ecs_service.data.aws_region.current" - ], - "create_before_destroy": true - } - ] - }, - { - "module": "module.ecs_service", - "mode": "managed", - "type": "aws_iam_role_policy", - "name": "tasks", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "id": "chat-app-demo-20240415175826751700000003:chat-app-demo-20240415175827755900000005", - "name": "chat-app-demo-20240415175827755900000005", - "name_prefix": "chat-app-demo-", - "policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Action\":[\"ssmmessages:OpenDataChannel\",\"ssmmessages:OpenControlChannel\",\"ssmmessages:CreateDataChannel\",\"ssmmessages:CreateControlChannel\"],\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"ECSExec\"}]}", - "role": "chat-app-demo-20240415175826751700000003" - }, - "sensitive_attributes": [], - "private": "bnVsbA==", - "dependencies": [ - "module.ecs_service.aws_iam_role.tasks", - "module.ecs_service.data.aws_caller_identity.current", - "module.ecs_service.data.aws_iam_policy_document.tasks", - "module.ecs_service.data.aws_iam_policy_document.tasks_assume", - "module.ecs_service.data.aws_partition.current", - "module.ecs_service.data.aws_region.current" - ] - } - ] - }, - { - "module": "module.ecs_service", - "mode": "managed", - "type": "aws_iam_role_policy_attachment", - "name": "task_exec", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "id": "chat-app-demo-20240415175826752300000004-20240415175827925700000006", - "policy_arn": "arn:aws:iam::355614969320:policy/chat-app-demo-20240415175826751600000002", - "role": "chat-app-demo-20240415175826752300000004" - }, - "sensitive_attributes": [], - "private": "bnVsbA==", - "dependencies": [ - "module.ecs_service.aws_iam_policy.task_exec", - "module.ecs_service.aws_iam_role.task_exec", - "module.ecs_service.data.aws_iam_policy_document.task_exec", - "module.ecs_service.data.aws_iam_policy_document.task_exec_assume" - ] - } - ] - }, - { - "module": "module.ecs_service", - "mode": "managed", - "type": "aws_security_group", - "name": "this", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 1, - "attributes": { - "arn": "arn:aws:ec2:eu-west-1:355614969320:security-group/sg-05ad2646d8cc5f4a3", - "description": "Managed by Terraform", - "egress": [ - { - "cidr_blocks": [ - "0.0.0.0/0" - ], - "description": "", - "from_port": 0, - "ipv6_cidr_blocks": [], - "prefix_list_ids": [], - "protocol": "-1", - "security_groups": [], - "self": false, - "to_port": 0 - } - ], - "id": "sg-05ad2646d8cc5f4a3", - "ingress": [ - { - "cidr_blocks": [], - "description": "Service port", - "from_port": 3000, - "ipv6_cidr_blocks": [], - "prefix_list_ids": [], - "protocol": "tcp", - "security_groups": [ - "sg-062ee908d87078647" - ], - "self": false, - "to_port": 3000 - } - ], - "name": "chat-app-demo-2024041517583976900000000b", - "name_prefix": "chat-app-demo-", - "owner_id": "355614969320", - "revoke_rules_on_delete": false, - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "timeouts": null, - "vpc_id": "vpc-036c1349ddd4a46ce" - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6OTAwMDAwMDAwMDAwfSwic2NoZW1hX3ZlcnNpb24iOiIxIn0=", - "dependencies": [ - "data.aws_availability_zones.available", - "module.ecs_service.data.aws_subnet.this", - "module.vpc.aws_subnet.private", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ], - "create_before_destroy": true - } - ] - }, - { - "module": "module.ecs_service", - "mode": "managed", - "type": "aws_security_group_rule", - "name": "this", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": "alb_ingress_3000", - "schema_version": 2, - "attributes": { - "cidr_blocks": null, - "description": "Service port", - "from_port": 3000, - "id": "sgrule-2432472228", - "ipv6_cidr_blocks": null, - "prefix_list_ids": null, - "protocol": "tcp", - "security_group_id": "sg-05ad2646d8cc5f4a3", - "security_group_rule_id": "sgr-03dd89774c14c810d", - "self": false, - "source_security_group_id": "sg-062ee908d87078647", - "timeouts": null, - "to_port": 3000, - "type": "ingress" - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDB9LCJzY2hlbWFfdmVyc2lvbiI6IjIifQ==", - "dependencies": [ - "data.aws_availability_zones.available", - "module.alb.aws_security_group.this", - "module.ecs_service.aws_security_group.this", - "module.ecs_service.data.aws_subnet.this", - "module.vpc.aws_subnet.private", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ] - }, - { - "index_key": "egress_all", - "schema_version": 2, - "attributes": { - "cidr_blocks": [ - "0.0.0.0/0" - ], - "description": "", - "from_port": 0, - "id": "sgrule-3369719713", - "ipv6_cidr_blocks": null, - "prefix_list_ids": null, - "protocol": "-1", - "security_group_id": "sg-05ad2646d8cc5f4a3", - "security_group_rule_id": "sgr-0558fbc5f4d13fc94", - "self": false, - "source_security_group_id": null, - "timeouts": null, - "to_port": 0, - "type": "egress" - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDB9LCJzY2hlbWFfdmVyc2lvbiI6IjIifQ==", - "dependencies": [ - "data.aws_availability_zones.available", - "module.alb.aws_security_group.this", - "module.ecs_service.aws_security_group.this", - "module.ecs_service.data.aws_subnet.this", - "module.vpc.aws_subnet.private", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ] - } - ] - }, - { - "module": "module.ecs_service.module.container_definition[\"chat-app\"]", - "mode": "data", - "type": "aws_region", - "name": "current", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "description": "Europe (Ireland)", - "endpoint": "ec2.eu-west-1.amazonaws.com", - "id": "eu-west-1", - "name": "eu-west-1" - }, - "sensitive_attributes": [] - } - ] - }, - { - "module": "module.ecs_service.module.container_definition[\"chat-app\"]", - "mode": "managed", - "type": "aws_cloudwatch_log_group", - "name": "this", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "arn": "arn:aws:logs:eu-west-1:355614969320:log-group:/aws/ecs/chat-app-demo/chat-app", - "id": "/aws/ecs/chat-app-demo/chat-app", - "kms_key_id": "", - "log_group_class": "STANDARD", - "name": "/aws/ecs/chat-app-demo/chat-app", - "name_prefix": "", - "retention_in_days": 14, - "skip_destroy": false, - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - } - }, - "sensitive_attributes": [], - "private": "bnVsbA==", - "create_before_destroy": true - } - ] - }, - { - "module": "module.vpc", - "mode": "managed", - "type": "aws_default_network_acl", - "name": "this", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "arn": "arn:aws:ec2:eu-west-1:355614969320:network-acl/acl-031a5e6f57caa75df", - "default_network_acl_id": "acl-031a5e6f57caa75df", - "egress": [ - { - "action": "allow", - "cidr_block": "", - "from_port": 0, - "icmp_code": 0, - "icmp_type": 0, - "ipv6_cidr_block": "::/0", - "protocol": "-1", - "rule_no": 101, - "to_port": 0 - }, - { - "action": "allow", - "cidr_block": "0.0.0.0/0", - "from_port": 0, - "icmp_code": 0, - "icmp_type": 0, - "ipv6_cidr_block": "", - "protocol": "-1", - "rule_no": 100, - "to_port": 0 - } - ], - "id": "acl-031a5e6f57caa75df", - "ingress": [ - { - "action": "allow", - "cidr_block": "", - "from_port": 0, - "icmp_code": 0, - "icmp_type": 0, - "ipv6_cidr_block": "::/0", - "protocol": "-1", - "rule_no": 101, - "to_port": 0 - }, - { - "action": "allow", - "cidr_block": "0.0.0.0/0", - "from_port": 0, - "icmp_code": 0, - "icmp_type": 0, - "ipv6_cidr_block": "", - "protocol": "-1", - "rule_no": 100, - "to_port": 0 - } - ], - "owner_id": "355614969320", - "subnet_ids": [ - "subnet-020b69a138405c937", - "subnet-03484242e7e025e98", - "subnet-08a36304b08dcd4df", - "subnet-08c4d0f2a7397c568", - "subnet-0b0690ac033109c33", - "subnet-0d743b4c62e3de6de" - ], - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "vpc_id": "vpc-036c1349ddd4a46ce" - }, - "sensitive_attributes": [], - "private": "bnVsbA==", - "dependencies": [ - "module.vpc.aws_vpc.this" - ] - } - ] - }, - { - "module": "module.vpc", - "mode": "managed", - "type": "aws_default_route_table", - "name": "default", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "arn": "arn:aws:ec2:eu-west-1:355614969320:route-table/rtb-0c6af805470c20114", - "default_route_table_id": "rtb-0c6af805470c20114", - "id": "rtb-0c6af805470c20114", - "owner_id": "355614969320", - "propagating_vgws": [], - "route": [], - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "timeouts": { - "create": "5m", - "update": "5m" - }, - "vpc_id": "vpc-036c1349ddd4a46ce" - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDAsInVwZGF0ZSI6MzAwMDAwMDAwMDAwfX0=", - "dependencies": [ - "module.vpc.aws_vpc.this" - ] - } - ] - }, - { - "module": "module.vpc", - "mode": "managed", - "type": "aws_default_security_group", - "name": "this", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 1, - "attributes": { - "arn": "arn:aws:ec2:eu-west-1:355614969320:security-group/sg-015ea6038f4f7ff71", - "description": "default VPC security group", - "egress": [], - "id": "sg-015ea6038f4f7ff71", - "ingress": [], - "name": "default", - "name_prefix": "", - "owner_id": "355614969320", - "revoke_rules_on_delete": false, - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "vpc_id": "vpc-036c1349ddd4a46ce" - }, - "sensitive_attributes": [], - "private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==", - "dependencies": [ - "module.vpc.aws_vpc.this" - ] - } - ] - }, - { - "module": "module.vpc", - "mode": "managed", - "type": "aws_eip", - "name": "nat", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "address": null, - "allocation_id": "eipalloc-0700859ba46362518", - "associate_with_private_ip": null, - "association_id": "eipassoc-0d5484b1fb009232c", - "carrier_ip": "", - "customer_owned_ip": "", - "customer_owned_ipv4_pool": "", - "domain": "vpc", - "id": "eipalloc-0700859ba46362518", - "instance": "", - "network_border_group": "eu-west-1", - "network_interface": "eni-088e951a4444f5c79", - "private_dns": "ip-10-0-48-112.eu-west-1.compute.internal", - "private_ip": "10.0.48.112", - "public_dns": "ec2-52-212-180-110.eu-west-1.compute.amazonaws.com", - "public_ip": "52.212.180.110", - "public_ipv4_pool": "amazon", - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "timeouts": null, - "vpc": true - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjoxODAwMDAwMDAwMDAsInJlYWQiOjkwMDAwMDAwMDAwMCwidXBkYXRlIjozMDAwMDAwMDAwMDB9fQ==", - "dependencies": [ - "data.aws_availability_zones.available", - "module.vpc.aws_internet_gateway.this", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ] - } - ] - }, - { - "module": "module.vpc", - "mode": "managed", - "type": "aws_internet_gateway", - "name": "this", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "arn": "arn:aws:ec2:eu-west-1:355614969320:internet-gateway/igw-0c25b6348ee8d15d3", - "id": "igw-0c25b6348ee8d15d3", - "owner_id": "355614969320", - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "timeouts": null, - "vpc_id": "vpc-036c1349ddd4a46ce" - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", - "dependencies": [ - "data.aws_availability_zones.available", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ] - } - ] - }, - { - "module": "module.vpc", - "mode": "managed", - "type": "aws_nat_gateway", - "name": "this", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "allocation_id": "eipalloc-0700859ba46362518", - "association_id": "eipassoc-0d5484b1fb009232c", - "connectivity_type": "public", - "id": "nat-0c9c27876496073dd", - "network_interface_id": "eni-088e951a4444f5c79", - "private_ip": "10.0.48.112", - "public_ip": "52.212.180.110", - "secondary_allocation_ids": [], - "secondary_private_ip_address_count": 0, - "secondary_private_ip_addresses": [], - "subnet_id": "subnet-08c4d0f2a7397c568", - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "timeouts": null - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6MTgwMDAwMDAwMDAwMCwidXBkYXRlIjo2MDAwMDAwMDAwMDB9fQ==", - "dependencies": [ - "data.aws_availability_zones.available", - "module.vpc.aws_eip.nat", - "module.vpc.aws_internet_gateway.this", - "module.vpc.aws_subnet.public", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ] - } - ] - }, - { - "module": "module.vpc", - "mode": "managed", - "type": "aws_route", - "name": "private_nat_gateway", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "carrier_gateway_id": "", - "core_network_arn": "", - "destination_cidr_block": "0.0.0.0/0", - "destination_ipv6_cidr_block": "", - "destination_prefix_list_id": "", - "egress_only_gateway_id": "", - "gateway_id": "", - "id": "r-rtb-096758eeb295c77291080289494", - "instance_id": "", - "instance_owner_id": "", - "local_gateway_id": "", - "nat_gateway_id": "nat-0c9c27876496073dd", - "network_interface_id": "", - "origin": "CreateRoute", - "route_table_id": "rtb-096758eeb295c7729", - "state": "active", - "timeouts": { - "create": "5m", - "delete": null, - "update": null - }, - "transit_gateway_id": "", - "vpc_endpoint_id": "", - "vpc_peering_connection_id": "" - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDAsImRlbGV0ZSI6MzAwMDAwMDAwMDAwLCJ1cGRhdGUiOjEyMDAwMDAwMDAwMH19", - "dependencies": [ - "data.aws_availability_zones.available", - "module.vpc.aws_eip.nat", - "module.vpc.aws_internet_gateway.this", - "module.vpc.aws_nat_gateway.this", - "module.vpc.aws_route_table.private", - "module.vpc.aws_subnet.public", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ] - } - ] - }, - { - "module": "module.vpc", - "mode": "managed", - "type": "aws_route", - "name": "public_internet_gateway", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "carrier_gateway_id": "", - "core_network_arn": "", - "destination_cidr_block": "0.0.0.0/0", - "destination_ipv6_cidr_block": "", - "destination_prefix_list_id": "", - "egress_only_gateway_id": "", - "gateway_id": "igw-0c25b6348ee8d15d3", - "id": "r-rtb-088d8f5a34faa90f21080289494", - "instance_id": "", - "instance_owner_id": "", - "local_gateway_id": "", - "nat_gateway_id": "", - "network_interface_id": "", - "origin": "CreateRoute", - "route_table_id": "rtb-088d8f5a34faa90f2", - "state": "active", - "timeouts": { - "create": "5m", - "delete": null, - "update": null - }, - "transit_gateway_id": "", - "vpc_endpoint_id": "", - "vpc_peering_connection_id": "" - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDAsImRlbGV0ZSI6MzAwMDAwMDAwMDAwLCJ1cGRhdGUiOjEyMDAwMDAwMDAwMH19", - "dependencies": [ - "data.aws_availability_zones.available", - "module.vpc.aws_internet_gateway.this", - "module.vpc.aws_route_table.public", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ] - } - ] - }, - { - "module": "module.vpc", - "mode": "managed", - "type": "aws_route_table", - "name": "private", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "arn": "arn:aws:ec2:eu-west-1:355614969320:route-table/rtb-096758eeb295c7729", - "id": "rtb-096758eeb295c7729", - "owner_id": "355614969320", - "propagating_vgws": [], - "route": [ - { - "carrier_gateway_id": "", - "cidr_block": "0.0.0.0/0", - "core_network_arn": "", - "destination_prefix_list_id": "", - "egress_only_gateway_id": "", - "gateway_id": "", - "ipv6_cidr_block": "", - "local_gateway_id": "", - "nat_gateway_id": "nat-0c9c27876496073dd", - "network_interface_id": "", - "transit_gateway_id": "", - "vpc_endpoint_id": "", - "vpc_peering_connection_id": "" - } - ], - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "timeouts": null, - "vpc_id": "vpc-036c1349ddd4a46ce" - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDAsImRlbGV0ZSI6MzAwMDAwMDAwMDAwLCJ1cGRhdGUiOjEyMDAwMDAwMDAwMH19", - "dependencies": [ - "data.aws_availability_zones.available", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ] - } - ] - }, - { - "module": "module.vpc", - "mode": "managed", - "type": "aws_route_table", - "name": "public", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "arn": "arn:aws:ec2:eu-west-1:355614969320:route-table/rtb-088d8f5a34faa90f2", - "id": "rtb-088d8f5a34faa90f2", - "owner_id": "355614969320", - "propagating_vgws": [], - "route": [ - { - "carrier_gateway_id": "", - "cidr_block": "0.0.0.0/0", - "core_network_arn": "", - "destination_prefix_list_id": "", - "egress_only_gateway_id": "", - "gateway_id": "igw-0c25b6348ee8d15d3", - "ipv6_cidr_block": "", - "local_gateway_id": "", - "nat_gateway_id": "", - "network_interface_id": "", - "transit_gateway_id": "", - "vpc_endpoint_id": "", - "vpc_peering_connection_id": "" - } - ], - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "timeouts": null, - "vpc_id": "vpc-036c1349ddd4a46ce" - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDAsImRlbGV0ZSI6MzAwMDAwMDAwMDAwLCJ1cGRhdGUiOjEyMDAwMDAwMDAwMH19", - "dependencies": [ - "data.aws_availability_zones.available", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ] - } - ] - }, - { - "module": "module.vpc", - "mode": "managed", - "type": "aws_route_table_association", - "name": "private", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "gateway_id": "", - "id": "rtbassoc-063f976189b95e1f7", - "route_table_id": "rtb-096758eeb295c7729", - "subnet_id": "subnet-0d743b4c62e3de6de", - "timeouts": null - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDAsImRlbGV0ZSI6MzAwMDAwMDAwMDAwLCJ1cGRhdGUiOjEyMDAwMDAwMDAwMH19", - "dependencies": [ - "data.aws_availability_zones.available", - "module.vpc.aws_route_table.private", - "module.vpc.aws_subnet.private", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ] - }, - { - "index_key": 1, - "schema_version": 0, - "attributes": { - "gateway_id": "", - "id": "rtbassoc-07ef47be5f28a0355", - "route_table_id": "rtb-096758eeb295c7729", - "subnet_id": "subnet-08a36304b08dcd4df", - "timeouts": null - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDAsImRlbGV0ZSI6MzAwMDAwMDAwMDAwLCJ1cGRhdGUiOjEyMDAwMDAwMDAwMH19", - "dependencies": [ - "data.aws_availability_zones.available", - "module.vpc.aws_route_table.private", - "module.vpc.aws_subnet.private", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ] - }, - { - "index_key": 2, - "schema_version": 0, - "attributes": { - "gateway_id": "", - "id": "rtbassoc-04779d9d6d3b3f1bb", - "route_table_id": "rtb-096758eeb295c7729", - "subnet_id": "subnet-03484242e7e025e98", - "timeouts": null - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDAsImRlbGV0ZSI6MzAwMDAwMDAwMDAwLCJ1cGRhdGUiOjEyMDAwMDAwMDAwMH19", - "dependencies": [ - "data.aws_availability_zones.available", - "module.vpc.aws_route_table.private", - "module.vpc.aws_subnet.private", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ] - } - ] - }, - { - "module": "module.vpc", - "mode": "managed", - "type": "aws_route_table_association", - "name": "public", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 0, - "attributes": { - "gateway_id": "", - "id": "rtbassoc-0975294f8cf600a9f", - "route_table_id": "rtb-088d8f5a34faa90f2", - "subnet_id": "subnet-08c4d0f2a7397c568", - "timeouts": null - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDAsImRlbGV0ZSI6MzAwMDAwMDAwMDAwLCJ1cGRhdGUiOjEyMDAwMDAwMDAwMH19", - "dependencies": [ - "data.aws_availability_zones.available", - "module.vpc.aws_route_table.public", - "module.vpc.aws_subnet.public", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ] - }, - { - "index_key": 1, - "schema_version": 0, - "attributes": { - "gateway_id": "", - "id": "rtbassoc-0872428bcf4df75a6", - "route_table_id": "rtb-088d8f5a34faa90f2", - "subnet_id": "subnet-020b69a138405c937", - "timeouts": null - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDAsImRlbGV0ZSI6MzAwMDAwMDAwMDAwLCJ1cGRhdGUiOjEyMDAwMDAwMDAwMH19", - "dependencies": [ - "data.aws_availability_zones.available", - "module.vpc.aws_route_table.public", - "module.vpc.aws_subnet.public", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ] - }, - { - "index_key": 2, - "schema_version": 0, - "attributes": { - "gateway_id": "", - "id": "rtbassoc-087a8d2cc04d7ee02", - "route_table_id": "rtb-088d8f5a34faa90f2", - "subnet_id": "subnet-0b0690ac033109c33", - "timeouts": null - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDAsImRlbGV0ZSI6MzAwMDAwMDAwMDAwLCJ1cGRhdGUiOjEyMDAwMDAwMDAwMH19", - "dependencies": [ - "data.aws_availability_zones.available", - "module.vpc.aws_route_table.public", - "module.vpc.aws_subnet.public", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ] - } - ] - }, - { - "module": "module.vpc", - "mode": "managed", - "type": "aws_subnet", - "name": "private", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 1, - "attributes": { - "arn": "arn:aws:ec2:eu-west-1:355614969320:subnet/subnet-0d743b4c62e3de6de", - "assign_ipv6_address_on_creation": false, - "availability_zone": "eu-west-1a", - "availability_zone_id": "euw1-az1", - "cidr_block": "10.0.0.0/20", - "customer_owned_ipv4_pool": "", - "enable_dns64": false, - "enable_lni_at_device_index": 0, - "enable_resource_name_dns_a_record_on_launch": false, - "enable_resource_name_dns_aaaa_record_on_launch": false, - "id": "subnet-0d743b4c62e3de6de", - "ipv6_cidr_block": "", - "ipv6_cidr_block_association_id": "", - "ipv6_native": false, - "map_customer_owned_ip_on_launch": false, - "map_public_ip_on_launch": false, - "outpost_arn": "", - "owner_id": "355614969320", - "private_dns_hostname_type_on_launch": "ip-name", - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "timeouts": null, - "vpc_id": "vpc-036c1349ddd4a46ce" - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6MTIwMDAwMDAwMDAwMH0sInNjaGVtYV92ZXJzaW9uIjoiMSJ9", - "dependencies": [ - "data.aws_availability_zones.available", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ], - "create_before_destroy": true - }, - { - "index_key": 1, - "schema_version": 1, - "attributes": { - "arn": "arn:aws:ec2:eu-west-1:355614969320:subnet/subnet-08a36304b08dcd4df", - "assign_ipv6_address_on_creation": false, - "availability_zone": "eu-west-1b", - "availability_zone_id": "euw1-az2", - "cidr_block": "10.0.16.0/20", - "customer_owned_ipv4_pool": "", - "enable_dns64": false, - "enable_lni_at_device_index": 0, - "enable_resource_name_dns_a_record_on_launch": false, - "enable_resource_name_dns_aaaa_record_on_launch": false, - "id": "subnet-08a36304b08dcd4df", - "ipv6_cidr_block": "", - "ipv6_cidr_block_association_id": "", - "ipv6_native": false, - "map_customer_owned_ip_on_launch": false, - "map_public_ip_on_launch": false, - "outpost_arn": "", - "owner_id": "355614969320", - "private_dns_hostname_type_on_launch": "ip-name", - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "timeouts": null, - "vpc_id": "vpc-036c1349ddd4a46ce" - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6MTIwMDAwMDAwMDAwMH0sInNjaGVtYV92ZXJzaW9uIjoiMSJ9", - "dependencies": [ - "data.aws_availability_zones.available", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ], - "create_before_destroy": true - }, - { - "index_key": 2, - "schema_version": 1, - "attributes": { - "arn": "arn:aws:ec2:eu-west-1:355614969320:subnet/subnet-03484242e7e025e98", - "assign_ipv6_address_on_creation": false, - "availability_zone": "eu-west-1c", - "availability_zone_id": "euw1-az3", - "cidr_block": "10.0.32.0/20", - "customer_owned_ipv4_pool": "", - "enable_dns64": false, - "enable_lni_at_device_index": 0, - "enable_resource_name_dns_a_record_on_launch": false, - "enable_resource_name_dns_aaaa_record_on_launch": false, - "id": "subnet-03484242e7e025e98", - "ipv6_cidr_block": "", - "ipv6_cidr_block_association_id": "", - "ipv6_native": false, - "map_customer_owned_ip_on_launch": false, - "map_public_ip_on_launch": false, - "outpost_arn": "", - "owner_id": "355614969320", - "private_dns_hostname_type_on_launch": "ip-name", - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "timeouts": null, - "vpc_id": "vpc-036c1349ddd4a46ce" - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6MTIwMDAwMDAwMDAwMH0sInNjaGVtYV92ZXJzaW9uIjoiMSJ9", - "dependencies": [ - "data.aws_availability_zones.available", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ], - "create_before_destroy": true - } - ] - }, - { - "module": "module.vpc", - "mode": "managed", - "type": "aws_subnet", - "name": "public", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 1, - "attributes": { - "arn": "arn:aws:ec2:eu-west-1:355614969320:subnet/subnet-08c4d0f2a7397c568", - "assign_ipv6_address_on_creation": false, - "availability_zone": "eu-west-1a", - "availability_zone_id": "euw1-az1", - "cidr_block": "10.0.48.0/24", - "customer_owned_ipv4_pool": "", - "enable_dns64": false, - "enable_lni_at_device_index": 0, - "enable_resource_name_dns_a_record_on_launch": false, - "enable_resource_name_dns_aaaa_record_on_launch": false, - "id": "subnet-08c4d0f2a7397c568", - "ipv6_cidr_block": "", - "ipv6_cidr_block_association_id": "", - "ipv6_native": false, - "map_customer_owned_ip_on_launch": false, - "map_public_ip_on_launch": false, - "outpost_arn": "", - "owner_id": "355614969320", - "private_dns_hostname_type_on_launch": "ip-name", - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "timeouts": null, - "vpc_id": "vpc-036c1349ddd4a46ce" - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6MTIwMDAwMDAwMDAwMH0sInNjaGVtYV92ZXJzaW9uIjoiMSJ9", - "dependencies": [ - "data.aws_availability_zones.available", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ] - }, - { - "index_key": 1, - "schema_version": 1, - "attributes": { - "arn": "arn:aws:ec2:eu-west-1:355614969320:subnet/subnet-020b69a138405c937", - "assign_ipv6_address_on_creation": false, - "availability_zone": "eu-west-1b", - "availability_zone_id": "euw1-az2", - "cidr_block": "10.0.49.0/24", - "customer_owned_ipv4_pool": "", - "enable_dns64": false, - "enable_lni_at_device_index": 0, - "enable_resource_name_dns_a_record_on_launch": false, - "enable_resource_name_dns_aaaa_record_on_launch": false, - "id": "subnet-020b69a138405c937", - "ipv6_cidr_block": "", - "ipv6_cidr_block_association_id": "", - "ipv6_native": false, - "map_customer_owned_ip_on_launch": false, - "map_public_ip_on_launch": false, - "outpost_arn": "", - "owner_id": "355614969320", - "private_dns_hostname_type_on_launch": "ip-name", - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "timeouts": null, - "vpc_id": "vpc-036c1349ddd4a46ce" - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6MTIwMDAwMDAwMDAwMH0sInNjaGVtYV92ZXJzaW9uIjoiMSJ9", - "dependencies": [ - "data.aws_availability_zones.available", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ] - }, - { - "index_key": 2, - "schema_version": 1, - "attributes": { - "arn": "arn:aws:ec2:eu-west-1:355614969320:subnet/subnet-0b0690ac033109c33", - "assign_ipv6_address_on_creation": false, - "availability_zone": "eu-west-1c", - "availability_zone_id": "euw1-az3", - "cidr_block": "10.0.50.0/24", - "customer_owned_ipv4_pool": "", - "enable_dns64": false, - "enable_lni_at_device_index": 0, - "enable_resource_name_dns_a_record_on_launch": false, - "enable_resource_name_dns_aaaa_record_on_launch": false, - "id": "subnet-0b0690ac033109c33", - "ipv6_cidr_block": "", - "ipv6_cidr_block_association_id": "", - "ipv6_native": false, - "map_customer_owned_ip_on_launch": false, - "map_public_ip_on_launch": false, - "outpost_arn": "", - "owner_id": "355614969320", - "private_dns_hostname_type_on_launch": "ip-name", - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "timeouts": null, - "vpc_id": "vpc-036c1349ddd4a46ce" - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6MTIwMDAwMDAwMDAwMH0sInNjaGVtYV92ZXJzaW9uIjoiMSJ9", - "dependencies": [ - "data.aws_availability_zones.available", - "module.vpc.aws_vpc.this", - "module.vpc.aws_vpc_ipv4_cidr_block_association.this" - ] - } - ] - }, - { - "module": "module.vpc", - "mode": "managed", - "type": "aws_vpc", - "name": "this", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": 0, - "schema_version": 1, - "attributes": { - "arn": "arn:aws:ec2:eu-west-1:355614969320:vpc/vpc-036c1349ddd4a46ce", - "assign_generated_ipv6_cidr_block": false, - "cidr_block": "10.0.0.0/16", - "default_network_acl_id": "acl-031a5e6f57caa75df", - "default_route_table_id": "rtb-0c6af805470c20114", - "default_security_group_id": "sg-015ea6038f4f7ff71", - "dhcp_options_id": "dopt-a93124cb", - "enable_dns_hostnames": true, - "enable_dns_support": true, - "enable_network_address_usage_metrics": false, - "id": "vpc-036c1349ddd4a46ce", - "instance_tenancy": "default", - "ipv4_ipam_pool_id": null, - "ipv4_netmask_length": null, - "ipv6_association_id": "", - "ipv6_cidr_block": "", - "ipv6_cidr_block_network_border_group": "", - "ipv6_ipam_pool_id": "", - "ipv6_netmask_length": 0, - "main_route_table_id": "rtb-0c6af805470c20114", - "owner_id": "355614969320", - "tags": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - }, - "tags_all": { - "Example": "chat-app-demo", - "Name": "chat-app-demo", - "Repository": "https://github.com/terraform-aws-modules/terraform-aws-ecs" - } - }, - "sensitive_attributes": [], - "private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==", - "create_before_destroy": true - } - ] - } - ], - "check_results": null -} diff --git a/demo/iac/variables.tf b/demo/iac/variables.tf deleted file mode 100644 index e47ca3b..0000000 --- a/demo/iac/variables.tf +++ /dev/null @@ -1,51 +0,0 @@ -variable "name" { - description = "The name of this template (e.g., my-app-prod)" - type = string - default = "chat-app-demo" -} - -variable "env" { - description = "Environment" - type = string - default = "demo" -} - -variable "region" { - description = "The AWS region to deploy to (e.g., us-east-1)" - type = string - default = "eu-west-1" -} - -variable "container_name" { - description = "The name of the container" - type = string - default = "chat-app" -} - -variable "health_check" { - description = "A map containing configuration for the health check" - type = string - default = "/health" -} - -# The port the container will listen on, used for load balancer health check -# Best practice is that this value is higher than 1024 so the container processes -# isn't running at root. -variable "container_port" { - description = "The port the container will listen on, used for load balancer health check. Best practice is that this value is higher than 1024 so the container processes isn't running at root." - type = number - default = 3000 -} - -variable "tags" { - description = "A map of tags to apply to all resources" - type = map(string) - default = {} -} - -variable "image" { - description = "container image to initially bootstrap. future images can be deployed using a separate mechanism" - type = string - default = "richarvey/chat-app" -} - diff --git a/demo/iac/versions.tf b/demo/iac/versions.tf deleted file mode 100644 index 682191e..0000000 --- a/demo/iac/versions.tf +++ /dev/null @@ -1,10 +0,0 @@ -terraform { - required_version = ">= 1.0" - - required_providers { - aws = { - source = "hashicorp/aws" - version = ">= 4.66.1" - } - } -} diff --git a/demo/iac/vpc.tf b/demo/iac/vpc.tf deleted file mode 100644 index 64270da..0000000 --- a/demo/iac/vpc.tf +++ /dev/null @@ -1,16 +0,0 @@ -module "vpc" { - source = "terraform-aws-modules/vpc/aws" - version = "~> 5.0" - - name = local.name - cidr = local.vpc_cidr - - azs = local.azs - private_subnets = [for k, v in local.azs : cidrsubnet(local.vpc_cidr, 4, k)] - public_subnets = [for k, v in local.azs : cidrsubnet(local.vpc_cidr, 8, k + 48)] - - enable_nat_gateway = true - single_nat_gateway = true - - tags = local.tags -}
  • 5QE3*=>>z7 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%0A*)zpN%CBPJ~81wU^x6H8#bYpZ7W&uIf4 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%0A%pkU&6? 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