Hello,
I have updated the lambda name and the code deploy name from “sqs_retry” to “las_retry” everywhere in my code. But while running the pipeline, its failing at the plan itself saying - Error: finding CodeDeploy Deployment Group (0271ab11-5436-498e-ba47-a7bff4c60e68): ApplicationDoesNotExistException: No application found for name: loslas-sqs-retry
Error: finding CodeDeploy Deployment Group (0271ab11-5436-498e-ba47-a7bff4c60e68): ApplicationDoesNotExistException: No application found for name: loslas-sqs-retry
Below is the code_deploy module:
module “code_deploy” {
source = “./modules/codedeploy_lambda”
alias_name = module.lambda_alias_no_refresh.lambda_alias_name
function_name = module.las_retry.lambda_function_name
target_version = module.las_retry.lambda_function_version
description = “Codedeploy deploy!”
create_app = true
app_name = “loslas-las-retry”
create_deployment_group = true
deployment_group_name = “loslas-las-retry-deployment-group”
service_role_arn = “arn:aws:iam::{local.account}:role/loslas-{var.environment}-app-codedeploy”
create_deployment = true
attach_triggers_policy = true
triggers = {
success = {
events = [“DeploymentSuccess”]
name = “DeploymentSuccess”
target_arn = module.aws_sns_topic.sns_topic_arn
}
}
tags = local.tags
depends_on = [module.aws_sns_topic.sns_topic_arn, module.las_retry.lambda_function_name, module.lambda_alias_no_refresh.lambda_alias_name]
}
Below is the module from where it is calling:
terraform {
required_providers {
aws = {
source = “hashicorp/aws”
}
}
}
locals {
qualifier = element(concat(data.aws_lambda_function.this..qualifier, [“”]), 0)
current_version = local.qualifier == “$LATEST” ? 1 : local.qualifier
app_name = element(concat(aws_codedeploy_app.this..name, [var.app_name]), 0)
deployment_group_name = element(concat(aws_codedeploy_deployment_group.this.*.deployment_group_name, [var.deployment_group_name]), 0)
appspec = merge({
version = “0.0”
Resources = [
{
MyFunction = {
Type = “AWS::Lambda::Function”
Properties = {
Name = var.function_name
Alias = var.alias_name
CurrentVersion = var.current_version != “” ? var.current_version : local.current_version
TargetVersion : var.target_version
}
}
}
]
}, var.before_allow_traffic_hook_arn != “” || var.after_allow_traffic_hook_arn != “” ? {
Hooks = [for k, v in zipmap([“BeforeAllowTraffic”, “AfterAllowTraffic”], [
var.before_allow_traffic_hook_arn != “” ? var.before_allow_traffic_hook_arn : null,
var.after_allow_traffic_hook_arn != “” ? var.after_allow_traffic_hook_arn : null
]) : tomap({ (k) = v }) if v != null]
} : {})
appspec_content = replace(jsonencode(local.appspec), “"”, “\"”)
appspec_sha256 = sha256(jsonencode(local.appspec))
script = <<EOF
#!/bin/bash
if [[ ‘{var.target_version}' == '{var.current_version != “” ? var.current_version : local.current_version}’ ]]; then
echo "Skipping deployment because target version ({var.target_version}) is already the current version"
exit 0
fi
ID=({var.aws_cli_command} deploy create-deployment \
--application-name {local.app_name}
–deployment-group-name {local.deployment_group_name} \
--deployment-config-name {var.deployment_config_name}
–description “{var.description}" \
--revision '{"revisionType": "AppSpecContent", "appSpecContent": {"content": "{local.appspec_content}”, “sha256”: "{local.appspec_sha256}"}}' \
--output text \
--query '[deploymentId]')
%{if var.wait_deployment_completion}
STATUS=(${var.aws_cli_command} deploy get-deployment
–deployment-id $ID
–output text
–query ‘[deploymentInfo.status]’)
while [[ $STATUS == “Created” || $STATUS == “InProgress” || $STATUS == “Pending” || $STATUS == “Queued” || $STATUS == “Ready” ]]; do
echo "Status: STATUS..."
STATUS=(${var.aws_cli_command} deploy get-deployment
–deployment-id ID \
--output text \
--query '[deploymentInfo.status]')
SLEEP_TIME=((( RANDOM % 5 ) + {var.get_deployment_sleep_timer}))
echo “Sleeping for: $SLEEP_TIME Seconds”
sleep SLEEP_TIME
done
{var.aws_cli_command} deploy get-deployment --deployment-id $ID
if [[ STATUS == "Succeeded" ]]; then
echo "Deployment succeeded."
else
echo "Deployment failed!"
exit 1
fi
%{else}
{var.aws_cli_command} deploy get-deployment --deployment-id $ID
echo “Deployment started, but wait deployment completion is disabled!”
%{endif}
EOF
}
resource “local_file” “deploy_script” {
count = var.create && var.create_deployment && var.save_deploy_script ? 1 : 0
filename = “deploy_script_${local.appspec_sha256}.txt”
directory_permission = “0755”
file_permission = “0644”
content = local.script
}
resource “null_resource” “deploy” {
count = var.create && var.create_deployment && var.run_deployment ? 1 : 0
triggers = {
appspec_sha256 = local.appspec_sha256
force_deploy = var.force_deploy ? uuid() : false
}
provisioner “local-exec” {
command = local.script
interpreter = var.interpreter
}
}
resource “aws_codedeploy_app” “this” {
count = var.create && var.create_app && !var.use_existing_app ? 1 : 0
name = var.app_name
compute_platform = “Lambda”
tags = var.tags
}
resource “aws_codedeploy_deployment_group” “this” {
count = var.create && var.create_deployment_group && !var.use_existing_deployment_group ? 1 : 0
app_name = local.app_name
deployment_group_name = var.deployment_group_name
service_role_arn = var.service_role_arn
deployment_config_name = var.deployment_config_name
deployment_style {
deployment_option = “WITH_TRAFFIC_CONTROL”
deployment_type = “BLUE_GREEN”
}
auto_rollback_configuration {
enabled = var.auto_rollback_enabled
events = var.auto_rollback_events
}
dynamic “alarm_configuration” {
for_each = var.alarm_enabled ? [true] :
content {
enabled = var.alarm_enabled
alarms = var.alarms
ignore_poll_alarm_failure = var.alarm_ignore_poll_alarm_failure
}
}
dynamic “trigger_configuration” {
for_each = var.triggers
content {
trigger_events = trigger_configuration.value.events
trigger_name = trigger_configuration.value.name
trigger_target_arn = trigger_configuration.value.target_arn
}
}
lifecycle {
ignore_changes = [blue_green_deployment_config]
}
tags = var.tags
}
Not sure why it is looking for loslas_sqs_retry deployment group in code deploy.
Can someone please help.