aws-cdk - ApiGateway с авторизатором Cognito для конечной точки Lambda-прокси - PullRequest
0 голосов
/ 17 июня 2019

У меня проблемы с настройкой API-шлюза с лямбда-прокси, защищенным пулом Cognito. Я использую aws-cdk 0.34.0 в машинописи.

Настройка, которую я ищу, - это API-шлюз с единственным ресурсом, который является прокси для лямбда-функции. Эту единственную конечную точку необходимо защитить с помощью пула пользователей Cognito.

Код, который я пытаюсь найти ниже.

Однако, когда я запускаю его, я получаю следующую ошибку ...

apiDeployment (Deployment2E842E9E) No integration defined for method (Service: AmazonApiGateway; Status Code: 400; Error Code: BadRequestException; Request ID: 64f4e3bb-9107-11e9-84f1-999724493159)
    new Deployment (/home/circleci/aws/node_modules/@aws-cdk/aws-apigateway/lib/deployment.ts:69:21)

Код моего машинописного текста ниже

    const backendLambda = new lambda.Function(
      this,
      "CampManager-backendLambda",
      {
        code: new lambda.AssetCode("../server/", AssetPackaging.ZipDirectory),
        handler: "src/index.js",
        timeout: 1000,
        runtime: lambda.Runtime.NodeJS10x
      }
    );

    const backendApi = new api.RestApi(this, "CampManager-backendApi");

    const userPool = new cognito.UserPool(this, "CampManager-userPool", {
      autoVerifiedAttributes: [],
      poolName: "CampManager-userPool",
      signInType: cognito.SignInType.Username,
      usernameAliasAttributes: [
        cognito.UserPoolAttribute.Email,
        cognito.UserPoolAttribute.PhoneNumber
      ]
    });

    const cognitoAuthorizer = new api.CfnAuthorizerV2(
      this,
      "CampManager-authorizer",
      {
        apiId: backendApi.restApiId,
        authorizerType: api.AuthorizationType.Cognito,
        identitySource: ["Authorisation"],
        authorizerUri: userPool.userPoolProviderUrl,
        name: "Cognito"
      }
    );

    backendApi.root.addProxy({
      defaultIntegration: new api.LambdaIntegration(backendLambda),
      defaultMethodOptions: {
        authorizationType: api.AuthorizationType.Cognito,
        authorizerId: cognitoAuthorizer.authorizerId,
        operationName: "Proxy"
      }
    });

    const apiDeployment = new api.Deployment(
      this,
      "CampManager-apiDeployment",
      {
        api: backendApi,
        description: "Camp Manager Deployment"
      }
    );

    const apiStage = new api.Stage(this, "CampManager-apiStage", {
      deployment: apiDeployment
    });
...