使用 API 使用 RDS 配置 ElasticBeanstalk

Posted

技术标签:

【中文标题】使用 API 使用 RDS 配置 ElasticBeanstalk【英文标题】:Config ElasticBeanstalk with RDS using API 【发布时间】: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 集成 【参考方案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

更多信息here 和here。

【讨论】:

谢谢,但问题表明我想使用 API 而不是 CLI

以上是关于使用 API 使用 RDS 配置 ElasticBeanstalk的主要内容,如果未能解决你的问题,请参考以下文章

如何为 AWS RDS 凭证创建配置文件并将其导入我的 AWS Lambda API?

使用 Golang API 将表从 Amazon RDS 导出到 csv 文件

如何为 RDS 配置 Elastic Beanstalk

markdown 配置。 AWS PostgreSQL RDS使用pgbadger

eb 从 rds 快照创建

AWS RDS 的使用