View a markdown version of this page

将 IAM 角色与集群相关联 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。

2026 年 6 月 30 日之后,Amazon Redshift 不再支持使用 Python UDF。我们将分阶段开始执行。有关 Python 生命周期终止和迁移选项详情的更多信息,请参阅 2025 年 6 月 30 日发布的博客文章。

将 IAM 角色与集群相关联

在您创建一个 IAM 角色以授权 Amazon Redshift 为您访问其他 Amazon 服务,必须将该角色与 Amazon Redshift 集群关联。在使用角色加载或卸载数据之前,您必须执行此操作。

将 IAM 角色与集群关联所需的权限

要将 IAM 角色与集群关联,用户必须具有对该 IAM 角色的 iam:PassRole 权限。此权限允许管理员限制用户可关联到 Amazon Redshift 集群的 IAM 角色。作为最佳实践,我们建议将权限策略附加到 IAM 角色,然后根据需要将其分配给用户和组。有关更多信息,请参阅 Amazon Redshift 中的 Identity and Access Management。

以下示例显示了一个 IAM policy,该策略可附加到用户以允许该用户执行以下操作:

  • 获取用户的账户拥有的所有 Amazon Redshift 集群的详细信息。

  • 将三个 IAM 角色中的任一角色与两个 Amazon Redshift 集群中的任一集群关联。

JSON
{ "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 角色和集群都归同一 Amazon 账户拥有时,该角色才能与 Amazon Redshift 集群关联。

您可通过以下程序,借助控制台管理集群的 IAM 角色关联。

要管理 IAM 角色关联
  1. 登录到 Amazon Web Services 管理控制台并打开 Amazon Redshift 控制台,网址:https://console.aws.amazon.com/redshiftv2/。

  2. 在导航菜单上,选择 Clusters(集群),然后选择要更新的集群。

  3. 对于 Actions(操作),选择 Manage IAM roles(管理 IAM 角色)以显示与集群关联的当前列表 IAM 角色。

  4. 在 Manage IAM roles(管理 IAM 角色)页面上,选择要添加的可用 IAM 角色,然后选择 Add IAM role(添加 IAM 角色)。

  5. 选择 Done(完成)以保存您的更改。

您可以使用以下方法,通过 Amazon 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 Amazon 账户的 IAM 角色的关联。

aws redshift modify-cluster-iam-roles \ --cluster-identifier "my-redshift-cluster" \ --remove-iam-roles "arn:aws:iam::123456789012:role/RedshiftCopyUnload"

使用 Amazon 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" } ], ... } ] }

有关使用 Amazon CLI 的更多信息,请参阅 Amazon CLI 用户指南。