我一直在用ApiGateway,Lambda等资源构建更大的CloudFormation堆栈 .

对于最新的ApiGateway,我将AWS :: ApiGateway :: Methods直接放在/(rootresourceid)上,当从CloudFormation部署时,AWS :: ApiGateway :: Stage上的Authorizer将成为AWS_IAM,尽管我已经设置了一个自定义授权方法并使用DependsOn让资源等待 .

Post:
    DependsOn:
      - AuthorizerApi
    Type: AWS::ApiGateway::Method
    Properties:
      AuthorizationType: CUSTOM
      AuthorizerId: !Ref AuthorizerApi
      RestApiId: !Ref Api
      ResourceId: !GetAtt Api.RootResourceId
      HttpMethod: POST
      Integration:
        Type: AWS_PROXY
        IntegrationHttpMethod: POST
        Uri: !Join ['', ["arn:aws:apigateway:", !Ref "AWS::Region", ":lambda:path/2015-03-31/functions/", !GetAtt PostLambda.Outputs.FunctionGetAtt, ":${stageVariables.environment}/invocations"]]
      MethodResponses:
      - ResponseModels:
          application/json: Empty
        StatusCode: 200

有趣的是,这不是rootresource下资源的问题,所以它似乎是一个继承问题 .

任何经历过这种情况的人,如果要求不是根目录下的路径,解决方案是什么?