Интеграция HTTP-прокси API шлюза с aws-sam (НЕ Lambda Proxy)

Я пытаюсь использовать aws-sam для разработки / моделирования моего шлюза API локально. Мой API-шлюз свободно использует интеграцию HTTP-прокси. Производственный ресурс выглядит так:

Все примеры aws-sam, которые я нашел, а также сопутствующая документация и вопросы и ответы, используют интеграцию Lambda / имеют жесткую зависимость от функции Lambda, являющейся прокси-ресурсом, по сравнению с интеграцией прокси-сервера HTTP.

Есть ли способ определить прокси-ресурс HTTP для приложения aws-sam? (В отличие от ресурса Lambda Proxy?)

Связанные с:

2 ответа

Да, SAM - это просто преобразование облачных образований. Таким образом, вы по-прежнему можете создавать традиционные объекты Cloud Formation как обычно. Возможно, вы также сможете прикрепить его к своему Serverless::API, но я менее уверен в этом.

Resource:
  Api:
    Type: 'AWS::ApiGateway::RestApi'
    Properties:
      Description: A test API
      Name: MyRestAPI

    Type: 'AWS::ApiGateway::Resource'
    Properties:
      ParentId: !GetAtt Api.RootResourceId
      RestApiId: !Ref Api
      PathPart: '{proxy+}'

или возможно (непроверено):

Resource:
  Api:
    Type: 'AWS::Serverless::Api'
    Properties:
      Description: A test API
      Name: MyRestAPI

    Type: 'AWS::ApiGateway::Resource'
    Properties:
      ParentId: !GetAtt Api.RootResourceId
      RestApiId: !Ref Api
      PathPart: '{proxy+}'

Я протестировал второе предложение JA, и оно работает! Спасибо.

        MyGalleryApi:
    Type: AWS::Serverless::Api
    Properties:
      StageName: prod

  GetImagesResource:
    Type: AWS::ApiGateway::Resource
    Properties:
      RestApiId: !Ref MyGalleryApi
      ParentId: !GetAtt MyGalleryApi.RootResourceId
      PathPart: getImages

  GetImagesMethod:
    Type: AWS::ApiGateway::Method
    Properties:
      RestApiId: !Ref MyGalleryApi
      ResourceId: !Ref GetImagesResource
      HttpMethod: GET
      AuthorizationType: AWS_IAM
      Integration:
        Type: HTTP_PROXY
        IntegrationHttpMethod: GET
        Uri: https://proxy.com/path/getImages

Вы можете объединить HTTP_PROXY и LAMBA_PROXY вместе в одном шаблоне, используя RestApiIdв определении вашей функции:

        NonceFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: src/handlers/nonce.handler
      Role: !GetAtt MyGalleryLambdaExecutionRole.Arn
      Architectures:
        - x86_64
      MemorySize: 256
      Description: Nonce function to start authentication
      Policies:
        - DynamoDBCrudPolicy:
            TableName: !Ref UsersTable
      Environment:
        Variables:
          USERTABLE_NAME: !Ref UsersTable
      Events:
        ApiEvent:
          Type: Api
          Properties:
            Path: /nonce
            Method: GET
            RestApiId: !Ref MyGalleryApi
            RequestParameters:
              - method.request.path.address:
                  Required: True
Другие вопросы по тегам