# Configure the AWS Provider
provider "aws" {
region = "us-east-1"
}
resource "aws_elastic_beanstalk_application" "app" {
name = "app"
description = "app"
}
resource "aws_elastic_beanstalk_environment" "app-test" {
name = "app-test"
application = "${aws_elastic_beanstalk_application.app.name}"
description = "app test"
solution_stack_name = "64bit Amazon Linux 2018.03 v2.9.3 running Python 3.6"
cname_prefix = "app-test"
tags = {
Name = "app-test"
}
setting {
namespace = "aws:ec2:vpc"
name = "VPCId"
value = "vpc-xxx"
}
setting {
namespace = "aws:ec2:vpc"
name = "AssociatePublicIpAddress"
value = "true"
}
setting {
namespace = "aws:ec2:vpc"
name = "Subnets"
value = "subnet-xxx"
}
setting {
namespace = "aws:ec2:vpc"
name = "ELBSubnets"
value = "subnet-xxx"
}
setting {
namespace = "aws:autoscaling:launchconfiguration"
name = "IamInstanceProfile"
value = "aws-elasticbeanstalk-ec2-role"
}
setting {
namespace = "aws:autoscaling:launchconfiguration"
name = "InstanceType"
value = "t2.micro"
}
setting {
namespace = "aws:autoscaling:asg"
name = "Availability Zones"
value = "Any"
}
setting {
namespace = "aws:autoscaling:asg"
name = "MinSize"
value = "1"
}
setting {
namespace = "aws:autoscaling:asg"
name = "MaxSize"
value = "2"
}
setting {
namespace = "aws:elasticbeanstalk:environment"
name = "ServiceRole"
value = "aws-elasticbeanstalk-service-role"
}
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 = "Immutable"
}
setting {
namespace = "aws:autoscaling:updatepolicy:rollingupdate"
name = "MinInstancesInService"
value = "1"
}
setting {
namespace = "aws:autoscaling:updatepolicy:rollingupdate"
name = "MaxBatchSize"
value = "1"
}
# HTTPS
setting {
namespace = "aws:elb:listener:443"
name = "InstancePort"
value = "80"
}
setting {
namespace = "aws:elb:listener:443"
name = "InstanceProtocol"
value = "HTTP"
}
setting {
namespace = "aws:elb:listener:443"
name = "ListenerEnabled"
value = "true"
}
setting {
namespace = "aws:elb:listener:443"
name = "ListenerProtocol"
value = "HTTPS"
}
setting {
namespace = "aws:elb:listener:443"
name = "SSLCertificateId"
value = "xxxx"
}
# STATIC FILE PATH
setting {
namespace = "aws:elasticbeanstalk:container:python"
name = "StaticFiles"
value = "/static/=app/static/"
}
# ENV variables
setting {
namespace = "aws:elasticbeanstalk:application:environment"
name = "stage"
value = "test"
}
}