Sunil
Sunil

Reputation: 849

How to create Elastic Beanstalk Environment from boto3

I need to create Elastic Beanstalk Environment from boto3.

For which I guess the API sequence should be:

From this API we get the "Application Name":

Here i am passing below json as kwargs to api


{
  "ApplicationName": "APP-NAME",
  "EnvironmentName": "ABC-Nodejs",
  "CNAMEPrefix": "ABC-Neptune",
  "SolutionStackName": "64bit Amazon Linux 2016.03 v2.1.1 running Node.js"
}

Questions:

  1. How to mention that the Environment EC2 should be attached to which VPC and subnet
  2. In which Subnet its ELB should be created

Any sample code will be helpful Please Note: I have one public and one private subnet, we can control the creation of EC2 and ELB creation through subnet IDs

Upvotes: 1

Views: 1889

Answers (2)

Sunil
Sunil

Reputation: 849

Thanks nbalas, I am using below code to create EB.

Despite giving already created security group names in "aws:elb:loadbalancer" and "aws:autoscaling:launchconfiguration" it is creating new security groups and attaching them to EC2 instance and load balancer. So now both of the security groups new and old ones are attached to the resources. I don't want to create new security groups at all and want to use old ones only.

kwargs={
        "ApplicationName": "Test",
        "EnvironmentName": "ABC-Nodejs",
        "CNAMEPrefix": "ABC-ABC",
        "SolutionStackName": "64bit Amazon Linux 2016.03 v2.1.1 running Node.js",
        "OptionSettings": [
                           {
                            "Namespace": "aws:ec2:vpc",
                            "OptionName": "Subnets",
                            "Value": "subnet-*******0"
                            },
                           {
                            "Namespace": "aws:ec2:vpc",
                            "OptionName": "ELBSubnets",
                            "Value": "subnet-********1"
                            },
                           {
                            "Namespace": "aws:elb:loadbalancer",
                            "OptionName": "SecurityGroups",
                            "Value": "sg-*********2"
                            },
                           {
                            "Namespace": "aws:autoscaling:launchconfiguration",
                            "OptionName": "SecurityGroups",
                            "Value": "sg-**********3"
                            }
                           ]

        }
response = client.create_environment(**kwargs)

Upvotes: 0

nbalas
nbalas

Reputation: 1263

To set up dependent resources with your Environment you would have to use the Elastic Beanstalk Option Settings. Specifically for VPCs you can use the aws:ec2:vpc namespace, I've linked the documentation for those settings with that.

The code example would be something like this:

{
  ApplicationName: "APP-NAME",
  EnvironmentName: "ABC-Nodejs",
  CNAMEPrefix: "ABC-Neptune",
  SolutionStackName: "64bit Amazon Linux 2016.03 v2.1.1 running Node.js"
  OptionSettings=[
        {
            'Namespace': 'aws:ec2:vpc',
            'OptionName': 'VPCId',
            'Value': 'vpc-12345678'
        },
        {
            'Namespace': 'aws:ec2:vpc',
            'OptionName': 'ELBSubnets',
            'Value': 'subnet-11111111,subnet-22222222'
        },
    ],
}

Upvotes: 1

Related Questions