Amazon DynamoDB テーブルのバックアップを別のリージョンに復元したいと思います。
解決方法
次のいずれかの方法で、DynamoDB テーブルを別のリージョンに復元することができます。
DynamoDB を使用して DynamoDB テーブルを別のリージョンに復元する
- [DynamoDB コンソール] を開きます。
- ナビゲーションペインで、[Backup (バックアップ)] を選択します。
- 表示されたリストで、テーブルを復元するバックアップを選択します。
- [復元] をクリックします。
- [復元されたテーブルの名前] では、新しいテーブル名を入力します。
- [セカンダリインデックス] で、目的のオプションを選択します。
- [宛先 AWS リージョン] では、[クロスリージョン] を選択します。
- [移行先の AWS リージョンを選択] で、任意のリージョンを選択します。
- [暗号化キー管理] で、目的のオプションを選択します。
- [復元] をクリックします。
AWS Glue を使用して DynamoDB テーブルを別のリージョンに復元する
AWS Glue ジョブを使用して、DynamoDB テーブルを別のリージョンに復元することができます。AWS Glue は、復元プロセスにさらなる柔軟性を提供します。新しいリージョンのターゲットテーブルにすべての属性またはフィールドを復元したくない場合に、この方法選択します。このアプローチは、Amazon Simple Storage Service (Amazon S3) にエクスポートされたテーブルでのみ機能します。
1. **S3 にエクスポート**機能を使用して DynamoDB テーブルを Amazon S3 にエクスポートした後、AWS Glue ジョブを作成します。必ず [スクリプト] タブに次の情報を指定してください。
datasource0 = glueContext.create_dynamic_frame.from_options(
connection_type="dynamodb",
connection_options={
"dynamodb.export": "ddb",
"dynamodb.tableArn": "arn:aws:dynamodb:source-region:account-number:table/TableName",
"dynamodb.unnestDDBJson": True,
"dynamodb.s3.bucket": "example-bucket",
"dynamodb.s3.prefix": "dynamodb",
"dynamodb.s3.bucketOwner": "account-number",
}
)
注意: 必ず、変換ノード ApplyMapping を使用し、ターゲットテーブルに存在する必要があるフィールドを指定します。この設定では、提供された入力に基づいて PySpark コードを自動的に生成します。
例:
applymapping1 = ApplyMapping.apply(frame = datasource0, mappings = [("resource_id", "string", "resource_id", "string")], transformation_ctx = "applymapping1")
2. ターゲットリージョンのデスティネーションテーブルに直接書き込むシンク操作を指定します。
例:
glueContext.write_dynamic_frame_from_options (frame = MappedFrame, connection_type = "dynamodb", connection_options = { "dynamodb.region": "example-region", "dynamodb.output.tableName": "example_table", "dynamodb.throughput.write.percent": "1.0" })
3. AWS Glue コンソールからジョブを実行して、現在のリージョンからターゲットリージョンにデータをロードします。
関連情報
バックアップから DynamoDB テーブルを復元する
DynamoDB のポイントインタイムリカバリ
AWS Glue コンソールでのジョブの操作