无法在 Cloudformation 模板中为 AWS::ApiGateway::Resource 指定资源标识符

Unable to specify Resource Identifier for AWS::ApiGateway::Resource in Cloudformation Template

我正在使用 SAM 部署一个简单的 Hello world 应用程序。一个与一个 API 端点,这将触发一个 lambda 函数,该函数 returns 文本 hello world。 我定义了以下资源:

  1. IAM 角色,以便 API网关可以调用 lambda 函数。
  2. AWS::ApiGateway::RestApi
  3. AWS::ApiGateway::Resource
  4. AWS::ApiGateway::方法
  5. AWS::无服务器::函数

诚然,我还不知道 2. 和 3. 在功能上的区别。

sam deploy 期间,我看到以下错误。

ROLLBACK_IN_PROGRESS                              AWS::CloudFormation::Stack                        go-hello-world                                    The following resource(s) failed to create:     
                                                                                                                                                      [HelloWorldAPIResource,                         
                                                                                                                                                      HelloWorldFunctionRole]. Rollback requested by  
                                                                                                                                                      user.                                           
CREATE_FAILED                                     AWS::IAM::Role                                    HelloWorldFunctionRole                            Resource creation cancelled                     
CREATE_FAILED                                     AWS::ApiGateway::Resource                         HelloWorldAPIResource                             Resource handler returned message: "Invalid     
                                                                                                                                                      Resource identifier specified (Service:         
                                                                                                                                                      ApiGateway, Status Code: 404, Request ID:       
                                                                                                                                                      62f34d79-86ab-47fd-85b1-5fbb55071520, Extended  
                                                                                                                                                      Request ID: null)" (RequestToken:               
                                                                                                                                                      9633d7db-7b6d-881b-f54e-ca0114862fd8,           
                                                                                                                                                      HandlerErrorCode: NotFound)

这意味着 AWS::ApiGateway::Resource 没有获得对 AWS::ApiGateway::RestApi 的有效引用。

这是我 template.yml

的相关部分
  HelloWorldAPI:
    Type: AWS::ApiGateway::RestApi
    Properties: 
      Name: HelloWorldApi

  HelloWorldAPIResource:
    Type: AWS::ApiGateway::Resource
    Properties:
      RestApiId: !Ref HelloWorldAPI
      ParentId: "/"
      PathPart: hello

总的来说,我是 CloudFormation 和 AWS 的新手,非常感谢您的帮助。

应该是:

 ParentId: !GetAtt HelloWorldAPI.RootResourceId