在 AWS Amplify 中更改我的 GraphQL 架构时如何防止丢失生产数据?
How to prevent losing production data when changing my GraphQL schema in AWS Amplify?
在我的 AWS Amplify 项目中,我使用带有多个 @model
指令的 GraphQL API。因此,Amplify 在我的 AWS 后端生成了多个 DynamoDB table。现在,当删除这样的 @model
或重命名它时,旧的 DynamoDB table 将 与所有包含的数据一起永久删除 !
如何避免这种情况,避免误生产数据?
为了防止您的 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(喜欢请留下⭐️)
关于它的更详细的博客post: https://react-freelancer.ch/blog/amplify-retain-dynamodb-tables
在我的 AWS Amplify 项目中,我使用带有多个 @model
指令的 GraphQL API。因此,Amplify 在我的 AWS 后端生成了多个 DynamoDB table。现在,当删除这样的 @model
或重命名它时,旧的 DynamoDB table 将 与所有包含的数据一起永久删除 !
如何避免这种情况,避免误生产数据?
为了防止您的 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(喜欢请留下⭐️)
关于它的更详细的博客post: https://react-freelancer.ch/blog/amplify-retain-dynamodb-tables