Sal*_*tro 6 amazon-sqs amazon-web-services aws-cloudformation aws-sam-cli aws-sam
我在尝试通过 部署我的堆栈时遇到问题AWS SAM CLI。我正在使用我打包和部署的 SAM 简化模板。
我想要的只是创建一个 SQS 队列并隐式创建一个 API 网关,该网关仅将有效负载放入队列中。
这是我到目前为止所尝试的(我定义 Queue + Api 的代码段):
MyProjectQueue:
Type: AWS::SQS::Queue
Properties:
Events:
MyProjectApi:
Type: Api
Properties:
Path: /myproject/push
Method: post
Run Code Online (Sandbox Code Playgroud)
sam validate当我跑步时一切都很好sam package,但当我跑步时却失败了sam deploy。获取我使用的错误aws cloudformation describe-stack-events --stack-name myproject-stack
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
Run Code Online (Sandbox Code Playgroud)
它清楚地表明了这一点Events it's not supported for AWS::SQS::Queue。但这适用于 Lambda(资源类型AWS::Serverless::Function),这就是我尝试这种方式的原因。
但是,如果可能的话,我想避免在网关和队列之间使用 lambda。
是否可以直接为SQS队列定义API网关?如何?
谢谢!
小智 6
AWS ::SQS::Queue资源类型不支持 之Events类的属性AWS::Serverless::Function。Amazon API Gateway 支持直接调用 SQS 等其他 AWS 服务的资源方法,而无需中间使用 Lambda 函数。
我的建议是您AWS::Serverless::Api在 SAM 模板中创建一个资源,该资源引用定义 API 资源方法的 OpenAPI (Swagger) 文件。然后使用x-amazon-apigateway-integration OpenAPI 扩展定义 API 资源方法和 SQS 队列之间的集成。
我还建议遵循链接的 AWS 文档提示并首先使用控制台定义与 SQS 的集成,然后将其导出到 OpenAPI 定义文件。这比尝试从头开始编写 OpenAPI 文件更容易。
tyr*_*ron -2
您所面临的错误是预期的。根据其文档AWS::SQS::Queue不支持Events属性,而支持。AWS::Serverless::Function
不确定我是否完全理解您的用例,但我建议您查看一下Events函数的属性,因为您应该能够将SQS 定义为 Event Source。
| 归档时间: |
|
| 查看次数: |
2661 次 |
| 最近记录: |