Amazon cloudformation Fn::GetAtt的无服务器CloudFormation模板错误实例引用了未定义的资源

Amazon cloudformation Fn::GetAtt的无服务器CloudFormation模板错误实例引用了未定义的资源,amazon-cloudformation,serverless-framework,Amazon Cloudformation,Serverless Framework,我正试图建立一个新的回购协议,但我一直收到错误 The CloudFormation template is invalid: Template error: instance of Fn::GetAtt references undefined resource uatLambdaRole 然而,在我的uat阶段中,具有完全相同格式的开发阶段工作得很好 我为每个环境都有一个资源文件 发展 uat 在myserverless.yml中,我的角色定义为 role: ${self:custom.

我正试图建立一个新的回购协议,但我一直收到错误

The CloudFormation template is invalid: Template error: instance of Fn::GetAtt 
references undefined resource uatLambdaRole
然而,在我的uat阶段中,具有完全相同格式的开发阶段工作得很好

我为每个环境都有一个资源文件

发展

uat

在my
serverless.yml
中,我的角色定义为

role: ${self:custom.stage}LambdaRole
舞台设置为

custom:
  stage: ${opt:stage, self:provider.stage}
运行
serverless deploy--stage dev--verbose
成功,但运行
serverless deploy--stage uat--verbose
失败并出现错误。有人能看出我做错了什么吗?uat资源直接从dev one复制,只更改了阶段名称

这是资源文件所在目录的屏幕截图

我没有在这里复制配置的关键部分,即对资源文件的实际引用

resources:
  Resources: ${file(./serverless-resources/${self:provider.stage}-resources.yml)}

问题是,我从指南中复制了这一点,并使用了
self:provider.stage
而不是
self:custom.stage
。当我改变这一点时,它就可以部署了

以相同的错误消息结束。我的问题是,我在
serverless.yml
中得到了“resource”和“resource”键

正确:


资源:#
custom:
  stage: ${opt:stage, self:provider.stage}
resources:
  Resources: ${file(./serverless-resources/${self:provider.stage}-resources.yml)}