在 AWS Amplify 中更改我的 GraphQL 架构时如何防止丢失生产数据?
Posted
技术标签:
【中文标题】在 AWS Amplify 中更改我的 GraphQL 架构时如何防止丢失生产数据?【英文标题】:How to prevent losing production data when changing my GraphQL schema in AWS Amplify? 【发布时间】:2021-09-29 05:02:12 【问题描述】:在我的 AWS Amplify 项目中,我使用带有多个 @model
指令的 GraphQL API。因此,Amplify 在我的 AWS 后端生成了多个 DynamoDB 表。现在,当删除这样的@model
或重命名它时,旧的 DynamoDB 表将永久删除所有包含的数据!
如何防止这种情况避免错误地避免生产数据?
【问题讨论】:
【参考方案1】:为防止您的 DynamoDB 表被删除,您可以将 DeletionPolicy
设置为 Retain
。不幸的是,Amplify 默认不这样做。
因此,您可以像这样使用 自定义 GraphQL 指令 @retain
:
-
安装变压器:
npm install --save graphql-retain-transformer
.
编辑amplify/backend/api/<YOUR_API>/transform.conf.json
并将"graphql-retain-transformer"
附加到转换器字段:
"transformers": [
"graphql-retain-transformer"
]
-
在您的
schema.graphql
文件中,将 @retain
指令附加到您要为其激活保留删除策略的所有 @model
类型:
type Todo @model @retain
id: ID!
title: String!
description: String
自定义指令的 GitHub 存储库: https://github.com/flogy/graphql-retain-transformer(如果您喜欢请留下⭐️?)
更详细的博文: https://react-freelancer.ch/blog/amplify-retain-dynamodb-tables
【讨论】:
以上是关于在 AWS Amplify 中更改我的 GraphQL 架构时如何防止丢失生产数据?的主要内容,如果未能解决你的问题,请参考以下文章
AWS Amplify SPA React + Cognito(已启用 Microsoft Azure Ad Enterprise SSO)+ Microsoft Graph API
在 AWS Amplify GraphQL 中对结果进行排序而不进行过滤
AWS- Amplify - Appsync:使用 CLI 从 Android 应用程序更改云资源时,正确的工作流程是啥?