将Angular Project部署到S3时为什么会遇到403和502错误?

时间:2019-06-12 15:42:10

标签: angular entity-framework amazon-s3 aws-lambda jenkins-pipeline

我正在尝试部署一个可访问S3的.NET Core Web API的Angular项目。我已经将Web API部署到Lambda,并且在本地运行Angular项目时可以使用它。但是,当我将其部署到S3时,页面将显示{"message": "Internal server error"}。控制台显示以下错误:

  • Failed to load resource: the server responded with a status of 403 ()
  • Failed to load resource: the server responded with a status of 502 ()

如前所述,我尝试使用部署到Lambda时生成的url在本地运行Angular项目。我能够执行所有REST API,并且我的项目按预期工作。我只是将.NET Core项目部署到Lambda时遇到了类似的问题,但是发现问题是我没有正确设置Lambda的权限。我希望这里的问题具有相同的性质,但不确定从哪里开始。

我的serverless.yml文件如下:

# generated by @ng-toolkit/serverless
service: [service-name]

plugins:
  - serverless-apigw-binary

provider:
  name: aws
  runtime: nodejs8.10
  memorySize: 192
  timeout: 10
  stage: production
  region: us-east-1

package:
  exclude:
   - src/**
   - node_modules/**
   - firebug-lite/**
   - e2e/**
   - coverage/**
   - '!node_modules/aws-serverless-express/**'
   - '!node_modules/binary-case/**'
   - '!node_modules/type-is/**'
   - '!node_modules/media-typer/**'
   - '!node_modules/mime-types/**'
   - '!node_modules/mime-db/**'

custom:
  apigwBinary:
    types:
      - '*/*'

functions:
  api:
    handler: lambda.universal
    events:
      - http: ANY {proxy+}
      - http: ANY /

我的proxy.conf.json文件如下:

{
    "/api/*": {
        "target":"[Lambda URL]/dev/api/",
        "secure":false,
        "changeOrigin":true 
    }
}

请让我知道是否需要添加任何其他代码来诊断问题。我没有添加任何.NET Core代码或任何实际的HTML / Typescript代码,因为我目前不认为这些会影响当前的问题。但是,如果需要这些内容,我将提供一些摘录。

预期的输出应该是一个简单的HTML页面,该页面显示用于学生的简单输入表单(带有名字,姓氏和其他一些详细信息)。随之而来的是一个包含所有数据库中已经存在的学生的列表。单击这些将使用该特定学生的详细信息填充表格。

这正是我仅运行ng serve --open时产生的结果。仅当我运行npm run build:serverless:deploy

时才会发生错误

1 个答案:

答案 0 :(得分:0)

您可能对添加到API Gateway中URL的“阶段”路径有疑问。 (即:/ production /)

标准建议是为API网关注册自定义域,但您也可以尝试将项目索引修改为其他路径。

有关更多信息,请参见本文(ctrl + f 403):https://www.twilio.com/blog/2017/09/serverless-deploy-nodejs-application-on-faas-without-pain.html