我正在尝试部署一个可访问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
答案 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