【发布时间】:2019-08-11 19:26:23
【问题描述】:
我有一个 Angular 应用程序,它从不同的服务器 (CORS) 调用 API 我已经设置了代理来这样做。
当我运行 npm start 时,它将运行 ng serve --port 80 --proxy-config proxy.conf.json
我的package.json 文件如下
{
"name": "appname",
"version": "0.0.0",
"scripts": {
"ng": "ng",
"start": "ng serve --port 80 --proxy-config proxy.conf.json",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
"private": true,
"dependencies": {
-- dependencies --
},
"devDependencies": {
-- devDependencies --
}
}
proxy.config.json 文件包含API 端点配置,如下所示。
{
"/api":{
"target": "http://url_to_my_api_server",
"secure": false,
"changeOrigin": true
}
}
我已将项目上传到 AWS EC2 (Ubuntu, Node 10.9.0, NPM 6.4.0) 实例并按照 THIS 教程使用 serverless 部署它。它创建了一个S3 存储桶,我可以访问前端。 HTML,CSS 和 JavaScript 正在正确加载,但图像不是。如果我打开图像显示Forbidden 403 错误。
以下是我的S3 Bucket 政策
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::s3-bucket-name/*"
]
}
]
}
另一个问题是API 我使用Proxy 执行的请求也显示相同的错误。
如何在S3 存储桶上正确托管网站并使用Proxy 进行API 调用(我不想向用户透露API 端点)。
还有其他方式来托管网站吗?
【问题讨论】:
-
您的资产文件夹在您的 S3 存储桶的根路径上的什么位置?您是否将存储桶规则编辑为公开阅读,也适用于资产文件夹和文件?
-
请检查更新后的问题,我已经使用
S3 Bucket策略更新了问题,我没有检查资产,因为它是由serverless自动部署的。我的存储桶中有很多嵌套文件夹。
标签: node.js angular amazon-s3 amazon-ec2 serverless-framework