簡體   English   中英

如何使用 Amazon SQS 作為 Celery 代理,而不創建/列出隊列?

[英]How to use Amazon SQS as Celery broker, without creating / listing queues?

對於一個項目,我的組織計划將 Celery 代理從 redis 轉移到 SQS。 有人可以指導我如何調整 Celery 設置,以便我可以使用預定義的 SQS 隊列,而無需 celery 嘗試創建/列出隊列(因為我沒有這些權限)。

我嘗試了以下設置:

CELERY_BROKER_URL = 'sqs://'
CELERY_BROKER_TRANSPORT_OPTIONS = {
    'predefined_queues':{
        'MyQueue' : {
            'url' : '<SQS Queue URL>',
        }
    }
}
CELERY_TASK_DEFAULT_QUEUE = 'MyQueue'
CELERY_ROUTES = {
    'tasks.*':{
        'queue' : 'MyQueue'
    }
}

應用這些設置后,每當我嘗試通過 celery 向 SQS 隊列發送消息時,我仍然收到以下錯誤: An error occurred (AccessDenied) when calling the CreateQueue operation: Access to the resource https://queue.amazonaws.com/ is denied.

為什么即使我通過了預定義隊列設置,芹菜仍然試圖創建隊列: https : //docs.celeryproject.org/en/stable/getting-started/brokers/sqs.html#predefined-queues

提前致謝!

Celery worker 需要關聯到允許 CreateQueue 操作的 IAM 角色。 如果您的 Celery 工作線程在 EC2 實例上運行,那么最簡單的做法是使用實​​例配置文件,並讓實例角色能夠執行 CreateQueue 操作。

即使我的公司是 AWS 的重度用戶(實際上一切都在 AWS 上),我建議您在決定使用工作站上無法使用的 AWS 服務時三思而后行,而 SQS 就是這樣一種服務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM