gpt4 book ai didi

aws-appsync - 如何在 vtl appsync 解析器中重用/导入代码?

转载 作者:行者123 更新时间:2023-12-04 14:17:21 26 4
gpt4 key购买 nike

我想避免在我的 vtl 模板中重复某些声明,并在 vtl 解析器之间共享它们。

假设我在 ma​​pping_templates/shared.vtl

中有一个示例字典
#set($sample_mappings = {
"KEY1": "VALUE1",
"KEY2": "KEY2"
})

我想在 ma​​pping_templates/sample_request_mapping_template.vtl 中使用它,例如:

$sample_mappings.get("KEY1")

我尝试了以下但没有成功:

#parse("shared.vtl")
OR
#include("shared.vtl")

$sample_mappings.get("KEY1")

看起来确实是一个非常基本的功能,但我没有在 aws 的解析器指南中看到它,我认为这可能不受支持,因为 AppSync vtl 甚至不支持 vtl 的所有标准功能。

最佳答案

我们使用嵌套堆栈来重用我们的 VTL 代码。

嵌套堆栈模板../cfn/shared/vtl/template.yml:

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: Vtl Functions

Parameters:
VtlSomeCheckFunction:
Type: String
Default: |
#***#
#if($util.isNullOrBlank($ctx.args.input.someArg))
$util.error("Some error occurred")
#end
#***#
...

Outputs:
VtlSomeCheckFunction:
Description: VtlSomeCheckFunction
Value: !Ref VtlSomeCheckFunction

使用嵌套 VTL 堆栈的堆栈:

Resources:
VtlStack:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: ../cfn/shared/vtl/template.yml
...
MutationUpdateResolver:
Type: AWS::AppSync::Resolver
Properties:
...
RequestMappingTemplate: !Join
- ''
- - !GetAtt VtlStack.Outputs.VtlSomeCheckFunction
- |
#***#
#set($items = ...
...

关于aws-appsync - 如何在 vtl appsync 解析器中重用/导入代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58950535/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com