【问题标题】:Config ElasticBeanstalk with RDS using API使用 API 使用 RDS 配置 ElasticBeanstalk
【发布时间】:2016-03-20 11:16:09
【问题描述】:

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

我可以使用 GUI 配置带有 RDS 层的 EB 环境。但目前,我正在使用 API 创建 EB 环境(通过 boto3,它似乎只是 REST API 的包装器)。我传递了与 GUI 创建的选项设置相同的选项设置(命名空间aws:rds:dbinstance),但这不会导致创建 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'
                }

【问题讨论】:

  • 您是否能够从 API 部署 RDS 实例?我遇到了同样的问题,正在努力用我的弹性 beantalk 实例部署 RDS 实例。关于我能找到的唯一解决方案是指定一个保存的模板。但我真的不想这样做。
  • 不,我得到的最接近的是 Gustaf 的答案,但如果你通过 GUI,你不会得到 EBS 集成

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


【解决方案1】:

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

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

【讨论】:

  • 谢谢,但问题表明我想使用 API 而不是 CLI
猜你喜欢
  • 2014-11-14
  • 2015-10-18
  • 2018-03-28
  • 1970-01-01
  • 2020-11-04
  • 2020-12-14
  • 2013-11-13
  • 2014-01-25
  • 2017-07-12
相关资源
最近更新 更多