我可以在 AWS Appsync 解析器中有条件地调用 lambda 函数吗?
Can I conditionally invoke a lambda function in an AWS Appsync resolver?
我已将 Appsync 管道解析器附加到我的 Organisation
对象中名为 paymentStatus
的字段。这个想法是,如果组织的最后一个发薪日已经过去,我想使用 Lambda 函数从外部 API 获取支付状态。如果发薪日还没有过去,我不想调用该函数,而只是 return a "OK".
有什么方法可以有条件地调用 Lambda 函数吗?像这样:
#if ($ctx.source.payday < $util.time.nowEpochSeconds())
{
"version": "2017-02-28",
"operation": "Invoke",
"payload": {
"arguments": {
"orgID": "$ctx.source.id"
}
}
}
#end
如果我 运行 这个,当不满足条件时,Appsync 会抱怨缺少 operation
属性。我还注意到,用于查询的 condition
属性不适用于 Lambda 数据源。
提前谢谢你<3
您可以使用请求映射模板中的 #return
指令从模板中提早 return 有效地从单元解析器提早 returning。
您的请求映射模板可以如下所示:
#if ($ctx.source.payday >= $util.time.nowEpochSeconds())
#set($result = "OK")
#return($result)
#end
{
"version": "2017-02-28",
"operation": "Invoke",
"payload": {
"arguments": {
"orgID": "$ctx.source.id"
}
}
}
我已将 Appsync 管道解析器附加到我的 Organisation
对象中名为 paymentStatus
的字段。这个想法是,如果组织的最后一个发薪日已经过去,我想使用 Lambda 函数从外部 API 获取支付状态。如果发薪日还没有过去,我不想调用该函数,而只是 return a "OK".
有什么方法可以有条件地调用 Lambda 函数吗?像这样:
#if ($ctx.source.payday < $util.time.nowEpochSeconds())
{
"version": "2017-02-28",
"operation": "Invoke",
"payload": {
"arguments": {
"orgID": "$ctx.source.id"
}
}
}
#end
如果我 运行 这个,当不满足条件时,Appsync 会抱怨缺少 operation
属性。我还注意到,用于查询的 condition
属性不适用于 Lambda 数据源。
提前谢谢你<3
您可以使用请求映射模板中的 #return
指令从模板中提早 return 有效地从单元解析器提早 returning。
您的请求映射模板可以如下所示:
#if ($ctx.source.payday >= $util.time.nowEpochSeconds())
#set($result = "OK")
#return($result)
#end
{
"version": "2017-02-28",
"operation": "Invoke",
"payload": {
"arguments": {
"orgID": "$ctx.source.id"
}
}
}