別の AWS アカウントへの DynamoDB テーブルのクローニング (保存と復元)
パク・ヒョンテク
Twigfarmのシニア・フルスタック・エンジニア
Twigfarm では、新しい AWS アカウントを作成しました。一部の DynamoDB テーブルを古いアカウントから新しいアカウントにコピーする必要があります。他のデータベースシステムにもダンプとリストア機能があるように、とても簡単なプロセスだと思いました。しかし、それほど単純ではありませんでした。
目標を達成するためにいくつかの方法を試しましたが、本当に簡単なものはありませんでした。幸運なことに、AWS ソリューションアーキテクトの 1 人が AWS がリリースしたばかりの新しいソリューションを提案してくれました。 https://aws.amazon.com/blogs/database/amazon-dynamodb-can-now-import-amazon-s3-data-into-a-new-table。最初に上記の記事を読んで、その方法を理解してください。
この記事では、DynamoDB テーブルを別のAWSアカウントにあるS3に保存し、S3に保存されているものからDynamoDBテーブルを作成する方法について説明します。
建築
アーキテクチャは単純です。この記事では、保存と復元の方法を説明します。コンソールを使用して行うものもあれば、AWS CLI を使用して行うものもあります。
Prerequisites
ソースアカウントと宛先アカウントの両方の AWS CLI プロファイルが必要です。この記事では、プロファイル名にソースユーザーと宛先ユーザーを使用します。を参照してください。 https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html。
DynamoDB テーブル
ソースアカウントに単純な DynamoDB テーブルがあります。最終的な目標は、宛先アカウントにこれら 2 つの項目を含むテーブルを作成することです。
ポイントインタイムリカバリ (PITR) を有効にする
ポイントインタイムリカバリ (PITR) でソース DynamoDB テーブル > バックアップ > 編集ボタンを選択します。次に、ポイントインタイムリカバリ機能を有効にします。
送信先 S3 バケット
送信先の AWS アカウントにログインします。別のウェブブラウザを使用するか、シークレットモードで新しいウィンドウを開くと便利です。
次のようにバケットを作成します。
バケット名:<YOUR_UNIQUE_BUCKET_NAME>
[ACL を有効にする] を選択し、[オブジェクト所有権] に [オブジェクトライター] を選択します。
S3 バケットポリシー
次の JSON をコピーして宛先バケットに貼り付けます。ソース_アカウント_NO、ソース_ユーザー名、および宛先_バケット名を必ず自分のものに置き換えてください。
コマンドラインインターフェイス (CLI) を使用して Amazon S3 にテーブルをエクスポートする
ターミナルで次のコマンドを入力します。
コマンドを抑制してもエラーが発生しない場合は、[S3 へのエクスポート] に 1 行表示されます。数分待ってください。ステータスが [完了] から [完了] に変わります。これで、誘惑的な部分は完了です。
S3 からの復元
ここで、[DynamoDB] > [S3 からのインポート] に移動します。次に、[S3 からインポート] ボタンをクリックします。
Browse S3 ボタンをクリックし、データフォルダが表示されるまでフォルダをドリルダウンし、json.gz 拡張子のファイルを選択します。
次に、フォームに入力して新しい DynamoDB テーブルを作成します。
検証
DynamoDB にアクセスしてください。次のようなテーブル項目がインポートされているかどうかを確認します。
興味深い表の内容を見つけたら、おめでとうございます!S3 からのインポート機能は新機能です。この機能がなければ、AWS のサービスや権限に関する多くの脅威に悩まされていたでしょう。S3 からのインポート機能では、購入する必要があるのは S3 と DynamoDB だけです。
ありがとう!