即时切换 Dynamodb 区域

switch Dynamodb region on the fly

有什么方法可以使用 javascript aws-sdkdynamoose npm 包在 DynamoDB 区域之间动态切换?

假设,2 table 存在于孟买 (ap-south-1) 和法兰克福 (eu-central-1) 两个不同的区域。最初,当应用程序启动时,它使用 ap-south-1,然后在一些业务逻辑之后,它需要将数据库实例路由到 eu-central-1。

那么,我该如何使用 javascript aws-sdk 或 dynmoose 包来实现它。

现在,我正在使用以下代码段。但它不起作用

import dynamoose from 'dynamoose';
dynamoose.AWS.config.logger = console;
dynamoose.AWS.config.update({ region: 'ap-south-1'}); // working here

// some business login
// ...
// ...

// switch DynamoDB region
dynamoose.AWS.config.update({ region: 'eu-central-1'});  // but it's not working. Not even throwing any error.


有人可以帮忙吗? 有什么方法可以记录特定查询 运行 的 AWS Dynamodb 区域吗? 就像启用AWS logger一样,它只是输出

[AWS dynamodb 200 0.042s 0 retries] getItem({ TableName: 'User', Key: { userId: { S: '99999' } } })

在这种情况下,我认为您每次 setting a new DynamoDB instance 的运气都会好得多。例如,您的示例将更改为以下内容。

import {DynamoDB} from "aws-sdk";
dynamoose.setDDB(new DynamoDB({ region: 'ap-south-1'}));

// some business login
// ...
// ...

// switch DynamoDB region
dynamoose.setDDB(new DynamoDB({ region: 'eu-central-1'}));

这将更改 Dynamoose 用于与 DynamoDB 通信的基础实例,而不是全局 AWS SDK 设置。

注意,上面的代码在 Dynamoose v2 中发生了变化。有关详细信息,请参阅 breaking changes