6

将 AWS Amplify 与 dynamodb 后端一起使用时,可以通过在本地修改文件然后执行amplify push.

我正在使用 RDS(amplify api add-graphql-datasource按照文档中的说明添加它)。查询和解析器会自动在 AppSync 中设置。当我更新 Aurora RDS 架构时,我amplify api add-graphql-datasource再次运行以更新查询和解析程序。

但是如何vtl使用 amplify CLI 添加新的查询/突变并将它们绑定到新的解析器(在本地主机上的文件中定义)?

我想出了如何使用 AppSync Web 控制台来做到这一点。我修改架构并在 AppSync 中创建解析器,然后使用amplify codegen更新App.tsqueries.ts等。但是,这种方法至少有两个原因是不好的。

  1. 在使用多个环境时,必须通过 AppSync 控制台手动更改每个环境,这对于大型项目来说是困难的。
  2. amplify codegen不更新schema.graphql本地主机上的文件。
  3. 在对 AppSync 进行更改后执行amplify push使用 localhost 上定义的架构并覆盖 AppSync 控制台中定义的架构。
  4. 中的自定义解析器app/amplify/backend/<backend_name>/resolvers未与 AppSync 同步
  5. 堆栈文件不会自动更新。

我会以错误的方式解决这个问题吗?在使用 RDS 后端时,是否有更好的方法来使用 Amplify CLI 更新架构/解析器?

谢谢!

4

1 回答 1

0

好的,

  1. 在使用多个环境时,必须通过 AppSync 控制台手动更改每个环境,这对于大型项目来说是困难的。

为每个环境保留一个 git 分支。首先在dev分支中进行更改并运行amplify push以将更改推送到 AppSyncdev项目。当需要将更改引入暂存时,请执行以下操作:

  1. cd app && amplify env checkout staging && amplify env pull --restore && amplify status
  2. git checkout staging && git merge dev
  3. amplify push
  1. amplify codegen 不会更新本地主机上的 schema.graphql 文件。

是的,但这不是amplify codegen应该做的,所以我不确定我写的是什么。文档很清楚:

Codegen 帮助您为 iOS 和 Android 生成原生代码,以及为 Flow 和 TypeScript 生成类型。它还可以生成 GraphQL 语句(查询、突变和订阅),因此您无需手动编写代码。

..下一个!

  1. 在对 AppSync 进行更改后执行放大推送将使用 localhost 上定义的架构并覆盖 AppSync 控制台中定义的架构。我不确定我在这里想说什么。但最终为我工作的工作流程是
  1. schema.graphql在本地主机上更新
  2. 在 localhost 上创建解析器文件
  3. amplify push更新 AppSync
  1. app/amplify/backend/<backend_name>/resolvers 中的自定义解析器未与 AppSync 同步

我错了。如果您正确创建所需的解析器文件,则 AppSync 解析器在运行时会正确配置amplify push。我的错误是我忘记创建响应映射器模板文件。

  1. 堆栈文件不会自动更新。

这是真的,但您很快就会习惯手动编辑堆栈文件。确实,如果有一个快速添加功能会很好,但是由于您只是添加一个json文件,因此很容易将一个快速的 python 脚本组合在一起为您执行此操作。

于 2020-09-15T07:42:44.047 回答