使用API​​使用RDS配置ElasticBeanstalk

时间:2015-12-14 20:34:37

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

如何使用API​​(而不是GUI或CLI)创建具有RDS层的EB环境?

我可以使用GUI配置带有RDS层的EB环境。但是目前,我正在使用API​​来创建EB环境(通过boto3,它似乎只是REST API的包装器)。我传递与GUI(名称空间aws:rds:dbinstance)创建的OptionSetting相同的OptionSettings,但这不会导致创建RDS实例或层。我的配置和GUI创建的配置之间的唯一区别是由GUI创建的部分,如下所示:

Extensions:
  RDS.EBConsoleSnippet:
    Order: null
    SourceLocation: https://s3-us-west-2.amazonaws.com/elasticbeanstalk-env-resources-us-west-2/eb_snippets/rds/rds.json

我已将此逐字添加到.ebextensions目录中的yaml文件中(此目录随后会添加到我的部署包中),但仍然没有骰子。

以下是相关的OptionSettings(导致选项与GUI创建的选项相同):

                {
                    'Namespace':'aws:ec2:vpc',
                    'OptionName': 'DBSubnets',
                    'Value': '<redacted>'
                },
                {
                    'Namespace':'aws:rds:dbinstance',
                    'OptionName': 'DBEngine',
                    'Value': 'mysql'
                },
                {
                    'Namespace':'aws:rds:dbinstance',
                    'OptionName': 'DBEngineVersion',
                    'Value': '5.6.23'
                },
                {
                    'Namespace':'aws:rds:dbinstance',
                    'OptionName': 'DBInstanceClass',
                    'Value': 'db.t2.micro'
                },
                {
                    'Namespace':'aws:rds:dbinstance',
                    'OptionName': 'DBUser',
                    'Value': os.environ['RDS_USER']
                },
                {
                    'Namespace':'aws:rds:dbinstance',
                    'OptionName': 'DBPassword',
                    'Value': os.environ['RDS_PASSWORD']
                },
                {
                    'Namespace':'aws:rds:dbinstance',
                    'OptionName': 'DBAllocatedStorage',
                    'Value': '5'
                },
                {
                    'Namespace':'aws:rds:dbinstance',
                    'OptionName': 'MultiAZDatabase',
                    'Value': 'false'
                },
                {
                    'Namespace':'aws:rds:dbinstance',
                    'OptionName': 'DBDeletionPolicy',
                    'Value': 'snapshot'
                }

1 个答案:

答案 0 :(得分:0)

您可以在创建环境时定义数据库,如下所示:

eb create --database --database.engine mysql --region eu-west-1

更新: 您还可以使用.ebextensions中的配置中的资源标记创建数据库,如下所示:

Resources:
    AWSEBRDSDatabase:
        Type: AWS::RDS::DBInstance
        Properties:
            AllocatedStorage: 5
            DBInstanceClass: db.t2.micro
            DBName: database_name
            Engine: mysql
            EngineVersion: 5.5
            MasterUsername: root
            MasterUserPassword: password

更多信息herehere