配置 AWS Worker Tier 应用程序

Posted

技术标签:

【中文标题】配置 AWS Worker Tier 应用程序【英文标题】:Configuring AWS Worker Tier App 【发布时间】:2016-01-22 17:24:23 【问题描述】:

我有一个托管在 ASW Elastic Beanstalk(Worker Tier)上的 rails 应用程序,我想设置一个常规的邮件发送。我在我的应用程序的根目录中包含了 cron.yaml 文件,如下所示。

cron.yaml

version: 1
cron:
 - name: "test-email"
   url: "/schedule/send_test_email"
   schedule: "*/10 * * * *"

来自 rake 路线

POST /schedule/send_test_email(.:format) schedule#send_test_email

我发布到的 API 端点

def send_test_email
  Merchant.test_production_email
  render json: nil, status: :ok
end

从日志中

-------------------------------------
/var/log/aws-sqsd/default.log
-------------------------------------
2015-10-23T07:09:59Z message: sent to %[http://localhost:80/schedule/send_test_email]
2015-10-23T07:09:59Z http-err: 257fb276-d39e-4068-baf0-9106434674c5 (1) 502 - 0.004
2015-10-23T07:10:01Z message: sent to %[http://localhost:80/schedule/send_test_email]
2015-10-23T07:10:01Z http-err: 257fb276-d39e-4068-baf0-9106434674c5 (2) 502 - 0.007
2015-10-23T07:10:03Z message: sent to %[http://localhost:80/schedule/send_test_email]
2015-10-23T07:10:03Z http-err: 257fb276-d39e-4068-baf0-9106434674c5 (3) 502 - 0.004
2015-10-23T07:10:05Z message: sent to %[http://localhost:80/schedule/send_test_email]

HTTP 请求在本地发布到 localhost:3000/schedule/send_test_email 返回 200。

亚马逊对 502 Bad Gateway 的故障排除

说明:表示负载均衡器无法解析从注册实例发送的响应。

原因:来自实例的错误响应或负载均衡器可能存在问题。

解决方案:验证从实例发送的响应是否符合 HTTP 规范。

我真的不知道这个问题是什么以及如何调试它。非常感谢您的帮助。

【问题讨论】:

我解决了这个问题。这实际上是缺少 secret_token 的问题。已添加 secret_token: 到 secrets.yml 然后使用命令 rake secret 生成一个秘密令牌,然后使用 eb setenv SECRET_TOKEN=******* 到设置它,然后 eb deploy 然后它就可以工作了! 请回答您自己的问题并接受它 【参考方案1】:

我解决了这个问题。这实际上是缺少 secret_token 的问题。

secret_token: 到 secrets.yml 然后使用命令 rake secret 生成一个秘密令牌,然后 eb setenv SECRET_TOKEN=******* 设置它,然后 eb部署然后它工作!

【讨论】:

以上是关于配置 AWS Worker Tier 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

AWS beanstalk中的worker-tier和web-tier有啥区别

AWS Beanstalk - nginx 强制 SSL 配置更改后,Worker env 不处理后台作业

AWS 运行 Rails 应用程序的架构指南(Web/Worker 设置)

AWS 中的静态文件配置不起作用

AWS Elastic Beanstalk Worker 队列行为

AWS EC2云端简单部署NodeJS应用