我试图在AWS上使用无服务器框架部署cube.js项目,当我访问无服务器产生的端点时,在浏览器上导致以下错误
无法获取/
这是我的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网关生成,我得到错误
无法获取/
在Cloudwatch上,我看到正在调用cubejs lambda,并查看了有关开始和结束请求ID的日志。我没有在cubejsProcess lambda上看到任何日志。
在哪里/如何调试它以查看问题所在?