我一直在尝试在两个不同帐户的DynamoDB表之间批量传输一些数据,但我一直无法这样做,因为我无法在同一程序中使用另一个帐户,因为它只是默认为我在AWS CLI中使用的主帐户。
这是我访问两个不同的IAM帐户的代码。
Destination_acc.js
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
const CONFIG = {
region: "us-east-1",
accessKeyId: "x",
secretAccessKey: "y",
};
const dest = new DynamoDBClient(CONFIG);
export { dest };
Source_acc.js
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
const CONFIG = {
region: "us-east-1",
accessKeyId: "x",
secretAccessKey: "y",
};
const source = new DynamoDBClient(CONFIG);
export { source };
Test.js
export const scanTable = async () => {
const params = {
TableName: "table",
};
var scanResults = [];
var items = [];
do {
items = await dest.send(new ScanCommand(params));
items.Items.forEach((item) => {
console.log(item);
scanResults.push(item);
});
params.ExclusiveStartKey = items.LastEvaluatedKey;
} while (typeof items.LastEvaluatedKey !== "undefined");
return scanResults;
};
scanTable(); //Returns the data in the table of `source` account instead of the data in `dest` account.
1条答案
按热度按时间gojuced71#
DynamoDB根据IAM角色选择帐户和区域。您首先需要在第二个帐户中设置一个允许您从第一个帐户https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html承担的角色
之后,在您的代码中,您需要调用STS假想角色并基于该角色创建第二个客户端:https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html
现在,当您承担角色并使用该角色创建客户端时,您可以访问第二个帐户中的DynamoDB表/其他资源。