首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在vtl应用程序同步解析器中重用/导入代码?

如何在vtl应用程序同步解析器中重用/导入代码?
EN

Stack Overflow用户
提问于 2019-11-20 09:10:27
回答 4查看 861关注 0票数 3

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

假设我在mapping_templates/shared.vtl中有一个样本

代码语言:javascript
复制
#set($sample_mappings = {
    "KEY1": "VALUE1",
    "KEY2": "KEY2"
})

例如,我想在mapping_templates/sample_request_mapping_template.vtl,中使用:

代码语言:javascript
复制
$sample_mappings.get("KEY1")

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

代码语言:javascript
复制
#parse("shared.vtl")
OR
#include("shared.vtl")

$sample_mappings.get("KEY1")

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-11-20 17:13:07

不幸的是,目前不支持此功能。

我会代表你向团队提出这个请求。

票数 0
EN

Stack Overflow用户

发布于 2020-03-31 09:50:35

我们使用嵌套堆栈从VTL代码中获得一些重用。

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

代码语言:javascript
复制
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堆栈的堆栈:

代码语言:javascript
复制
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 = ...
            ...
票数 2
EN

Stack Overflow用户

发布于 2021-10-11 20:48:02

还可以使用AWS系统管理器从参数存储区检索模板。将字符串保存在系统管理器中,并在模板中引用它。

借用@ggriffin的解并替换SSM值

代码语言:javascript
复制
  Resolver:
    Type: AWS::AppSync::Resolver
    Properties:
      ...
      RequestMappingTemplate: !Join
        - ''
        - - '{{resolve:ssm:/path/to/param}}'
          - |
            #***#
            #set($items = ...
            ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58950535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档