Правильный способ подключения Private API Gateway к VP C в SAM (AWS IA C) - PullRequest
3 голосов
/ 29 февраля 2020

Я пытаюсь подключить AWS Private API Gateway к моему VP C через конечную точку VP C, которая уже существует в моем стеке развертывания, но когда я проверяю в консоли, я не вижу соединения .

Ниже приведены некоторые фрагменты кода из моего файла YML.

Я извлек конечную точку VP C из SSM и подтвердил, что это идентификатор конечной точки. Мой идентификатор конечной точки VPE выглядит как vpce-XXXXXXXXXXXX в SSM под «APIGW»

Parameters:
  TenantName:
    Type: String
  Profile:
    Type: String

  ...

  # VPC params for API GW
  VPC:
    Type: String
  APIGW:
    Type: String

Затем я создаю свой шлюз Private API следующим образом. Он содержит одну лямбду, определенную над этим API.

  PrivateApi:
    Type: AWS::Serverless::Api
    Properties:
      Name: PrivateApi
      StageName: v1
      MethodSettings:
        - HttpMethod: '*'
          ResourcePath: /*/*/*
          LoggingLevel: ERROR
          ThrottlingBurstLimit: 5000
          ThrottlingRateLimit: 10000
      EndpointConfiguration: PRIVATE
      DefinitionBody:
        swagger: 2.0
        info:
          title: PrivateApi
        x-amazon-apigateway-api-key-source: "HEADER"
        schemes:
          - https
        x-amazon-apigateway-policy:
          Version: "2012-10-17"
          Statement:
            -
              Effect: "Allow"
              Principal: "*"
              Action:
                - "execute-api:Invoke"
              Resource: "execute-api:/*"


              Condition:
                StringEquals:
                  aws:sourceVpce: !Ref APIGW 


        paths:
          /{proxy+}:
            x-amazon-apigateway-any-method:
              produces:
              - application/json
              parameters:
              - name: proxy
                in: path
                required: true
                type: string
              x-amazon-apigateway-integration:
                uri:
                  Fn::Sub: arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${HandleSecurityRouter.Arn}/invocations
                httpMethod: POST
                type: aws_proxy

Но если я посмотрю в консоли после успешного развертывания с использованием инструмента SAM, шлюз API не будет подключен ни к каким конечным точкам VP C.

Любая помощь в получении этой конечной точки VP C для подключения к моему Частному API-шлюзу с SAM будет очень признательна!

1 Ответ

1 голос
/ 02 марта 2020

После создания версии того, что мне было нужно, в консоли и превращения ее обратно в YML с помощью функции AWS «Экспортировать как Swagger» в «API» -> Этапы -> «Этап» -> Экспорт, я нашел недокументированное или трудно найти свойство сваггера API Gateway, которое необходимо добавить для связи частного шлюза с VP C через конечную точку VP C.

Требуются следующие строки в вашем сваггере :

      DefinitionBody:
        swagger: 2.0
        ...
        x-amazon-apigateway-endpoint-configuration:
          vpcEndpointIds:
            - !Ref API-Gateway-ID
...