我正在从AWS SAM创建lambda,大多数情况下它们运行良好,但是我不确定如何为SQS触发的这些lambda授予权限。每当我进行构建/打包/部署时,我都尝试从控制台手动添加SQS触发器,并且出现以下错误:
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文件的指南。我想知道这个错误是否意味着我需要在build / package / deploy之前将策略添加到template.yaml。因此,我在Resources:MyFunction:Properties:policies:
下的yaml中添加了以下策略- SQSSendMessagePolicy:
QueueName: "*"
- SQSPollerPolicy:
QueueName: "*"
我从here获得了这些信息,但是我看不到“从SQS接收消息”策略,我不确定在哪里还能得到一个?还是这个问题呢?
我还尝试将以下内容添加到yaml:
Events:
MySQSEvent:
Type: SQS
Properties:
Queue:
!GetAtt arn:aws:sqs:eu-west-1:my_arn.my_queue
BatchSize: 10
但是,当我尝试部署时,这会给我以下错误:
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是唯一的警告。我赞赏在控制台上制作lambda可以使此操作变得更加容易,但不适用于版本控制。
到目前为止,我已经看了以下内容,但看不到明显的解决方案,该信息似乎不适用于我的用例; SO question 1,SO question 2,aws alter stack tutorial,aws cloudformation templates,dzone tutorial,aws docs。
真的会感激任何指针/帮助/操作指南/完整的解决方案吗?
非常感谢
答案 0 :(得分:1)
您的活动部分应该是这样
InteractionController
“ QUEUE_NAME”是您在“云形成”模板中的SQS队列的逻辑名称