【问题标题】:How can I restore a DynamoDB backup to a local DynamoDB instance/container?如何将 DynamoDB 备份还原到本地 DynamoDB 实例/容器?
【发布时间】:2021-02-13 04:59:16
【问题描述】:

我已在 AWS 控制台中备份了 DynamoDB 表。我能够在本地下载文件。我想将该文件导入到本地 dynamodb 实例中进行测试。我已经足够远来创建表,但是备份 json 格式似乎与 .NET AWS SDK API 不匹配(这是很多 TLA)。

示例备份内容:

{"Item":{"Attributes":{"M":{"createdAt":{"N":"1611923095468"},"eventDate":{"S":"2021-01-30T17:00:00.000Z"} }},"PartitionKey":{"S":"1234"},"SortKey":{"S":"1"}}}
{"Item":{"Attributes":{"M":{"createdAt":{"N":"1611923095468"},"eventDate":{"S":"2021-01-30T17:00:00.000Z"} }},"PartitionKey":{"S":"1234"},"SortKey":{"S":"2"}}}

.NET API 似乎想要将 JSON 转换为非 dynamodb 属性格式,所以期望它是这样的:

{
    "Item": {
        "Attributes": {
            "createdAt": "1611923095468",
            "eventDate": "2021-01-30T17:00:00.000Z"
        },
        "PartitionKey": "1234",
        "SortKey": "1"
    }
}

所以,我想做这样的事情:

var json = "{}"; // ORIGINAL CONCATENATED JSON FROM ABOVE 
Document.FromJson(json)

是否有一些我缺少的 API 可以将其转换为可以加载到 dynamodb 中的某种格式?同样,使用 .NET,但为此开放任何工具/实用程序。

【问题讨论】:

  • 我突然想到 JavaScript sdk 可能更适合这种数据结构。我试试看。

标签: amazon-dynamodb aws-sdk aws-sdk-net


【解决方案1】:

这是我想出的 js 脚本。似乎成功了:

var DDB = require("@aws-sdk/client-dynamodb");
var fs = require('fs');
const ddb = new DDB.DynamoDB({ region: 'local', endpoint: 'http://localhost:8000' });

(async function test() {
    const text = fs.readFileSync('./bmorer2e5e3pfflf7qmuhhnpwy.json', 'utf8');

    text.toString().split('\n').map(async (line) => {
        if (line) await saveLine(line)
    });
})();

async function saveLine(line) {
    let item = JSON.parse(line);
    item.TableName = 'TABLE_NAME';
    item.ReturnConsumedCapacity = 'TOTAL';

    const res = await ddb.putItem(item);
    console.log(res.ConsumedCapacity);
}

【讨论】:

    猜你喜欢
    • 2023-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多