mirror of
https://github.com/friuns2/BlackFriday-GPTs-Prompts.git
synced 2026-04-30 14:03:55 +07:00
338 lines
5.6 KiB
Markdown
338 lines
5.6 KiB
Markdown
|
|
|
|
# Create big Terraform modules for provisioning AWS ECS Service Module | [Start Chat](https://gptcall.net/chat.html?data=%7B%22contact%22%3A%7B%22id%22%3A%22lPJWUJQT8F22Hj4ev3D8a%22%2C%22flow%22%3Atrue%7D%7D)
|
|
Develop a Terraform module to provision AWS ECS Service. Give step-by-step features, and get the results in steps, ensuring an efficient way to manage large outputs. (Better results in GPT-4)
|
|
|
|
# Prompt
|
|
|
|
```
|
|
Please develop a Terraform module named "ecs_app" to provision an AWS ECS Service. As you work on this task, I will sequentially provide information about the following features:
|
|
|
|
1. ECS Service
|
|
2. Task Definition Configuration
|
|
3. Autoscaling policies
|
|
4. Target group registration
|
|
|
|
I will tell you once I've finished providing details for each feature. When presenting your answer, arrange the output resources in groups of up to 10. Request my confirmation before advancing to the next group. Your final response should only contain the completed Terraform module without additional explanations or questions.
|
|
```
|
|
|
|
## Welcome Message
|
|
```
|
|
|
|
variable "app_name" {
|
|
|
|
type = string
|
|
|
|
description = "Name of the ECS Service"
|
|
|
|
}
|
|
|
|
variable "cluster_name" {
|
|
|
|
type = string
|
|
|
|
description = "The name of the ECS cluster where the service will be created."
|
|
|
|
}
|
|
|
|
variable "task_definition_arn" {
|
|
|
|
type = string
|
|
|
|
description = "ARN of the task definition to use for the service"
|
|
|
|
}
|
|
|
|
variable "desired_count" {
|
|
|
|
type = number
|
|
|
|
description = "The desired number of tasks running in the service"
|
|
|
|
}
|
|
|
|
variable "max_capacity" {
|
|
|
|
type = number
|
|
|
|
default = 10
|
|
|
|
description = "The maximum number of tasks this service should run"
|
|
|
|
}
|
|
|
|
variable "min_capacity" {
|
|
|
|
type = number
|
|
|
|
default = 1
|
|
|
|
description = "The minimum number of tasks this service should run"
|
|
|
|
}
|
|
|
|
variable "target_group_arns" {
|
|
|
|
type = list(string)
|
|
|
|
description = "List of target group ARNs to associate with the ECS service"
|
|
|
|
}
|
|
|
|
|
|
|
|
resource "aws_ecs_service" "ecs_app_service" {
|
|
|
|
name = var.app_name
|
|
|
|
cluster = var.cluster_name
|
|
|
|
task_definition = var.task_definition_arn
|
|
|
|
desired_count = var.desired_count
|
|
|
|
|
|
|
|
deployment_controller {
|
|
|
|
type = "ECS"
|
|
|
|
}
|
|
|
|
|
|
|
|
load_balancer {
|
|
|
|
target_group_arn = var.target_group_arns
|
|
|
|
container_name = var.app_name
|
|
|
|
container_port = 80
|
|
|
|
}
|
|
|
|
|
|
|
|
lifecycle {
|
|
|
|
create_before_destroy = true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
resource "aws_appautoscaling_target" "ecs_app_target" {
|
|
|
|
max_capacity = var.max_capacity
|
|
|
|
min_capacity = var.min_capacity
|
|
|
|
resource_id = aws_ecs_service.ecs_app_service.arn
|
|
|
|
scalable_dimension = "ecs:service:DesiredCount"
|
|
|
|
service_namespace = "ecs"
|
|
|
|
}
|
|
|
|
|
|
|
|
resource "aws_appautoscaling_policy" "ecs_app_policy" {
|
|
|
|
name = "${var.app_name}-scaling-policy"
|
|
|
|
policy_type = "TargetTrackingScaling"
|
|
|
|
resource_id = aws_appautoscaling_target.ecs_app_target.resource_id
|
|
|
|
scalable_dimension = aws_appautoscaling_target.ecs_app_target.scalable_dimension
|
|
|
|
service_namespace = aws_appautoscaling_target.ecs_app_target.service_namespace
|
|
|
|
|
|
|
|
target_tracking_scaling_policy_configuration {
|
|
|
|
predefined_metric_specification {
|
|
|
|
predefined_metric_type = "ECSServiceAverageCPUUtilization"
|
|
|
|
}
|
|
|
|
|
|
|
|
target_value = 50.0
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
Please confirm before proceeding to the next feature.
|
|
|
|
## Conversation
|
|
|
|
**ASSISTANT**: ```
|
|
|
|
variable "app_name" {
|
|
|
|
type = string
|
|
|
|
description = "Name of the ECS Service"
|
|
|
|
}
|
|
|
|
variable "cluster_name" {
|
|
|
|
type = string
|
|
|
|
description = "The name of the ECS cluster where the service will be created."
|
|
|
|
}
|
|
|
|
variable "task_definition_arn" {
|
|
|
|
type = string
|
|
|
|
description = "ARN of the task definition to use for the service"
|
|
|
|
}
|
|
|
|
variable "desired_count" {
|
|
|
|
type = number
|
|
|
|
description = "The desired number of tasks running in the service"
|
|
|
|
}
|
|
|
|
variable "max_capacity" {
|
|
|
|
type = number
|
|
|
|
default = 10
|
|
|
|
description = "The maximum number of tasks this service should run"
|
|
|
|
}
|
|
|
|
variable "min_capacity" {
|
|
|
|
type = number
|
|
|
|
default = 1
|
|
|
|
description = "The minimum number of tasks this service should run"
|
|
|
|
}
|
|
|
|
variable "target_group_arns" {
|
|
|
|
type = list(string)
|
|
|
|
description = "List of target group ARNs to associate with the ECS service"
|
|
|
|
}
|
|
|
|
|
|
|
|
resource "aws_ecs_service" "ecs_app_service" {
|
|
|
|
name = var.app_name
|
|
|
|
cluster = var.cluster_name
|
|
|
|
task_definition = var.task_definition_arn
|
|
|
|
desired_count = var.desired_count
|
|
|
|
|
|
|
|
deployment_controller {
|
|
|
|
type = "ECS"
|
|
|
|
}
|
|
|
|
|
|
|
|
load_balancer {
|
|
|
|
target_group_arn = var.target_group_arns
|
|
|
|
container_name = var.app_name
|
|
|
|
container_port = 80
|
|
|
|
}
|
|
|
|
|
|
|
|
lifecycle {
|
|
|
|
create_before_destroy = true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
resource "aws_appautoscaling_target" "ecs_app_target" {
|
|
|
|
max_capacity = var.max_capacity
|
|
|
|
min_capacity = var.min_capacity
|
|
|
|
resource_id = aws_ecs_service.ecs_app_service.arn
|
|
|
|
scalable_dimension = "ecs:service:DesiredCount"
|
|
|
|
service_namespace = "ecs"
|
|
|
|
}
|
|
|
|
|
|
|
|
resource "aws_appautoscaling_policy" "ecs_app_policy" {
|
|
|
|
name = "${var.app_name}-scaling-policy"
|
|
|
|
policy_type = "TargetTrackingScaling"
|
|
|
|
resource_id = aws_appautoscaling_target.ecs_app_target.resource_id
|
|
|
|
scalable_dimension = aws_appautoscaling_target.ecs_app_target.scalable_dimension
|
|
|
|
service_namespace = aws_appautoscaling_target.ecs_app_target.service_namespace
|
|
|
|
|
|
|
|
target_tracking_scaling_policy_configuration {
|
|
|
|
predefined_metric_specification {
|
|
|
|
predefined_metric_type = "ECSServiceAverageCPUUtilization"
|
|
|
|
}
|
|
|
|
|
|
|
|
target_value = 50.0
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
Please confirm before proceeding to the next feature.
|
|
|