Указана неверная конечная точка HTTP для URI в Amazon ApiGateway

Я пытаюсь создать ресурс / пользователя / устройства с помощью метода GET для API-шлюза, используя шаблон облачной информации, но он дает мне следующую ошибку

Произошла ошибка: ApiGatewayRootMethod - для URI указана неверная конечная точка HTTP (Служба: AmazonApiGateway; Код состояния: 400; Код ошибки: BadRequestException; Идентификатор запроса:xxxxxxxxxx)

Ниже мой шаблон облачной информации,

AWSTemplateFormatVersion: 2018-11-13
Description: test user

resources:
  Resources:

    UserDeviceApiGateway:
      Type: "AWS::ApiGateway::RestApi"
      Properties:
        Name: "test-user-info"
        Description: "Fetch the user"

    UserResource:
      Type: 'AWS::ApiGateway::Resource'
      Properties:
        ParentId:
          Fn::GetAtt: ["UserDeviceApiGateway","RootResourceId"]
        RestApiId:
          Ref: "UserDeviceApiGateway"
        PathPart: 'user'

    Resource:
      Type: 'AWS::ApiGateway::Resource'
      Properties:
        ParentId:
          Ref: "UserResource"
        RestApiId:
          Ref: "UserDeviceApiGateway"
        PathPart: 'devices'

    ApiGatewayRootMethod:
      Type: "AWS::ApiGateway::Method"
      Properties:
        AuthorizationType: "NONE"
        HttpMethod: "GET"
        Integration:
          IntegrationHttpMethod: "GET"
          Type: "HTTP"
          Uri: Sub
            - "arn:aws:apigateway:arn:aws:lambda:eu-west-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-west-1:xxxxxxxx:function:user-device-lambda/invocations"
        ResourceId:
          Fn::GetAtt: ["UserDeviceApiGateway","RootResourceId"]
        RestApiId:
          Ref: "UserDeviceApiGateway"

    Deployment:
      DependsOn:
        - ApiGatewayRootMethod
      Type: 'AWS::ApiGateway::Deployment'
      Properties:
        RestApiId:
          Ref: "UserDeviceApiGateway"
        StageName: dev

0 ответов

Немного поздно на вечеринку, но...

Вы указываете Type: "HTTP" за ApiGatewayRootMethodно HTTP принимает URL-адрес конечной точки API. Указанное вами формирование URI принимаетсяType: "AWS".

Из документов AWS:

Универсальный идентификатор ресурса (URI) для интеграции.

Если вы указываете HTTP для свойства Type, укажите URL-адрес конечной точки API.

Если вы указываете MOCK для свойства Type, не указывайте это свойство.

Если вы указываете AWS для свойства Type, укажите сервис AWS, который следует этой форме: arn: aws: apigateway: region: subdomain.service|service:path| action / service_api. Например, URI лямбда-функции имеет следующую форму: arn:aws:apigateway:region:lambda:path/path. Путь обычно имеет вид /2015-03-31/functions/LambdaFunctionARN/invocations. Для получения дополнительной информации см. Свойство uri ресурса Integration в Справочнике по REST API Amazon API Gateway.

Если вы указали HTTP или AWS для свойства Type, вы должны указать это свойство.

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration.html

Другие вопросы по тегам