Как добавить AWS :: ApiGateway :: Resource в AWS :: Serverless :: Api в шаблоне CloudFormation - PullRequest
0 голосов
/ 10 апреля 2020

В моем шаблоне CloudFormation я создаю ресурс Serverless :: Api, например,

Resources:
  RestApi:
    Type: AWS::Serverless::Api
    Properties:
      StageName: v1
      Auth:
        DefaultAuthorizer: DefaultAuthorizer
        Authorizers:
          TokenAuthorizer:
            FunctionArn: !GetAtt AuthorizerFunction.Arn

Затем я хочу добавить пользовательский ресурс в этот API, чтобы добавить этот ресурс в свой шаблон

Resources:
  ShareResource:
    Type: AWS::ApiGateway::Resource
    Properties:
      ParentId: !GetAtt RestApi.RootResourceId
      RestApiId: !Ref RestApi
      PathPart: 'share'

Когда я развертываю шаблон CloudFormation, он работает, и я не получаю ошибок, однако пользовательский ShareResource отсутствует в API, он нигде не существует. Однако, когда я смотрю на выходные данные события CloudFormation, он говорит, что ресурс создан.

Как мне этого добиться?

1 Ответ

0 голосов
/ 14 апреля 2020

Просто догадка, но это может быть вызвано отсутствием каких-либо методов внутри ресурса. попробуйте добавить дочерний AWS :: ApiGateway :: Method к вашему ресурсу и посмотрите, правильно ли собирается облачная информация. Например,

Resources:
  RestApi:
    Type: AWS::Serverless::Api
    Properties:
      StageName: v1
      Auth:
        DefaultAuthorizer: DefaultAuthorizer
        Authorizers:
          TokenAuthorizer:
            FunctionArn: !GetAtt AuthorizerFunction.Arn

  ShareResource:
    Type: AWS::ApiGateway::Resource
    Properties:
      ParentId: !GetAtt RestApi.RootResourceId
      RestApiId: !Ref RestApi
      PathPart: 'share'

  MockMethod:
    Type: 'AWS::ApiGateway::Method'
    Properties:
      RestApiId: !Ref RestApi
      ResourceId: !Ref ShareResource
      HttpMethod: GET
      AuthorizationType: NONE
      Integration:
        Type: MOCK
...