我有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表。
答案 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