首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用cloudformation/SAM创建SQS队列,并使用SAM创建lambda?

如何使用cloudformation/SAM创建SQS队列,并使用SAM创建lambda?
EN

Stack Overflow用户
提问于 2019-07-24 21:07:34
回答 1查看 2.4K关注 0票数 2

我正在从AWS SAM创建lambda,大多数情况下,它们工作得很好,但我不确定如何授予这些lambda由SQS触发的权限。每当我构建/package/deploy时,我都会尝试从控制台手动添加SQS触发器,并得到以下错误:

代码语言:javascript
复制
An error occurred when creating the trigger: The provided execution role does not have permissions to call ReceiveMessage on SQS (Service: AWSLambda; Status Code: 400; Error Code: InvalidParameterValueException

我完全意识到使用SAM创建SQS也是理想的,但是我找不到像样的指南,特别是关于如何构建yaml文件以用于部署的指南。我想知道这个错误是否意味着我需要在构建/打包/部署之前向template.yaml添加一个策略。因此,我在yaml的Resources:MyFunction:Properties: policies下添加了以下策略:

代码语言:javascript
复制
- SQSSendMessagePolicy:
    QueueName: "*"
- SQSPollerPolicy:
    QueueName: "*"

我从here得到了这些,但我看不到“从SQS接收消息”的策略,我不确定还能从哪里获得?或者这就是问题所在?

我还尝试将以下内容添加到yaml中:

代码语言:javascript
复制
  Events:
    MySQSEvent:
      Type: SQS
      Properties:
        Queue: 
          !GetAtt arn:aws:sqs:eu-west-1:my_arn.my_queue
        BatchSize: 10

但是,当我尝试部署时,这会显示以下错误:

代码语言:javascript
复制
Template error: instance of Fn::GetAtt references undefined resource arn:aws:cloudformation:eu-west-1:my_arn

我曾尝试寻找通过cloudformation设置SQS的指南,但好的指南似乎非常难以捉摸。周围的那些似乎过于冗长和复杂,使它们不适合新用户。

我所要做的就是将一个事件列表传递给一个SQS (可能带有一个lambda),然后它会对另一个lambda进行排队,以10个为一批(总共大约20,000个)接收这些事件。我需要能够用SAM做到这一点,这是唯一的警告。我很欣赏在控制台上做lambdas会让这件事变得容易得多,但它不适合版本控制。

到目前为止,我已经看过以下内容,没有明显的解决方案,这些信息似乎不太适合应用于我的用例:SO question 1SO question 2aws alter stack tutorialaws cloudformation templatesdzone tutorialaws docs

如果您有任何建议/帮助/how-to-guides/完整的工作解决方案,您会很感激吗?

非常感谢

EN

回答 1

Stack Overflow用户

发布于 2019-07-25 00:37:56

您的事件部分应该如下所示

代码语言:javascript
复制
Events:
MySQSEvent:
  Type: SQS
  Properties:
    Queue: !GetAtt QUEUE_NAME.Arn

其中,QUEUE_NAME是云形成模板中的队列的逻辑名称

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57183722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档