ECR Repository with Terraform by *modules
2 min readJun 6, 2023
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.0"
}
}
}
terraform {
backend "s3" {
bucket = "bucketmnamewillbeupdated-terraform-dev-backend"
encrypt = true
key = "dev/terraform-adu-service-dev-ecr.tfstate"
}
}
variable "region" {
description = "Region name"
type = string
default = "us-east-1"
}
variable "profile" {
description = "Profile name"
type = string
default = "default"
}
variable "backend_bucket" {
description = "S3 bucket name to store the state file in backend"
type = string
default = "bucketmnamewillbeupdated-terraform-dev-backend"
}
variable "tags" {
description = "tags are defined for ecr"
type = map(string)
default = {
env = "dev"
created-by = "terraform"
}
}
variable "repository_name" {
description = "Name of the repository"
type = string
default = "adu-service-dev"
backend_bucket = "adu-terraform-dev-backend"
tags = {
env = "development"
created-by = "terraform"
service = "adu-test-service"
}
repository_name="adu-service-dev"
data "aws_caller_identity" "current" {}
################################################################################
# ECR Repository
################################################################################
module "adu-service-ecr" {
source = "terraform-aws-modules/ecr/aws"
version = "1.5.1"
repository_name = var.repository_name
repository_read_write_access_arns = [data.aws_caller_identity.current.arn]
create_lifecycle_policy = true
repository_lifecycle_policy = jsonencode({
rules = [
{
rulePriority = 1,
description = "Keep last 30 images",
selection = {
tagStatus = "tagged",
tagPrefixList = ["v"],
countType = "imageCountMoreThan",
countNumber = 30
},
action = {
type = "expire"
}
}
]
})
repository_force_delete = true
tags = var.tags
}
IT Training Discount Coupon (https://clarusway.referral-factory.com/sW5XCt/join?j=10826&sfmc_sub=2678253&l=1485_HTML&u=106547&mid=546000854&jb=1)