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

为什么在将Angular项目部署到S3时会遇到403和502错误?,angular,entity-framework,amazon-s3,aws-lambda,jenkins-pipeline,Angular,Entity Framework,Amazon S3,Aws Lambda,Jenkins Pipeline,我正在尝试部署一个Angular项目,该项目访问S3的.NET核心Web API。我已经将我的Web API部署到Lambda,并且能够在本地运行Angular项目时使用它。但是,当我将其部署到S3时,我的页面显示{“message”:“internalserver error”}。控制台显示以下错误: 加载资源失败:服务器响应状态为403() 加载资源失败:服务器响应状态为502() 如前所述,我尝试在本地运行Angular项目,使用部署到Lambda时生成的url。我能够执行所有REST

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

  • 加载资源失败:服务器响应状态为403()
  • 加载资源失败:服务器响应状态为502()
如前所述,我尝试在本地运行Angular项目,使用部署到Lambda时生成的url。我能够执行所有RESTAPI,我的项目也能按预期工作。在将.NET核心项目部署到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 /

{
    "/api/*": {
        "target":"[Lambda URL]/dev/api/",
        "secure":false,
        "changeOrigin":true 
    }
}
我的
proxy.conf.json
文件如下所示:

# 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 /

{
    "/api/*": {
        "target":"[Lambda URL]/dev/api/",
        "secure":false,
        "changeOrigin":true 
    }
}
请告诉我是否需要添加任何其他代码来诊断问题。我没有添加任何.NET核心代码或任何实际的HTML/Typescript代码,因为我目前认为这些代码不会影响手头的问题。但是,如果需要这些,我将提供一些摘录

预期的输出应该是一个简单的HTML页面,为学生显示一个简单的输入表单(包括名字、姓氏和其他一些细节)。除此之外,还有一个列表,其中包含数据库中已经存在的所有学生。单击这些按钮将用特定学生的详细信息填充表单


这正是我运行
ngservice--open
时产生的结果。只有在我运行npm运行build:serverless:deploy时才会发生错误。您可能在API网关中附加到URL的“stage”路径有问题。(即:/production/)

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

有关更多信息,请参阅本文(ctrl+f 403):