如何从boto3

时间:2016-08-11 15:48:57

标签: amazon-web-services elastic-beanstalk boto3 amazon-elastic-beanstalk

我需要从boto3创建Elastic Beanstalk环境。

我猜这个API序列应该是:

  • create_application()

从这个API我们得到“应用程序名称”:

  • create_environment( kwargs

在这里,我将json作为kwargs传递到api

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

问题:

  1. 如何提及环境EC2应该附加到哪个 VPC和子网
  2. 应在哪个子网中创建其ELB
  3. 任何示例代码都会有所帮助 请注意:我有一个公共子网和一个私有子网,我们可以通过子网ID控制EC2和ELB创建的创建

2 个答案:

答案 0 :(得分:0)

要使用您的环境设置相关资源,您必须使用Elastic Beanstalk选项设置。特别是对于VPC,您可以使用aws:ec2:vpc namespace,我已将这些设置的文档与此相关联。

代码示例如下:

{
  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'
        },
    ],
}

答案 1 :(得分:0)

感谢nbalas, 我使用下面的代码来创建EB。

尽管已在“aws:elb:loadbalancer”“aws:autoscaling:launchconfiguration”中提供已创建的安全组名称,但它正在创建新的安全组并将其附加到EC2实例和负载均衡器。所以现在新的和旧的安全组都附加到资源上。 我根本不想创建新的安全组,只想使用旧安全组。

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)