Reputation: 829
We have existing database in dynamodb for our application. For one of our new React app, we want to use AWS Amplify and we are trying to use the existing tables.
I created a skeleton project and went to backend AWS AppSync console -> Data Sources
and map the existing table to it. And I added that table definition to my schema.graphql in my react app. When I do an amplify push, I see it creating a new table in dynamodb, rather than pointing to the existing db.
I also tried to map one of the tables in AppSync Console, and did amplify pull
from local project, assuming that will add the definition of the table in my local schema.graphql but that did not happen either. It did not pull down the details of the newly mapped data source from backend app sync console.
My existing db has lot of data and is shared with other applications as well. I do not want to create a new table.
Can you pls suggest how to accomplish this?
Also we have existing lamdba functions which we would want to leverage into this new Amplify project as well. Could you pls suggest pointers for this as well.
Any help is much appreciated!
Upvotes: 6
Views: 4588
Reputation: 2531
You can use amplify import storage
to import existing DynamoDB tables or S3 buckets.
more here: https://docs.amplify.aws/cli/storage/import/
Also look at Re-use existing AppSync GraphQL API - it might help with reusing lambda functions, if they are wrapped by an API.
Upvotes: 1
Reputation: 166
Line 22 in the file below shows how the table name is constructed when the graphql.schema transformer runs; that is - the name is derived from the GraphQLAPI ID and this seems to be a one way process.
TableName: joinWithEnv('-', [SyncResourceIDs.syncTableName, Fn.GetAtt(ResourceConstants.RESOURCES.GraphQLAPILogicalID, 'ApiId')]),
The only option then would be to try and patch the resulting CFN script.
Upvotes: 1