如何使用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'
}
答案 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