如何将现有的 dynamo db 与 AWS Amplify 和 graphql 一起使用
Posted
技术标签:
【中文标题】如何将现有的 dynamo db 与 AWS Amplify 和 graphql 一起使用【英文标题】:How to use existing dynamo db with AWS Amplify and graphql 【发布时间】:2021-04-09 17:00:30 【问题描述】:我们的应用程序在 dynamodb 中有现有的数据库。对于我们的一个新 React 应用程序,我们想要使用 AWS Amplify,并且我们正在尝试使用现有的表。
我创建了一个骨架项目并转到后端AWS AppSync console -> Data Sources
并将现有表映射到它。我在我的 react 应用程序中将该表定义添加到我的 schema.graphql 中。当我进行放大推送时,我看到它在 dynamodb 中创建了一个新表,而不是指向现有数据库。
我还尝试在 AppSync 控制台中映射其中一个表,并从本地项目执行 amplify pull
,假设这将在我的本地 schema.graphql 中添加表的定义,但这也没有发生。它没有从后端应用同步控制台拉下新映射的数据源的详细信息。
我现有的数据库有大量数据,并且也与其他应用程序共享。我不想创建新表。
你能建议如何做到这一点吗?
我们也有现有的 lamdba 函数,我们也希望将其用于这个新的 Amplify 项目。您能否也为此提出建议。
非常感谢任何帮助!
【问题讨论】:
每个人都能解决这个问题?我也有这个问题 【参考方案1】:下面文件中的第 22 行显示了 graphql.schema 转换器运行时如何构造表名;也就是说 - 名称源自 GraphQLAPI ID,这似乎是一种单向过程。
TableName: joinWithEnv('-', [SyncResourceIDs.syncTableName, Fn.GetAtt(ResourceConstants.RESOURCES.GraphQLAPILogicalID, 'ApiId')]),
https://github.com/aws-amplify/amplify-cli/blob/e1e07b245db0963c4655e646c53e7615febe2930/packages/graphql-transformer-core/src/util/syncUtils.ts
那么唯一的选择就是尝试修补生成的 CFN 脚本。
【讨论】:
【参考方案2】:您可以使用amplify import storage
导入现有的 DynamoDB 表或 S3 存储桶。
更多:https://docs.amplify.aws/cli/storage/import/
也看看 Re-use existing AppSync GraphQL API - 如果 lambda 函数被 API 包装,它可能有助于重用它们。
【讨论】:
以上是关于如何将现有的 dynamo db 与 AWS Amplify 和 graphql 一起使用的主要内容,如果未能解决你的问题,请参考以下文章
如何将现有的 Web 应用程序从 Heroku 迁移到 AWS
如何在 AWS lambda 函数中设置 dynamo db 触发器