1

我在AWS Elastic Beanstalk上有一个rails应用程序。我使用delayed_job处理后台任务。我建立了一个eb工作者实例来处理这个问题。它可以工作,但在仪表板中显示为失败(红色)。我相信这是因为以下错误的,我得到每隔几秒钟:如何禁用弹性beanstalk上的sqs

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?理想情况下,它永远不会安装在第一位。如果我无法修改安装配置,是否有办法防止此错误影响我的环境状态?

+0

即使在工作环境中,您也将拥有nginx。你能详细解释你的用例吗? – 2014-10-07 15:38:01

+0

当然,谢谢 - 我有一个使用delayed_job处理后台任务的Rails应用程序。所以我的工作人员只需要运行rails(用于paperclip和delayed_job),以访问应用程序数据库和Internet连接。工作人员需要从s3下载.wav文件,使用ffmpeg处理它们,然后将它们上传回s3。所以我不需要回应http请求。 – laertiades 2014-10-07 17:56:51

+0

也许,我真正需要的是Ruby。但是我一直无法删除rails并保持我的gem快乐,所以现在我想让工作人员使用Rails运行,并且稍后可能会减少它。我非常感谢您能够提供的任何帮助 – laertiades 2014-10-07 18:15:56

回答

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你可以摆脱存取遭拒的例外,通过访问IAM实例配置文件来访问SQS,如下所述: https://stackoverflow.com/a/24880344/161628

+0

谢谢先生。我使用IAM策略启用了队列。我认为如果我使用诸如Nginx的网络服务器,会有更多不必要的服务。 – laertiades 2014-10-07 13:41:55

+0

即使有工作环境,你也会有nginx。你能详细解释你的用例吗? – 2014-10-07 15:39:12