无法将 Rails API 应用程序部署到 AWS Elastic Beanstalk

Posted

技术标签:

【中文标题】无法将 Rails API 应用程序部署到 AWS Elastic Beanstalk【英文标题】:Unable to deploy Rails API app to AWS Elastic Beanstalk 【发布时间】:2021-03-01 03:17:01 【问题描述】:

我已关注this tutorial,了解如何将带有 RDS 的 Rails API 部署到 Elastic Beanstalk,并且在部署应用程序的最后一步之前,这一切都有效。每次我尝试部署时,我都会看到运行状况下降并且崩溃。我正在手动部署,而不是使用 AWS EB CLI 工具。我正在使用Mac。我检查了日志的最后 100 行,这是我看到的唯一错误:

[ERROR] An error occurred during execution of command [app-deploy] - [stage ruby application]. Stop running the command. Error: install dependencies in Gemfile failed with error Command /bin/sh -c bundle config set --local deployment true failed with error exit status 1. Stderr:rbenv: version `ruby-2.6.1' is not installed (set by /var/app/staging/.ruby-version)

当我尝试部署时,收到的消息如下:

Unsuccessful command execution on instance id(s) 'i-0f99244af00c70eb0'. Aborting the operation.

During an aborted deployment, some instances may have deployed the new application version. To ensure all instances are running the same version, re-deploy the appropriate application version.

Environment health has transitioned from Info to Degraded. Command failed on all instances. Incorrect application version found on all instances. Expected version "Sample Application" (deployment 13). Application update failed 13 seconds ago and took 77 seconds.

我真的需要让它工作,任何帮助将不胜感激!

【问题讨论】:

当您创建环境时,您指定了特定平台(即“Puma with Ruby 2.5 running on 64bit Amazon Linux/2.12.0”)。那是您的 Gemfile 中的 ruby​​ 版本吗?它是否与您的 Gemfile 中的应用服务器匹配?例如我的有gem 'puma', '~> 4.1' 【参考方案1】:

您必须将 .ruby-version 文件(有时还包括 Gemfile)中的 ruby​​ 版本更改为 AWS 文档中的列表之一

https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.ruby

现在 2.7.42.6.8 但 AWS 有时会更新版本

【讨论】:

以上是关于无法将 Rails API 应用程序部署到 AWS Elastic Beanstalk的主要内容,如果未能解决你的问题,请参考以下文章

Rails 部署到 AWS ElasticBeanstalk/RDS 失败

将 rails 6 部署到 AWS Beanstalk 时,系统中未检测到 Yarn 可执行文件

AWS Elastic Beanstalk Rails 4,已部署,需要帮助阅读日志文件和调试

Rails aws elastic beanstalk部署错误与数据库适配器

如何修复 AWS Elastic Beanstalk 部署的 Rails 5.2 应用程序捆绑程序问题

在 AWS Elastic Beanstalk 上部署 rails 应用程序