【问题标题】:how to disable sqs on elastic beanstalk如何在弹性豆茎上禁用 sqs
【发布时间】:2014-12-01 05:37:45
【问题描述】:

我在 AWS Elastic Beanstalk 上有一个 rails 应用程序。我使用delayed_job 处理后台任务。我设置了一个 eb worker 实例来处理这个问题。它可以工作,但在仪表板中显示为失败(红色)。我相信这是因为每隔几秒钟就会出现以下错误:

error: AWS::SQS::Errors::AccessDenied: Access to the resource https://sqs.us-west-2.amazonaws.com/xxx...xxxx is denied

我尝试通过以下方式删除sqs无济于事:

services:
  sysvinit:
    aws-sqsd:
      enabled: false
      ensureRunning: false 

如何停止sqs?理想情况下,它永远不会首先安装。如果我无法修改安装配置,是否有办法防止此错误影响我的环境状态?

【问题讨论】:

  • 即使在工作环境下,您也将拥有 nginx。你能更详细地解释一下你的用例吗?
  • 好的,谢谢 - 我有一个 Rails 应用程序,它使用 delay_job 处理后台任务。因此,我的工作人员只需要运行 rails(用于回形针和延迟作业)即可访问应用程序数据库和互联网连接。工作人员需要从 s3 下载 .wav 文件,使用 ffmpeg 处理它们,然后将它们上传回 s3。所以我不需要响应http请求。
  • 或许,我真正需要的只是 Ruby。但是我一直无法移除 Rails 并让我的 gems 满意,所以现在我想让工作人员使用 Rails 运行,也许以后再把它变薄。我非常感谢您能够提供的任何帮助
  • 理想情况下,我会推荐在这个用例中使用 Web 服务器环境。使用工作环境,您可以获得额外的资源,例如您不需要的 SQS 队列。还有一个在 EC2 实例上运行的后台守护程序。此守护程序轮询 SQS 队列。你不需要这些资源。我建议为您的用例使用 Web 服务器环境。
  • 好的。我会接受你的建议。感谢您的宝贵时间。

标签: ruby-on-rails amazon-web-services delayed-job amazon-elastic-beanstalk amazon-sqs


【解决方案1】:

您正在启动一个工作层环境。这就是为您的环境创建 SQS 的原因。如果您不想启动工作环境,则应启动“Web 服务器”环境。 Elastic Beanstalk 中的 Worker Tier 环境允许您定期轮询来自 SQS 队列的消息。

在此处阅读有关工作层环境的更多信息: http://aws.amazon.com/blogs/aws/background-task-handling-for-aws-elastic-beanstalk/

在此处阅读有关环境层的更多信息: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features-managing-env-tiers.html

如果您想使用启用了 SQS 的 Worker Tier 环境,您可以通过授予对 IAM 实例配置文件的访问权限以访问 SQS,从而摆脱 AccessDenied 异常,如下所述: https://stackoverflow.com/a/24880344/161628

【讨论】:

  • 谢谢先生。我使用 IAM 策略启用了队列。我想如果我使用 Nginx 之类的 Web 服务器,会有更多不必要的服务。
  • 即使在工作环境下,您也将拥有 nginx。你能更详细地解释一下你的用例吗?
猜你喜欢
  • 2016-01-13
  • 2015-04-02
  • 2013-05-25
  • 2023-03-19
  • 2013-01-19
  • 2018-05-01
  • 2015-03-20
相关资源
最近更新 更多