【发布时间】:2021-07-07 07:15:59
【问题描述】:
我正在使用无服务器来处理我们的 aws lambda / appsync。 对于错误处理,我们将带有消息的错误代码保存在 json 文件中。代码将是唯一的。像这样的:
//error-code.json
{
"1"": { code: 1, message: "Invalid User Input"},
"2"": { code: 2, message: "Invalid Input"},
//... so on
}
这将作为层部署,所有 lambda 都将使用它。问题是我们不能在解析模板中使用它。有一些解析器将只是模板文件。这些模板文件无法访问 json 文件,也无法访问图层。 如何在此处使用 error-code.json?
解决方案 1:
在模板中手动编写错误代码并确保始终唯一。像这样的:
#set(#errorInfo = {
"erroCode": "1",
"errorMessage": "Invalid Input"
})
$util.error("Invalid Input", "errorType", $ctx.arguments,#errorInfo)
Rejected:因为我们每次都必须手动检查错误代码的唯一性。如果模板文件很多,我们不能依赖它。
解决方案 2:
创建一个带有错误代码(唯一)和错误消息的表。使用此表从模板发送错误。
拒绝:因为我们使用多个应用同步实例,它们都连接到不同的数据库。所以我们必须在所有数据库中制作这个表,因此整个应用程序同步都不会保持唯一性。
解决方案 3:
在 vtl 中写入我们要发送错误的占位符。在部署之前,使用 pre-hook 脚本将占位符替换为实际代码,但不是在实际的 vtl 文件中,而是在无服务器部署的生成包中。 Serverless 也有这样的东西吗?
【问题讨论】:
标签: serverless aws-appsync aws-serverless