在/var/log/eb-activity.log文件中,我发现了以下错误-
tasks:TOP=>db:migrate=>environment(通过运行任务查看完整跟踪)(executor::nonzeroexitstatus)
AppDeploystage0/AppDeployPrehook/12_db_migration.sh]:活动失败。
我在使用Elastic Beanstalk和外部Amazon RDS数据库时遇到了同样的问题。基本上,问题在于Elastic Beanstalk预部署脚本会试图在数据库存在之前迁移它。
我发现了两种方法来解决这个问题。
第一种方法是在应用程序配置上设置rails_skip_migrations=true
环境变量。这样至少可以部署代码库。之后,可以使用EB SSH
shell到应用程序中,浏览到/var/app/current/
文件夹,并手动运行bundle exec rails db:create
和bundle exec rails db:migrate
。
在项目中创建一个名为/.ebextensions/0001_rails_db_create.config
的文件,其内容如下:
files:
"/opt/elasticbeanstalk/hooks/appdeploy/pre/11_create_db.sh":
mode: "000755"
owner: root
group: root
content: |
#!/usr/bin/env bash
set -xe
EB_SCRIPT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k script_dir)
EB_APP_STAGING_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_staging_dir)
EB_APP_USER=$(/opt/elasticbeanstalk/bin/get-config container -k app_user)
EB_SUPPORT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k support_dir)
. $EB_SUPPORT_DIR/envvars
RAKE_TASK="db:create"
. $EB_SCRIPT_DIR/use-app-ruby.sh
cd $EB_APP_STAGING_DIR
if su -s /bin/bash -c "bundle exec $EB_SCRIPT_DIR/check-for-rake-task.rb $RAKE_TASK" $EB_APP_USER; then
if [ "$RAILS_SKIP_DB_CREATE" = "true" ]; then
echo "Skipping database creation (RAILS_SKIP_DB_CREATE=true)."
else
su -s /bin/bash -c "leader_only bundle exec rake db:create" $EB_APP_USER
fi
else
echo "No $RAKE_TASK task in Rakefile, skipping database creation."
fi
将该文件提交给git repo,然后运行EB Deploy
。
这将创建shell脚本挂钩文件,如果rails db不存在,则创建该文件。数据库迁移shell脚本钩子文件应该随后立即运行,因为它的名称以数字12开头。
我正在工作一个AWS弹性Beanstalk应用程序,上传文件到AWS S3桶。Beanstalk应用程序是一个.NET Core Web API应用程序,我遵循了本指南(http://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-config-netcore.html),并且在磁盘上有一个凭据文件,用于本地开发,其中有我的共享访
我正在按照这些说明在弹性Beanstalk管理的EC2实例上启用HTTPS。我可以看到弹性Beanstalk创建/etc/pki/Tls/certs/server.crt&/etc/pki/Tls/certs/server.key文件。但是,弹性Beanstalk没有创建/etc/httpd/conf.d/ssl.conf文件。但是,在环境创建后手动创建/etc/httpd/conf.d/ssl.
我使用CF模板创建Beanstalk环境。我想在创建环境时通过SNS触发Lambda代码,这样我就可以使用Lambda触发jenkins作业,并对新环境进行集成测试。 有没有办法在Beanstek中成功创建env后发送SNS消息?我已经定义了一个订阅lambda代码的主题。 beanstalk API允许您定义通知endpoint。http://docs.aws.amazon.com/elasti
我正在考虑是否可以根据应用程序部署到的Beanstalk环境将React应用程序设置为具有特定的环境变量。 我的目标是使预编译的react代码具有特定于该环境的环境变量。我希望避免向用户提供具有所有环境变量的JS代码 是否可以使用MsBuild条件,以便根据所选的Beanstalk环境运行不同的构建脚本?或者可能是基于Beanstalk内部环境变量的条件?
将子域名别名到弹性Beanstalk环境ELBs的正确路由配置是什么? 我已将Amazon Route 53托管区域ID表中的s复制到映射: 我的资源有两个豆茎环境: 输出: 阶段和prod Beanstrk环境都在工作,即它们响应对的调用,以及由(看起来像)。毫不奇怪,证书是无效的,因为它期望域名是或。 现在我尝试添加Route 53配置: 当我尝试更新云形成堆栈时,我在AWS控制台中得到以下错