Amazon web services AWS SAM模板-定义API网关触发的SQS队列

Amazon web services AWS SAM模板-定义API网关触发的SQS队列,amazon-web-services,amazon-cloudformation,amazon-sqs,aws-sam-cli,aws-sam,Amazon Web Services,Amazon Cloudformation,Amazon Sqs,Aws Sam Cli,Aws Sam,试图通过AWS SAM CLI部署堆栈时遇到问题。我正在使用SAM简化模板,我将其打包并部署 我只想创建一个SQS队列,并隐式创建一个API网关,该网关只需将负载放入队列中 这就是我到目前为止所尝试的(我定义Queue+Api的代码片段): 运行sam验证和sam包时一切正常,但运行sam部署时失败。为了获取错误,我使用了aws cloudformation描述堆栈事件——堆栈名myproject堆栈 STACKEVENTS MyProjectQueue-CREATE_FAILED-2

试图通过AWS SAM CLI部署堆栈时遇到问题。我正在使用SAM简化模板,我将其打包并部署

我只想创建一个SQS队列,并隐式创建一个API网关,该网关只需将负载放入队列中

这就是我到目前为止所尝试的(我定义Queue+Api的代码片段):

运行
sam验证
sam包
时一切正常,但运行
sam部署
时失败。为了获取错误,我使用了
aws cloudformation描述堆栈事件——堆栈名myproject堆栈

STACKEVENTS     
MyProjectQueue-CREATE_FAILED-2018-10-30T16:33:29.764Z       
MyProjectQueue                      
CREATE_FAILED   
Encountered unsupported property Events AWS::SQS::Queue arn:aws:cloudformation:eu-west-1:<MY_AWS>:stack/myproject-stack/<GIUD>     
myproject-stack  2018-10-30T16:33:29.764Z
STACKEVENTS
MyProjectQueue-CREATE_失败-2018-10-30T16:33:29.764Z
MyProjectQueue
创建\u失败
遇到不支持的属性事件AWS::SQS::队列arn:AWS:cloudformation:eu-west-1::stack/myproject stack/
myproject stack 2018-10-30T16:33:29.764Z
它清楚地表明,AWS::SQS::Queue不支持
事件。但这适用于Lambdas(资源类型
AWS::Serverless::Function
),这就是我尝试这种方法的原因

但是,如果可能的话,我希望避免在网关和队列之间使用lambda

是否可以直接为SQS队列定义API网关?怎么做


谢谢

您面临的错误是预期的
AWS::SQS::Queue
不支持
Events
属性,而
AWS::Serverless::Function

不确定我是否完全理解了您的用例,但我建议您看看函数的
事件
属性,这是您应该能够做到的。

资源类型不支持
事件
属性,如
AWS::Serverless::function
。AmazonAPI网关确实支持直接调用另一个AWS服务(如SQS)的资源方法,而不需要中间的Lambda函数

我建议您在SAM模板中创建一个
AWS::Serverless::Api
资源,该资源引用定义Api资源方法的OpenAPI(Swagger)文件。然后使用OpenAPI扩展来定义API资源方法和SQS队列之间的集成


我还建议遵循链接的AWS文档提示,首先使用控制台定义与SQS的集成,然后将其导出到OpenAPI定义文件。这将比从头开始编写OpenAPI文件更容易。

我想知道是否可以隐式地定义它(根据Lambda),但找不到任何关于它的内容,因此我尝试使用
事件
。似乎我必须遵循这条路径,然后将API GW定义为一个资源。为导出定义的建议干杯欢迎您在上打开一个问题,询问此功能。
STACKEVENTS     
MyProjectQueue-CREATE_FAILED-2018-10-30T16:33:29.764Z       
MyProjectQueue                      
CREATE_FAILED   
Encountered unsupported property Events AWS::SQS::Queue arn:aws:cloudformation:eu-west-1:<MY_AWS>:stack/myproject-stack/<GIUD>     
myproject-stack  2018-10-30T16:33:29.764Z