AWS CloudFormation 堆栈部署失败,并出现错误"property Responses not defined for resource of type API"



这个问题现在已经解决了,但我想留下它,以防它对其他人有帮助。 问题是我误解了错误。 我将"未为 API 类型的资源定义的属性响应"解释为我没有定义任何内容,而实际上这意味着 API 资源没有名为响应的属性。我不知道为什么它更早地工作,但是一旦我删除了响应条目,部署就成功了。

3 周前,我创建了一个 CloudFormation 堆栈,用于创建具有 lambda 函数的 API 网关。

我使用了dotnet lambda。EmptyServerless 项目类型(在运行 Visual Studio Community Edition 的 Mac 上)。

我多次使用 dotnet cli 成功部署了该应用程序

dotnet lambda deploy-serverless

但是截至昨天,部署失败并出现错误

无法创建 CloudFormation 更改集:转换 AWS::无服务器-2016-10-31 失败,出现:无效的无服务器应用程序 规范文档。发现的错误数:1。 具有 ID 的资源 [PostRegistrationPutResource] 无效。属性 响应 不 为 API 类型的资源定义

这与我之前使用的模板完全相同;该方法不是新的,我没有更改其资源条目。

这是相关条目(格式是正确的,但当我在这里通过它时会发生变化):

PostRegistration:
Type: 'AWS::Serverless::Function'
Properties:
Handler: 'lambda::lambda.Functions::GetWorkshops'
Runtime: dotnetcore2.0
CodeUri: ''
MemorySize: 256
Timeout: 30
Role: null
Policies:
- AWSLambdaBasicExecutionRole
Events:
PutResource:
Type: Api
Properties:
Path: /registration
Method: POST
Responses:
method.response.header.Access-Control-Allow-Origin: '''*'''

以下是我认为可能与我的环境相关的一些事情:

  1. 我上周更新到最新的High Sierra版本。
  2. 由于该更新,SSH 握手被中断以访问 RDS 数据库。
  3. 为了重新访问我的数据库,我下载了最新的dotnet核心版本和包含ssh问题修复程序的SQL操作版本。

另一个奇怪的症状是,当我直接在 Lambda 管理站点上测试这个 lambda 函数时,它无法读取帖子的正文,因此 lambda 失败了。 这就是导致我首先尝试重建堆栈的原因 - 我没有看到应该发布的数据。

当我使用 VS Community 为后期操作运行单元测试时,它失败了,出现我昨天在 SQL Ops 中看到的相同 ssh 问题。

作为最后的手段,我删除了整个堆栈(它仍在开发中)并尝试再次部署,结果相同。

我不知道还能尝试什么,也找不到任何其他关于此类问题的参考资料。

线索,有人吗?

我遇到了同样的问题,但通过以下方式解决了

CodeUri:
Bucket: !Ref LambdaBucketName
Key: abc.zip

CodeUri必须具有Bucketkey参数和值。

最新更新