2

由于我无法控制的原因,我有以下几点:

  • DynamoDB 中一个 AWS 账户下的一张表CustomerPhoneNumber
  • 不同AWS 账户(相同地理区域;欧盟)下的 Redshift 集群

有没有办法运行COPY命令将数据从 Dynamo 跨账户移动到 Redshift?

通常,如果他们在同一个帐户下,则可以很容易地通过IAM角色完成:

copy public.my_table (col1, col2, col3) from 'dynamodb://CustomerPhoneNumber' iam_role 'arn:aws:iam::XXXXXXXXXXX:role/RandomRoleName' readratio 40;

但显然这在我的情况下不起作用。

有任何想法吗?

4

3 回答 3

2

约翰的上述回答不再适用;这就是你可以做到的-

  1. 在这种情况下,具有所需资源(如 dynamodb)的 AWS 账户(信任账户)需要具有需要访问权限的账户(受信任的 AWS 账户)......在他们的 Dynamo db 只读角色中受信任:arn:aws:iam:::role/
  2. 创建一个执行 sts:AssumeRole 的策略(高于信任帐户的角色作为资源),
  3. 将该策略附加到 redshift-access-role(它具有运行复制命令所需的所有权限)。
  4. 运行命令为:

    iam_role 'arn:aws:iam::<trusTEDawsAccountId>:role/redshift_access_role,arn:aws:iam::<trusTINGawsAccountId>:role/<dynamodbreadrole>' 
    readratio 50
    

详情见: https ://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html

于 2019-12-10T20:27:26.350 回答
1

您可以使用 CREDENTIALS 并指定其他帐户的访问密钥和密钥。将以下内容添加到您的 COPY 语句中:

credentials 'aws_access_key_id=AKIAXXXXX;aws_secret_access_key=yyyyyy'

您不能将跨账户角色与 Redshift 一起使用。引用亚马逊文档:

仅当 IAM 角色和集群都归同一个 AWS 账户所有时,才能将 IAM 角色与 Amazon Redshift 集群关联。

使用 IAM 角色授权 COPY 和 UNLOAD 操作

于 2017-11-29T02:54:13.107 回答
-1

显然stackoverflow需要格式化,代码是:

copy redshift_tbl from 'dynamodb://dynamotbl'
iam_role 'arn:aws:iam::<TRUSTEDacAWSid>:role/redshift_access_role,arn:aws:iam::<trusTINGacAWSid>:role/<dynamodb-role-in-trustingac>' 
readratio 50

*注意:角色中的逗号之间没有空格

于 2019-12-10T20:33:53.907 回答