Hello Developer,
Here is my Terraform code below. This is code is working perfectly in my local machine but whenever I merge it and deploy with Github CI/CD it shows the following error ,
Code
data "aws_elastic_beanstalk_hosted_zone" "current" {}
resource "aws_elastic_beanstalk_application" "shopifyElb" {
name = "shopify-app-${var.environment}"
}
resource "aws_elastic_beanstalk_environment" "beanstalk_app_env" {
name ="${var.app_tags}-${var.environment}-Api"
application = aws_elastic_beanstalk_application.shopifyElb.name
solution_stack_name = "64bit Amazon Linux 2 v5.8.4 running Node.js 16"
depends_on = [aws_elastic_beanstalk_application.shopifyElb]
tags = {
APP_NAME = "${var.app_tags}-${var.environment}"
}
setting {
namespace = "aws:ec2:vpc"
name = "VPCId"
value = var.vpc_id
}
setting {
namespace = "aws:autoscaling:launchconfiguration"
name = "IamInstanceProfile"
value = "aws-elasticbeanstalk-ec2-role"
}
setting {
namespace = "aws:elasticbeanstalk:environment"
name = "ServiceRole"
value = "aws-elasticbeanstalk-service-role"
}
setting {
namespace = "aws:ec2:vpc"
name = "AssociatePublicIpAddress"
value = "True"
}
setting {
namespace = "aws:autoscaling:launchconfiguration"
name = "DisableIMDSv1"
value = "true"
}
setting {
namespace = "aws:ec2:vpc"
name = "Subnets"
value = var.ec2_subnets
}
setting {
namespace = "aws:ec2:vpc"
name = "ELBSubnets"
value = join(",", var.elb_subnets)
}
setting {
namespace = "aws:elasticbeanstalk:environment:process:default"
name = "MatcherHTTPCode"
value = "200"
}
setting {
namespace = "aws:elasticbeanstalk:environment"
name = "LoadBalancerType"
value = "application"
}
setting {
namespace = "aws:autoscaling:launchconfiguration"
name = "InstanceType"
value = var.instance_type
}
setting {
namespace = "aws:autoscaling:launchconfiguration"
name = "RootVolumeType"
value = "gp3"
}
setting {
namespace = "aws:autoscaling:launchconfiguration"
name = "RootVolumeSize"
value = var.disk_size
}
setting {
namespace = "aws:autoscaling:launchconfiguration"
name = "RootVolumeIOPS"
value = 3000
}
setting {
namespace = "aws:autoscaling:launchconfiguration"
name = "RootVolumeThroughput"
value = 125
}
setting {
namespace = "aws:ec2:vpc"
name = "ELBScheme"
value = "internet facing"
}
setting {
namespace = "aws:autoscaling:asg"
name = "MinSize"
value = 1
}
setting {
namespace = "aws:autoscaling:asg"
name = "MaxSize"
value = 4
}
setting {
namespace = "aws:elasticbeanstalk:healthreporting:system"
name = "SystemType"
value = "enhanced"
}
setting {
namespace = "aws:autoscaling:updatepolicy:rollingupdate"
name = "RollingUpdateEnabled"
value = true
}
setting {
namespace = "aws:autoscaling:updatepolicy:rollingupdate"
name = "RollingUpdateType"
value = "Health"
}
setting {
namespace = "aws:autoscaling:updatepolicy:rollingupdate"
name = "MinInstancesInService"
value = 1
}
setting {
namespace = "aws:elasticbeanstalk:command"
name = "DeploymentPolicy"
value = "RollingWithAdditionalBatch"
}
setting {
namespace = "aws:autoscaling:updatepolicy:rollingupdate"
name = "MaxBatchSize"
value = 1
}
setting {
namespace = "aws:elasticbeanstalk:command"
name = "BatchSizeType"
value = "Percentage"
}
setting {
namespace = "aws:elasticbeanstalk:command"
name = "BatchSize"
value = 30
}
###=========================== Logging ========================== ###
setting {
namespace = "aws:elasticbeanstalk:hostmanager"
name = "LogPublicationControl"
value = false
}
setting {
namespace = "aws:elasticbeanstalk:cloudwatch:logs"
name = "StreamLogs"
value = true
}
setting {
namespace = "aws:elasticbeanstalk:cloudwatch:logs"
name = "DeleteOnTerminate"
value = true
}
setting {
namespace = "aws:elasticbeanstalk:cloudwatch:logs"
name = "RetentionInDays"
value = 7
}
setting {
namespace = "aws:autoscaling:launchconfiguration"
name = "EC2KeyName"
value = var.keypair
}
###=========================== Load Balancer ========================== ###
setting {
namespace = "aws:elbv2:listener:default"
name = "ListenerEnabled"
value = false
}
setting {
namespace = "aws:elbv2:listener:443"
name = "ListenerEnabled"
value = true
}
setting {
namespace = "aws:elbv2:listener:443"
name = "Protocol"
value = "HTTPS"
}
setting {
namespace = "aws:elbv2:listener:443"
name = "SSLCertificateArns"
value = var.certificate
}
setting {
namespace = "aws:elbv2:listener:443"
name = "SSLPolicy"
value = "ELBSecurityPolicy-2016-08"
}
setting {
namespace = "aws:elasticbeanstalk:environment:process:default"
name = "HealthCheckPath"
value = "/"
}
setting {
namespace = "aws:elasticbeanstalk:environment:process:default"
name = "Port"
value = 80
}
setting {
namespace = "aws:elasticbeanstalk:environment:process:default"
name = "Protocol"
value = "HTTP"
}
###=========================== Autoscale trigger ========================== ###
setting {
namespace = "aws:autoscaling:trigger"
name = "MeasureName"
value = "CPUUtilization"
}
setting {
namespace = "aws:autoscaling:trigger"
name = "Statistic"
value = "Average"
}
setting {
namespace = "aws:autoscaling:trigger"
name = "Unit"
value = "Percent"
}
setting {
namespace = "aws:autoscaling:trigger"
name = "LowerThreshold"
value = 20
}
setting {
namespace = "aws:autoscaling:trigger"
name = "LowerBreachScaleIncrement"
value = -1
}
setting {
namespace = "aws:autoscaling:trigger"
name = "UpperThreshold"
value = 60
}
setting {
namespace = "aws:autoscaling:trigger"
name = "UpperBreachScaleIncrement"
value = 1
}
setting {
namespace = "aws:elasticbeanstalk:managedactions"
name = "ManagedActionsEnabled"
value = "true"
}
setting {
namespace = "aws:elasticbeanstalk:managedactions"
name = "PreferredStartTime"
value = "Tue:10:00"
}
setting {
namespace = "aws:elasticbeanstalk:managedactions:platformupdate"
name = "UpdateLevel"
value = "minor"
}
setting {
namespace = "aws:elasticbeanstalk:managedactions:platformupdate"
name = "InstanceRefreshEnabled"
value = "true"
}
}
resource "aws_lb_listener" "https_redirect" {
load_balancer_arn = aws_elastic_beanstalk_environment.beanstalk_app_env.load_balancers[0]
port = 80
protocol = "HTTP"
default_action {
type = "redirect"
redirect {
port = "443"
protocol = "HTTPS"
status_code = "HTTP_301"
}
}
}
data "aws_lb" "eb_lb" {
arn = aws_elastic_beanstalk_environment.beanstalk_app_env.load_balancers[0]
}
resource "aws_security_group_rule" "allow_80" {
type = "ingress"
from_port = 80
to_port = 80
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
security_group_id = tolist(data.aws_lb.eb_lb.security_groups)[0]
}
And the error is
ertex “module.eb.aws_elastic_beanstalk_application.shopifyElb” error: waiting for Elastic Beanstalk Application (shopify-***-staging) create: empty result
Since this is my first terraform project I don’t have enough knowledge to debug it.