node.js - AWS Amplify 中的 NodeJS API 访问被拒绝
问题描述
我正在用 NodeJS 和 AWS Amplify 做一个简单的概念证明。
当我在本地机器上运行时,URL http://localhost:8080/api/books 从一个简单的 API 返回结果:
[{"title":"Harry Potter","id":1},{"title":"Twilight","id":2},{"title":"Lorien Legacies","id":3}]
我在我的机器上运行 AWS Amplify CLI 来创建、部署和构建 AWS Amplify 应用程序。这些步骤是成功的,但是当我尝试使用 AMPLIFY 域 ( https://master.abcdefgyijkl.amplifyapp.com/api/books/ ) 访问相同的页面 URL 时,我得到了以下结果:
<Error>
<script/>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>GF09KD45YG10T9FV</RequestId>
<HostId>+KnvI89dc3G2KGbfV+nrIZuLrDkEIRE+98PzqR0C4camFhqdDmjZR8X/i3hpIDVT9lYtmG5mIk=</HostId>
</Error>
这个Stackoverflow 问题/答案将我引导至重写规则。我尝试在那里使用 Vinit 的答案,替换 index.js,结果是浏览器显示了我的 index.js 程序的源代码,而不是“访问被拒绝”。这显然不是我想做的。
我没有这个StackOverflow中提到的 amplify.yaml 文件。
解决方案
您不应更改此答案中的重定向规则。这个想法是它应该重定向到构建的 index.html,假设这是一个前端项目。
另外,有时我需要创建一个默认值amplify.yaml
,因为它不能正确地自动检测到某些东西。
推荐阅读
- matlab - 在 MATLAB 中生成具有已知 PDF 表达式的随机变量
- reactjs - How to intercept message from Chatbot in a React component ? (Microsoft botframework-webchat)
- python - SSD和SSD Lite有什么区别??(Tensorflow)
- c - 矩阵的第一个索引被忽略
- python-3.x - 通过 EC2 进行 S3 身份验证,无需在代码或存储中传递 AWS 访问密钥和密钥
- javascript - 通过单击图像将文本插入输入字段
- swift - 只有一个 Swift 按钮 = 致命错误:在展开可选值时意外发现 nil
- r - 使用 R 中的 Plot 减小图例的字体大小并移动到左下角?
- java - 使用 FCM 和 Java Web API 反应原生推送通知?
- ios - iOS - 同步 Web 和应用订阅