Skip to content

Commit 84f226e

Browse files
committed
feat: tagging to image digest
1 parent d0943e7 commit 84f226e

5 files changed

Lines changed: 30 additions & 9 deletions

File tree

concourse/scripts/terraform_infra.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ aws_secret_access_key=$(echo "$secrets" | jq -r .aws_secret_access_key)
1212

1313
lambda_name=$(echo "$secrets" | jq -r .lambda_name)
1414
env_name=$(echo "$secrets" | jq -r .env_name)
15+
ecr_repository=$(echo "$secrets" | jq -r .ecr_repository)
1516

1617
github_app_client_id=$(echo "$secrets" | jq -r .github_app_client_id)
1718
aws_secret_name=$(echo "$secrets" | jq -r .aws_secret_name)
@@ -50,7 +51,7 @@ terraform apply \
5051
-var "aws_secret_name=$aws_secret_name" \
5152
-var "github_org=$github_org" \
5253
-var "aws_bucket_name=${aws_bucket_name}" \
53-
-var "lambda_version=${tag}" \
5454
-var "lambda_timeout=${lambda_timeout}" \
5555
-var "lambda_memory=${lambda_memory}" \
56+
-var "ecr_repository=${ecr_repository}" \
5657
-auto-approve

terraform/service/data.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@ data "aws_ecr_repository" "profile_lambda_ecr_repo" {
22
name = local.lambda_repo
33
}
44

5+
data "aws_ecr_image" "lambda_image" {
6+
repository_name = data.aws_ecr_repository.profile_lambda_ecr_repo.name
7+
image_tag = var.container_ver
8+
}
9+
510
# Get the ecs infrastructure outputs from the remote state data source
611
data "terraform_remote_state" "vpc" {
712
backend = "s3"

terraform/service/env/dev/example_tfvars.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,6 @@ lambda_timeout = 900
1111
lambda_memory = 512
1212
schedule = "cron(0 6 ? * 2 *)"
1313
github_org = "ONS-Innovation"
14-
github_app_client_id = "123456789"
14+
github_app_client_id = "123456789"
15+
ecr_repository = "sdp-dev-address-book-lambda"
16+
container_ver = "v1.0.0"

terraform/service/main.tf

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ resource "aws_security_group" "lambda_sg" {
2727
resource "aws_lambda_function" "lambda_function" {
2828
function_name = var.lambda_name
2929
timeout = var.lambda_timeout
30-
image_uri = "${data.aws_ecr_repository.profile_lambda_ecr_repo.repository_url}:${var.lambda_version}"
30+
image_uri = "${data.aws_ecr_repository.profile_lambda_ecr_repo.repository_url}@${data.aws_ecr_image.lambda_image.image_digest}"
3131
package_type = "Image"
3232
architectures = [var.lambda_arch]
3333
logging_config {
@@ -55,6 +55,8 @@ resource "aws_lambda_function" "lambda_function" {
5555
AWS_SECRET_NAME = var.aws_secret_name
5656
AWS_ACCOUNT_NAME = var.env_name
5757
S3_BUCKET_NAME = local.bucket_name
58+
IMAGE_DIGEST = data.aws_ecr_image.lambda_image.image_digest
59+
IMAGE_TAG = var.container_ver
5860
}
5961
}
6062
}
@@ -148,6 +150,12 @@ resource "aws_iam_role_policy_attachment" "eventbridge_policy" {
148150
policy_arn = aws_iam_policy.lambda_eventbridge_policy.arn
149151
}
150152

153+
# Resolve the pushed image (must exist before terraform apply)
154+
data "aws_ecr_image" "lambda_image" {
155+
repository_name = var.ecr_repository
156+
image_tag = var.container_ver
157+
}
158+
151159
resource "aws_cloudwatch_log_group" "loggroup" {
152160
name = "/aws/lambda/${aws_lambda_function.lambda_function.function_name}"
153161
retention_in_days = var.log_retention_days

terraform/service/variables.tf

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,18 +36,23 @@ variable "lambda_name" {
3636
default = "lambda-function"
3737
}
3838

39-
variable "lambda_version" {
40-
description = "AWS Lambda Image Version"
41-
type = string
42-
default = "v0.0.1"
43-
}
44-
4539
variable "lambda_arch" {
4640
description = "AWS Lambda Architecture"
4741
type = string
4842
default = "x86_64"
4943
}
5044

45+
variable "ecr_repository" {
46+
description = "Name of the ECR repository containing the Lambda image"
47+
type = string
48+
}
49+
50+
variable "container_ver" {
51+
description = "Container tag"
52+
type = string
53+
default = "v1.0.0"
54+
}
55+
5156
variable "lambda_timeout" {
5257
description = "AWS Lambda Timeout Value in Seconds"
5358
type = number

0 commit comments

Comments
 (0)