使用 RDS 后端修改 AWS Amplify 中的解析器

hal*_*ump 6 amazon-web-services amazon-rds graphql aws-amplify aws-amplify-cli

将 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. amplify push在对 AppSync 进行更改后执行使用本地主机上定义的架构并覆盖 AppSync 控制台中定义的架构。
  4. 中的自定义解析器app/amplify/backend/<backend_name>/resolvers与 AppSync 不同步
  5. 堆栈文件不会自动更新。

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

谢谢!

hal*_*ump 0

好的,

\n
\n
    \n
  1. 使用多个环境时,必须通过 AppSync 控制台手动完成对每个环境的更改,这对于较大的项目\n来说很困难。
  2. \n
\n
\n

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

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

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

\n
\n

Codegen 可帮助您生成 iOS 和 Android 的本机代码,以及\n生成 Flow 和 TypeScript 的类型。它还可以生成\nGraphQL 语句(查询、突变和订阅),以便您\ndon\xe2\x80\x99 不必手动编码它们。

\n
\n

..下一个!

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

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

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

这是事实,但您很快就会习惯手动编辑堆栈文件。事实上,如果有一个快速添加功能就好了,但由于您只是添加一个json文件,因此很容易组合一个快速的 Python 脚本来为您完成此操作。

\n