Amazon web services AWS SAM模板-定义API网关触发的SQS队列
试图通过AWS SAM CLI部署堆栈时遇到问题。我正在使用SAM简化模板,我将其打包并部署 我只想创建一个SQS队列,并隐式创建一个API网关,该网关只需将负载放入队列中 这就是我到目前为止所尝试的(我定义Queue+Api的代码片段): 运行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
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