如何在解析器映射模板中获取环境变量或CloudFormation信息?

时间:2018-07-26 06:51:54

标签: amazon-web-services amazon-dynamodb aws-appsync dynamodb-queries

我有BatchGetItem的请求映射模板

{
    "version" : "2018-05-29",
    "operation" : "BatchGetItem",
    "tables" : {
        "user-post": { ## Get table name from enviroment varible  or CloudFormation
            "keys": $util.toJson($ids),
            "consistentRead": true
        }
    }
}

和响应$util.toJson($ctx.result.data.user-post)。我如何从环境变量或CloudFormation自动获取表名,而不是手动编写它。我的映射模板具有数据源user-post-dynamoDB表。

1 个答案:

答案 0 :(得分:0)

如果您要通过CloudFormation将解析器(和映射模板)部署到AppSync,则应该能够使用引用来自动填充DynamoDB表名。

如果要在同一cloudformation模板中创建DynamoDB表,则DynamoDB cloudformation条目的返回输出将是表名,您可以引用该表名。

以下是用于创建具有cloudformation的DynamoDB表以及返回输出为https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#w2ab2c21c10d384c15

的文档。

以下是使用“引用”来引用资源的文档:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html

如果预先创建了DynamoDB表,则可以通过cloudformation堆栈参数或在地图内部传递表名,然后可以引用它。

您可能必须结合使用“ Ref”和其他一些Cloudformation帮助器功能,例如“ Sub”,才能将DynamoDB表引用替换为映射模板定义。

结合使用Sub和Ref的示例:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-sub.html#w2ab2c21c28c59c11