无法在 AWS Elastic Beanstalk 上创建新的 RDS 数据库

Posted

技术标签:

【中文标题】无法在 AWS Elastic Beanstalk 上创建新的 RDS 数据库【英文标题】:Cannot create a new RDS database on AWS Elastic Beanstalk 【发布时间】:2015-12-18 15:26:25 【问题描述】:

使用eb create 创建新环境后,我无法使用 AWS 控制台在我的环境中创建新的 RDS 数据库。它要求我从四个可用区域中至少选择两个可用区域。

无论我选择哪个我都会收到错误:

DBSubnets: Invalid option value: '["subnet-3dbb9564","subnet-b2edb199"]' (Namespace: 'aws:ec2:vpc', OptionName: 'DBSubnets'): 指定 VPC ID 并确保所有子网存在。

将 EB CLI 与以下命令 eb create --database.engine postgres 一起使用,我得到了超时。

Environment details for: iod-test
  Application name: image_of_day2
  Region: us-east-1
  Deployed Version: 642b
  Environment ID: e-u7q9j5ft2e
  Platform: 64bit Amazon Linux 2015.03 v2.0.1 running Python 2.7
  Tier: WebServer-Standard
  CNAME: iotd-test2.elasticbeanstalk.com
  Updated: 2015-09-21 19:29:37.262000+00:00
Printing Status:
INFO: createEnvironment is starting.
INFO: Using elasticbeanstalk-us-east-1-249541483051 as Amazon S3 storage bucket for environment data.
INFO: Created security group named: sg-7e948419
INFO: Environment health has transitioned to Pending. There are no instances.
INFO: Created security group named: awseb-e-u7q9j5ft2e-stack-AWSEBSecurityGroup-D0EHQ2UNQQWH
INFO: Created Auto Scaling launch configuration named: awseb-e-u7q9j5ft2e-stack-AWSEBAutoScalingLaunchConfiguration-FQZXDALSR4Z6
INFO: Created RDS database security group named: awseb-e-u7q9j5ft2e-stack-awsebrdsdbsecuritygroup-1xo7y4uzxrwgx
INFO: Creating RDS database named: aaaqgf0bktrtyg. This may take a few minutes.

ERROR: The operation timed out. The state of the environment is unknown.

我还有什么其他选择。这是 AWS 方面的问题吗?

【问题讨论】:

你有什么解决办法吗??我也遇到了同样的问题!!! @sabareesh 如果您遇到类似问题,我建议您投票赞成这个问题。 【参考方案1】:

关于无法从 Elastic Beanstalk 控制台创建数据库(您的第一个问题),这似乎是一个 AWS 问题。根据this post 的说法,这是一个他们希望修复的已知错误。

这看起来像是我们的控制台与某些 RDS 数据库实例类型的问题 我们将进行修复,但同时请尝试不同的 RDS 数据库实例类型或使用 EB CLI 使用 RDS 数据库创建您的环境。 以下是带有 --database 选项的 EB Create 命令的文档链接: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-create.html

我尝试了多种实例类型,但无法通过控制台创建它。我最终创建了一个单独的 RDS 实例并连接到该实例。 Here is a post 有关于连接到现有数据库的有趣点。

【讨论】:

【参考方案2】:

我使用此命令成功部署了 Django 应用程序

eb 创建 --database.engine postgres。

一旦应用上述命令,您将收到如下错误

错误:操作超时。环境状态未知。

收到此错误后,您只需 git add、commit 和 eb 部署项目。 使用这种方法,我成功地将 Django 项目部署到 AWS 下面添加了我的 .ebextensions 容器命令 01_packages.config

packages:
  yum:
    git: []
    libffi-devel: []
    python27-devel: []
    postgresql93: []
    postgresql93-devel: []
    gcc-c++: []

首先添加上述配置并设置正确的wsgi路径并在您的settings.py中设置正确的RDS配置。然后添加,提交和部署。之后添加下面的配置并部署

02_python.config

container_commands:
01_migrate:
    command: "source /opt/python/run/venv/bin/activate && python /opt/python/current/app/manage.py migrate --noinput"
    leader_only: true
02_collectstatic:
    command: "source /opt/python/run/venv/bin/activate && python /opt/python/current/app/manage.py collectstatic --noinput"
    leader_only: true
99_runscript:
    command: "source /opt/python/run/venv/bin/activate && python /opt/python/current/app/manage.py runscript init_db"

【讨论】:

谢谢,这在旧版本的 awsebcli 中过去是默认发生的,但您现在必须手动进行。【参考方案3】:

我在使用 EB CLI 时遇到了与您相同的错误消息,但在检查 AWS Web 控制台后,似乎数据库已在环境中成功创建。

【讨论】:

【参考方案4】:

看来您可能没有在 AWS 中创建 DBSubnet。

您是否为所有相关的可用区创建了 DBSubnet?如以下链接的第 3 步所述?

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo-vpc-rds.html#AWSHowTo-vpc-rds-subnet

创建数据库子网组

    打开 Amazon RDS 控制台https://console.aws.amazon.com/rds/。

    在导航窗格中,单击子网组。

    单击创建数据库子网组。

    单击名称,然后键入您的数据库子网组的名称。

    单击描述,然后描述您的数据库子网组。

    在 VPC ID 旁边,选择您创建的 VPC 的 ID。

    单击将子网添加到此子网组部分中的添加所有子网链接。

    完成后,单击是,创建 在确认窗口中,单击关闭。

【讨论】:

以上是关于无法在 AWS Elastic Beanstalk 上创建新的 RDS 数据库的主要内容,如果未能解决你的问题,请参考以下文章

AWS Elastic Beanstalk 无法担任角色

AWS - Elastic BeansTalk:[错误] 'php' 未找到或无法统计

超时后无法部署到 AWS Elastic Beanstalk

AWS Elastic Beanstalk 问题

无法在命令行或管理仪表板中创建 AWS Elastic Beanstalk 环境

AWS Elastic Beanstalk 错误我无法部署