如何将现有的 dynamo 数据库与 AWS Amplify 和 graphql 结合使用

csh*_*bie 6 graphql aws-appsync aws-amplify aws-amplify-sdk-js

我们的应用程序在 dynamodb 中有现有数据库。对于我们的新 React 应用程序之一,我们想要使用 AWS Amplify,并且我们正在尝试使用现有的表。

我创建了一个框架项目,然后转到后端AWS AppSync console -> Data Sources并将现有表映射到它。我将该表定义添加到了我的 React 应用程序中的 schema.graphql 中。当我进行放大推送时,我看到它在 dynamodb 中创建一个新表,而不是指向现有数据库。

我还尝试在 AppSync Console 中映射其中一个表,并amplify pull从本地项目进行映射,假设这将在我的本地 schema.graphql 中添加表的定义,但这也没有发生。它没有从后端应用程序同步控制台获取新映射的数据源的详细信息。

我现有的数据库有大量数据,并且也与其他应用程序共享。我不想创建新表。

您能建议如何实现这一目标吗?

此外,我们还拥有现有的 lamdba 函数,我们也希望将其利用到这个新的 Amplify 项目中。您也可以为此提出建议吗?

任何帮助深表感谢!

小智 1

下面文件中的第 22 行显示了 graphql.schema 转换器运行时如何构造表名;也就是说,该名称源自 GraphQLAPI ID,这似乎是一个单向过程。

TableName: joinWithEnv('-', [SyncResourceIDs.syncTableName, Fn.GetAtt(ResourceConstants.RESOURCES.GraphQLAPILogicalID, 'ApiId')]),
Run Code Online (Sandbox Code Playgroud)

https://github.com/aws-amplify/amplify-cli/blob/e1e07b245db0963c4655e646c53e7615febe2930/packages/graphql-transformer-core/src/util/syncUtils.ts

那么唯一的选择就是尝试修补生成的 CFN 脚本。