如何从Heroku迁移到Amazon Web Services(AWS)

时间:2018-04-11 12:00:18

标签: amazon-web-services heroku elastic-beanstalk

我有一个使用heroku的rails应用程序。我想知道我是如何从Heroku迁移到AWS Elastic Beanstalk的。

我使用Heroku postgres,我在工作dynos上运行cron作业。

我在互联网上搜索,但大多数链接都使用docker,但我需要原生解决方案。

编辑: 我最好为稍后阅读的人写一些东西。

首先,我们在弹性beanstalk上设置环境变量。接下来,我们为RDS配置了database.yml文件。您可以按照this blog post进行这些初始设置步骤。

在这个过程中,sidekiq是最让我们受伤最多的事情。

我们使用Amazon ElastiCache创建了一个redis实例。然后我们更改了redis和sidekiq配置设置。在这方面,this blog post在这方面对我们非常有用。

下一步是备份我们的数据库并恢复到RDS。在此步骤之后,我们配置了ssl和dns设置。

同时,如果项目中有force_ssl配置设置,则会导致项目在新打开的弹性beanstalk环境中失败。因为弹性beanstalk默认没有任何ssl定义。

2 个答案:

答案 0 :(得分:1)

你在使用Heroku postgres吗?拉一个备份。将备份还原到RDS实例(不是由EBS启动的实例)。如果需要,您可以使用AWSbuild,codecommit和pipelines等AWS服务。否则打包您的仓库并将其上传到EBS。在EBS中设置环境变量,并关注AWS如何附加数据库。如果您需要一名工人,您需要就如何做到这一点做出一些决定。 EBS现在具有您可以使用的工作层,但您必须对您的应用进行一些更改。

您对我们的需求越具体,我们就越能提供帮助。

AWS docs on setting up a rails app on ebs

答案 1 :(得分:0)

Cron在EB上可能有点棘手(特别是与Heroku调度程序相比)。 This应该让你到那儿。

我还建议您保留一份您常用的常用heroku命令的EB翻译备忘单。例如,假设您已经完成eb ssh

heroku run console变为cd /var/app/current && rails c

heroku logs -t变为cd /var/app/current && tail -f log/*.log

然后继续。有点痛苦,但你有一个真正的shell,所以它更适应你正常的dev env调试习惯(比如,tail -f log/sidekiq.log如果你只想看你的sidekiq日志)。