Развертывание cube.js с использованием безсерверной инфраструктуры приводит к ошибке - PullRequest
1 голос
/ 05 ноября 2019

Я пытаюсь развернуть проект cube.js, используя безсерверную инфраструктуру на aws, и когда я получаю доступ к конечной точке, созданной без сервера, это приводит к следующей ошибке в браузере

Cannot GET /

Вот мой файл serverless.yml

service: cloud-analytics

provider:
  name: aws
  stage: production
  runtime: nodejs8.10
  iamRoleStatements:
    - Effect: "Allow"
      Action:
        - "sns:*"    
        - "athena:*"
        - "s3:*"
        - "glue:*"
      Resource:
        - "*"
  vpc:
    securityGroupIds:
      - sg-xxxxxxxxx # Your DB and Redis security groups here
    subnetIds:
      - subnet-xxxxxxxxx
  environment:
    CUBEJS_AWS_KEY: ${opt:awsKey}
    CUBEJS_AWS_SECRET: ${opt:awsSecret}
    CUBEJS_AWS_REGION: us-east-1
    CUBEJS_AWS_S3_OUTPUT_LOCATION: ${opt:location}
    REDIS_URL: ${opt:redis_url_with_port}
    CUBEJS_DB_TYPE: athena
    CUBEJS_API_SECRET:XXXXXX
    CUBEJS_APP: "${self:service.name}-${self:provider.stage}"
    NODE_ENV: ${self:provider.stage}
    AWS_ACCOUNT_ID:
      Fn::Join:
        - ""
        - - Ref: "AWS::AccountId"

functions:
  cubejs:
    handler: cube.api
    timeout: 30
    events:
      - http:
          path: /
          method: GET
      - http:
          path: /{proxy+}
          method: ANY
  cubejsProcess:
    handler: cube.process
    timeout: 630
    events:
      - sns: "${self:service.name}-${self:provider.stage}-process"

plugins:
  - serverless-express

Я выполнил следующие действия в этом блоге, чтобы настроить файл NAT https://medium.com/@philippholly/aws-lambda-enable-outgoing-internet-access-within-vpc-8dd250e11e12

Cube.js какследует с опциями ядра сервера

const AWSHandlers = require('@cubejs-backend/serverless-aws');
const AthenaDriver = require('@cubejs-backend/athena-driver');

module.exports = new AWSHandlers({
  externalDbType: 'athena',
  externalDriverFactory: () => new AthenaDriver({
      accessKeyId: process.env.CUBEJS_AWS_KEY,
      secretAccessKey: process.env.CUBEJS_AWS_SECRET,
      region: process.env.CUBEJS_AWS_REGION,
      S3OutputLocation: process.env.CUBEJS_AWS_S3_OUTPUT_LOCATION
  })
});

Когда я запускаю конечную точку

https://xxxxx.execute -api.us-east-1.amazonaws.com / production /

, который выдается безсерверным API-шлюзом. Я получаю ошибку

Cannot GET /

В Cloudwatch я вижу cubejsлямбда вызывается и видит логи для начала и конца запроса идентификатора. Я не вижу никаких журналов на cubejsProcess lambda.

Где / Как я могу отладить это, чтобы увидеть, где проблема?

1 Ответ

1 голос
/ 06 ноября 2019

По умолчанию в производственном режиме Cube.js отключает возможности сервера dev, и поэтому вы не видите игровую площадку, работающую на / path: https://cube.dev/docs/deployment#production-mode. Пожалуйста, используйте REST API для тестирования вашего развертывания: https://cube.dev/docs/rest-api.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...