Aws lambda 无服务器-dynamo streams-如何设置目标配置?
我有以下lambda配置:Aws lambda 无服务器-dynamo streams-如何设置目标配置?,aws-lambda,amazon-dynamodb,Aws Lambda,Amazon Dynamodb,我有以下lambda配置: MyFunc: handler: my_handler timeout: 60 role: myrole events: - stream: type: dynamodb arn: <<dynamo_db_stream_arn> startingPosition: LATEST maximumRetryAttempts: 3 destinations: onFailure
MyFunc:
handler: my_handler
timeout: 60
role: myrole
events:
- stream:
type: dynamodb
arn: <<dynamo_db_stream_arn>
startingPosition: LATEST
maximumRetryAttempts: 3
destinations:
onFailure: <sqs_queue_arn>
enabled: True
MyFunc:
处理者:我的处理者
超时:60
角色:我的角色
活动:
-流:
类型:发电机B
arn:尽管我喜欢serverless
framework,但除了开发Lambda函数之外,我不建议使用它,我甚至不会使用http
事件来创建API网关。坚持unix理念做一件好事,这就是我觉得无服务器应该坚持的,而不是试图成为另一个平台或其他东西,事实并非如此
因此,在serverless中创建Lambda函数就是这样。在其他地方做其他事情。如果可以在CloudformationAWS::Lambda::EventSourceMapping
中有效地管理资源,那么您可以使用它。如果把它放在参考资料:
中的serverless.yml
的底部是有意义的,您可以这样做,但如果不这样做,就让它拥有自己的模板
为DynamoDB流设置lambda需要很多权限,我不相信serverless
会为您这样做。正确的AWS prod设置也可能不允许某些外部工具创建iam角色
只要您与无服务器默认cloudformation模板有一点点不同,您就会遇到问题,可能您现在花了几个小时在一个本应为您节省时间的工具上,因此无法达到其目的。我建议制作更多的堆栈而不是更少的堆栈,当一个堆栈需要另一个堆栈中的Lambda时,使用约定,这实际上更容易操作,因为当一件事情失败时,您仍然可以更新其他堆栈,并在更改时交换堆栈,如果将所有堆栈都放在无服务器.yml
中,您就无法做到这一点。我认为您只是缺少了“arn:”
这是对我们有用的东西
maximumRetryAttempts: 10
maximumRecordAgeInSeconds: 300
bisectBatchOnFunctionError: true
destinations:
onFailure:
arn:
Fn::GetAtt:
- fileReducerDeadLetterQueue
- Arn
type: sqs
非常有趣,谢谢!此外,将其从lambda配置中删除并将其创建为不同的资源也起到了作用!我将添加作为编辑解决方案
maximumRetryAttempts: 10
maximumRecordAgeInSeconds: 300
bisectBatchOnFunctionError: true
destinations:
onFailure:
arn:
Fn::GetAtt:
- fileReducerDeadLetterQueue
- Arn
type: sqs