amplifyで dynamodbの運用方法のメモ()

8月 31, 2022amplify,DynamoDB

amplify push でschema.graphqlのファイルでエラー

amplify pushを何度しても、エラーになってしまって、dynamodbのテーブル構成の修正ができなくなってしまった。
このため、一度dynamodbのテーブルを削除して、再度データをインポートできるようにする必要がある。
その方法を簡単にメモする。
dynamodbのエクスポート先はs3とする。s3へは、dynamodbのs3へのエクスポートの機能を利用する。
これに対して、s3からdynamodbの新しいテーブルへのインポートは、自作したlambdaの関数で実行することにして、結果、成功した。(aws datapipelineというサービスもあるが、利用はしないことにした。理由は、ec2が立ち上がって料金が割と発生すること、処理の内容がブラックボックスで自分の期待通りにできなさそうだったため)
手順としては、まず、schema.graphqlのファイルにおいて、該当するテーブルの設計部分をコメントアウトしてから、amplify push –allow-destructive-graphql-schema-updates を実行する。成功すれば、dynamodbからテーブルが削除される。テーブルが削除されたことを確認したら、再度schema.graphqlに修正したテーブルの設計をコメントインする。
amplify pushする。成功する。dynamodbのテーブルを見て、テーブルが作成されたことを確認する。
自作したlambdaを実行して、dynamodbにs3にエクスポートしたデータがdynamodbにインポートされたことを確認する。
これで、いつdynamodbのデータがなくなっても、s3からデータをインポートすることができようになった。

DynamoDBはS3にバックアップするのが良いか、ただのバックアップで良いのか

たぶん、一長一短だと思います。S3にアウトプットすると、インプットするときに処理を考えないといけないし、バックアップを利用した場合は、テーブル自体を間違って削除した場合、一緒にバックアップも消えてしまうのではないかと思います。両方利用して、DynamoDBの運用経験を増やしていくことが良いと考えます。

感想

続きは、気が向いたら更新します。その時はlambdaのコードも公開するつもりです。