1

如何使用API​​(而不是GUI或CLI)創建具有RDS層的EB環境?使用API​​配置使用RDS的ElasticBeanstalk

我可以使用GUI配置具有RDS層的EB環境。但目前,我正在使用API​​創建EB環境(通過boto3,它似乎只是REST API的一個包裝)。我通過與GUI創建的相同的OptionSettings(命名空間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(導致選擇相同的圖形用戶界面中創建的):

   { 
        '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

您是否可以從API部署RDS實例?我遇到了同樣的問題,努力用我的彈性beanstalk實例部署RDS實例。關於我能找到的唯一解決方案是指定一個保存的模板。但我真的不想這樣做。 – Squeegy

+0

不是我得到的最接近的就是古斯塔夫的答案,但是如果您通過GUI訪問,則不會獲得EBS集成 – natb1

回答

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

+0

謝謝但問題指出我想使用API​​而不是CLI – natb1

+0

哦對,我已經更新了我的答案。 – Gustaf