Skip to content

Commit 61a1482

Browse files
authored
Improve security group creation/deletion and switch to using prefix (#17)
1 parent 56ac0f1 commit 61a1482

File tree

5 files changed

+44
-12
lines changed

5 files changed

+44
-12
lines changed

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
repos:
22
- repo: https://github.com/pre-commit/pre-commit-hooks
3-
rev: v2.5.0
3+
rev: v3.0.1
44
hooks:
55
- id: check-added-large-files
66
args: ['--maxkb=500']

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ No requirements.
109109
| repository\_credentials | name or ARN of a secrets manager secret (arn:aws:secretsmanager:region:aws\_account\_id:secret:secret\_name) | `string` | `""` | no |
110110
| repository\_credentials\_kms\_key | key id, key ARN, alias name or alias ARN of the key that encrypted the repository credentials | `string` | `"alias/aws/secretsmanager"` | no |
111111
| service\_registry\_arn | ARN of aws\_service\_discovery\_service resource | `string` | `""` | no |
112+
| sg\_name\_prefix | A prefix used for Security group name. | `string` | `""` | no |
112113
| tags | A map of tags (key-value pairs) passed to resources. | `map(string)` | `{}` | no |
113114
| target\_group\_name | The name for the tasks target group | `string` | `""` | no |
114115
| task\_container\_assign\_public\_ip | Assigned public IP to the container. | `bool` | `false` | no |

examples/core/main.tf

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ provider "aws" {
77
#####
88
module "vpc" {
99
source = "terraform-aws-modules/vpc/aws"
10-
version = "~> 2.21"
10+
version = "~> 2.32"
1111

1212
name = "simple-vpc"
1313

@@ -70,15 +70,15 @@ resource "aws_security_group_rule" "task_ingress_80" {
7070
#####
7171
# private repo credentials secretsmanager
7272
#####
73-
data "aws_kms_key" "secretsmanager_key" {
74-
key_id = "alias/aws/secretsmanager"
75-
}
73+
# data "aws_kms_key" "secretsmanager_key" {
74+
# key_id = "alias/aws/secretsmanager"
75+
# }
7676

77-
resource "aws_secretsmanager_secret" "task_credentials" {
78-
name = "task_repository_credentials"
77+
# resource "aws_secretsmanager_secret" "task_credentials" {
78+
# name = "task_repository_credentials"
7979

80-
kms_key_id = data.aws_kms_key.secretsmanager_key.arn
81-
}
80+
# kms_key_id = data.aws_kms_key.secretsmanager_key.arn
81+
# }
8282

8383
#####
8484
# ECS cluster and fargate
@@ -90,7 +90,9 @@ resource "aws_ecs_cluster" "cluster" {
9090
module "fargate" {
9191
source = "../../"
9292

93-
name_prefix = "ecs-fargate-example"
93+
name_prefix = "ecs-fargate-example"
94+
# sg_name_prefix = "my-security-group-name" # uncomment if you want to name security group with specific name
95+
9496
vpc_id = module.vpc.vpc_id
9597
private_subnet_ids = module.vpc.public_subnets
9698
lb_arn = module.alb.arn
@@ -116,3 +118,20 @@ module "fargate" {
116118
# create_repository_credentials_iam_policy = false
117119
# repository_credentials = aws_secretsmanager_secret.task_credentials.arn
118120
}
121+
122+
123+
resource "aws_security_group" "allow_sg_test" {
124+
name = "allow_sg_test"
125+
description = "Allow sg inbound traffic"
126+
vpc_id = module.vpc.vpc_id
127+
}
128+
129+
resource "aws_security_group_rule" "test_sg_ingress" {
130+
security_group_id = aws_security_group.allow_sg_test.id
131+
type = "ingress"
132+
protocol = "tcp"
133+
from_port = 3022
134+
to_port = 3022
135+
source_security_group_id = module.fargate.service_sg_id
136+
}
137+

main.tf

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,20 @@ resource "aws_iam_role_policy" "log_agent" {
5050
#####
5151
resource "aws_security_group" "ecs_service" {
5252
vpc_id = var.vpc_id
53-
name = "${var.name_prefix}-ecs-service-sg"
53+
name_prefix = var.sg_name_prefix == "" ? "${var.name_prefix}-ecs-service-sg-" : "${var.sg_name_prefix}-"
5454
description = "Fargate service security group"
5555
tags = merge(
5656
var.tags,
5757
{
58-
Name = "${var.name_prefix}-sg"
58+
Name = var.sg_name_prefix == "" ? "${var.name_prefix}-ecs-service-sg" : "${var.sg_name_prefix}"
5959
},
6060
)
61+
62+
revoke_rules_on_delete = true
63+
64+
lifecycle {
65+
create_before_destroy = true
66+
}
6167
}
6268

6369
resource "aws_security_group_rule" "egress_service" {

variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@ variable "name_prefix" {
33
type = string
44
}
55

6+
variable "sg_name_prefix" {
7+
description = "A prefix used for Security group name."
8+
type = string
9+
default = ""
10+
}
11+
612
variable "container_name" {
713
description = "Optional name for the container to be used instead of name_prefix."
814
default = ""

0 commit comments

Comments
 (0)