如何向 AWS Amplify Express 服务器添加额外的终端节点?

How to add an additional endpoint to the AWS Amplify Express Server?

我已经使用 Amplify 生成了一个 REST Express 服务器。

我尝试向它添加更多端点:

// using serverless express
app.post('/myendpoint', function(req, res) {
  console.log('body: ', req.body)
  res.json(req.body)
});

// using serverless express
app.get('/myendpoint', function(req, res) {
  res.json({success: 'get call to my endpoint succeed!', url: req.url});
});

在 运行 amplify push 之后,我在控制台中看不到这些端点,我无法通过放大向它们发出请求。

作为初始配置工作的一部分生成的端点。

添加更多 REST 端点的正确方法是什么?我感觉我缺少一些额外的配置步骤。

部署 API 和函数后,要添加其他路径,您应该使用 "amplify update api"

正如 Kevin Le 所说 运行 "amplify update api" 将允许您添加另一个 "root" 路径,例如“/items”或“/customers”,但我已经 运行 在初始 api 创建后添加嵌套路径(如“/customer/addAddress”时出现问题。

我尝试过的:

  1. 我可以在 API 的初始创建期间添加它们,但不能在更新期间添加它们
  2. 我可以更改云形成模板以将它们包含在 API 网关中,但是对嵌套路径的任何调用都会被根路径代理接收。
  3. 我可以在 express lambda 函数中添加它们(违背 API 网关的目的)

他们需要添加一些增强功能来增强其余 API 以便我们可以利用 API 网关。在我们可以分离 GET、POST、PUT 等函数之前,它不是真正的无服务器

更新:我想在进一步调查后跟进。我找到的一个解决方案是在 API 网关的云形成文件中删除 "root" 路径的 {proxy} 端点。该文件应位于:"project root"/amplify/backend/api/"api name"/"api name"-cloudformation-template.json。然后去掉位于Resources->"api name"->Properties->Body->paths->"api name"/{proxy+}.

的路径

进一步调查:我还没有尝试过,但是云形成文件中路径的顺序可能会影响请求的处理方式,因此如果您将 "root" 代理移动到最后一条路径,您可能不必将其删除。也感谢 Piotr 修正了我糟糕的语法!

您可以运行“放大更新api” 然后选择添加新端点 并为此端点选择分配新(旧)lambda 函数