配置 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 设置)