如何在一个计划中使用两个AWS IAM帐户?

2skhul33  于 2022-10-12  发布在  Node.js
关注(0)|答案(1)|浏览(143)

我一直在尝试在两个不同帐户的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.
gojuced7

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表/其他资源。

相关问题