繁体   English   中英

如何在单个程序中使用两个 AWS IAM 账户?

[英]How do I use two AWS IAM accounts in a single program?

我一直在尝试在两个不同帐户的 DynamoDB 表之间批量传输一些数据,但我无法这样做,因为我不能在同一程序中使用另一个帐户,因为它只是默认为我在其中使用的主帐户AWS CLI。

这是我访问两个不同 IAM 帐户的代码。

目的地_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 };

测试.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.

DynamoDB 根据 IAM 角色选择账户和区域。 您首先需要在允许您从第一个帐户承担的第二个帐户中设置一个角色: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html

之后,在您的代码中,您需要调用 sts assumeRole 并根据该角色创建第二个客户端: https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html

现在,当您承担该角色并创建具有该角色的客户端时,您可以访问第二个帐户中的 DynamoDB 表/其他资源。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM