我可以在 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"
        }
    }
}

更多详情请阅读https://docs.aws.amazon.com/appsync/latest/devguide/resolver-util-reference.html#aws-appsync-directives