将 IAM 角色与集群相关联
在您创建一个 IAM 角色以授权 Amazon Redshift 为您访问其他 AWS 服务,必须将该角色与 Amazon Redshift 集群关联。在使用角色加载或卸载数据之前,您必须执行此操作。
将 IAM 角色与集群关联所需的权限
要将 IAM 角色与集群关联,用户必须具有对该 IAM 角色的 iam:PassRole
权限。此权限允许管理员限制用户可关联到 Amazon Redshift 集群的 IAM 角色。作为最佳实践,我们建议将权限策略附加到 IAM 角色,然后根据需要将其分配给用户和组。有关更多信息,请参阅 Amazon Redshift 中的 Identity and Access Management。
以下示例显示了一个 IAM policy,该策略可附加到用户以允许该用户执行以下操作:
-
获取用户的账户拥有的所有 Amazon Redshift 集群的详细信息。
-
将三个 IAM 角色中的任一角色与两个 Amazon Redshift 集群中的任一集群关联。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "redshift:DescribeClusters", "Resource": "*" }, { "Effect": "Allow", "Action": [ "redshift:ModifyClusterIamRoles", "redshift:CreateCluster" ], "Resource": [ "arn:aws:redshift:us-east-1:123456789012:cluster:my-redshift-cluster", "arn:aws:redshift:us-east-1:123456789012:cluster:my-second-redshift-cluster" ] }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::123456789012:role/MyRedshiftRole", "arn:aws:iam::123456789012:role/SecondRedshiftRole", "arn:aws:iam::123456789012:role/ThirdRedshiftRole" ] } ] }
当用户具有相应的权限后,该用户可以将 IAM 角色与 Amazon Redshift 集群关联。随后,IAM 角色可以与 COPY 或 UNLOAD 命令或其他 Amazon Redshift 命令一起使用。
有关 IAM 策略的更多信息,请参阅 IAM 用户指南中的 IAM 策略概览。
管理 IAM 角色与集群的关联
您可以在创建集群时将该 IAM 角色与 Amazon Redshift 集群关联。或者您可以修改现有集群并添加或删除一个或多个 IAM 角色关联。
请注意以下事项:
-
您可以关联的最大 IAM 角色数量受配额限制。
-
一个 IAM 角色可与多个 Amazon Redshift 集群关联。
-
仅当 IAM 角色和集群都归同一 AWS 账户拥有时,该角色才能与 Amazon Redshift 集群关联。
您可通过以下程序,借助控制台管理集群的 IAM 角色关联。
要管理 IAM 角色关联
登录 AWS Management Console,然后通过以下网址打开 Amazon Redshift 控制台:https://console.aws.amazon.com/redshiftv2/
。 -
在导航菜单上,选择 Clusters(集群),然后选择要更新的集群。
-
对于 Actions(操作),选择 Manage IAM roles(管理 IAM 角色)以显示与集群关联的当前列表 IAM 角色。
-
在 Manage IAM roles(管理 IAM 角色)页面上,选择要添加的可用 IAM 角色,然后选择 Add IAM role(添加 IAM 角色)。
-
选择 Done(完成)以保存您的更改。
您可以使用以下方法,通过 AWS CLI 管理集群的 IAM 角色关联。
要在创建集群后将 IAM 角色与其关联,请在 --iam-role-arns
命令的 create-cluster
参数中指定 IAM 角色的 Amazon Resource Name (ARN)。调用 create-cluster
命令时可以添加的最大 IAM 角色数量受配额限制。
将 IAM 角色与 Amazon Redshift 集群关联和解除两者之间的关联是一个异步过程。您可通过调用 describe-clusters
命令获取所有 IAM 角色集群关联的状态。
以下示例将两个 IAM 角色与新创建的名为 my-redshift-cluster
的集群关联。
aws redshift create-cluster \ --cluster-identifier "my-redshift-cluster" \ --node-type "ra3.4xlarge" \ --number-of-nodes 16 \ --iam-role-arns "arn:aws:iam::123456789012:role/RedshiftCopyUnload" \ "arn:aws:iam::123456789012:role/SecondRedshiftRole"
要将 IAM 角色与现有 Amazon Redshift 集群关联,请在 modify-cluster-iam-roles
命令的 --add-iam-roles
参数中指定 IAM 角色的 Amazon Resource Name (ARN)。调用 modify-cluster-iam-roles
命令时可以添加的最大 IAM 角色数量受配额限制。
以下示例将一个 IAM 角色与名为 my-redshift-cluster
的现有集群关联。
aws redshift modify-cluster-iam-roles \ --cluster-identifier "my-redshift-cluster" \ --add-iam-roles "arn:aws:iam::123456789012:role/RedshiftCopyUnload"
要取消 IAM 角色与集群的关联,请在 modify-cluster-iam-roles
命令的 --remove-iam-roles
参数中指定 IAM 角色的 ARN。modify-cluster-iam-roles
调用 modify-cluster-iam-roles
命令时可以删除的最大 IAM 角色数量受配额限制。
以下示例从名为 123456789012
的集群中删除 my-redshift-cluster
AWS 账户的 IAM 角色的关联。
aws redshift modify-cluster-iam-roles \ --cluster-identifier "my-redshift-cluster" \ --remove-iam-roles "arn:aws:iam::123456789012:role/RedshiftCopyUnload"
使用 AWS CLI 列出集群的 IAM 角色关联
要列出与 Amazon Redshift 集群关联的所有 IAM 角色以及 IAM 角色关联的状态,请调用 describe-clusters
命令。与集群关联的每个 IAM 角色的 ARN 将在 IamRoles
列表中返回,如以下示例输出所示。
已与集群关联的角色将显示状态 in-sync
。正在与集群关联的角色将显示状态 adding
。正与集群解除关联的角色将显示状态 removing
。
{ "Clusters": [ { "ClusterIdentifier": "my-redshift-cluster", "NodeType": "ra3.4xlarge", "NumberOfNodes": 16, "IamRoles": [ { "IamRoleArn": "arn:aws:iam::123456789012:role/MyRedshiftRole", "IamRoleApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::123456789012:role/SecondRedshiftRole", "IamRoleApplyStatus": "in-sync" } ], ... }, { "ClusterIdentifier": "my-second-redshift-cluster", "NodeType": "ra3.4xlarge", "NumberOfNodes": 10, "IamRoles": [ { "IamRoleArn": "arn:aws:iam::123456789012:role/MyRedshiftRole", "IamRoleApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::123456789012:role/SecondRedshiftRole", "IamRoleApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::123456789012:role/ThirdRedshiftRole", "IamRoleApplyStatus": "in-sync" } ], ... } ] }
有关使用 AWS CLI 的更多信息,请参阅 AWS CLI 用户指南。