Amazon Redshift
集群管理指南 (API 版本 2012-12-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

使用 IAM 角色授权 COPY、UNLOAD 和 CREATE EXTERNAL SCHEMA 操作

您可使用 COPY 命令将数据加载(或导入)到 Amazon Redshift,使用 UNLOAD 命令从 Amazon Redshift 卸载(或导出)数据。在使用 Amazon Redshift Spectrum 时,您要使用 CREATE EXTERNAL SCHEMA 命令来指定包含您的数据的 Amazon S3 存储桶的位置。当您运行 COPY、UNLOAD 或 CREATE EXTERNAL SCHEMA 命令时,必须提供为您的 Amazon Redshift 集群授权在目标目的地(如 Amazon S3 存储桶)中读取或写入数据的安全凭证。提供安全凭证的首选方法是指定一个 AWS Identity and Access Management (IAM) 角色。对于 COPY 和 UNLOAD,您可以提供 AWS 访问密钥。有关创建 IAM 角色的信息,请参阅授权 Amazon Redshift 代表您访问其他 AWS 服务

使用 IAM 角色的步骤如下所示:

  • 创建要与您的 Amazon Redshift 集群结合使用的 IAM 角色。

  • 将 IAM 角色与集群关联。

  • 在调用 COPY、UNLOAD 或 CREATE EXTERNAL SCHEMA 命令时包含 IAM 角色的 ARN。

在本主题中,您将了解如何将 IAM 角色与 Amazon Redshift 集群关联。

将 IAM 角色与集群关联

在创建授权 Amazon Redshift 代表您访问其他 AWS 服务的 IAM 角色之后,您必须将该角色与 Amazon Redshift 集群关联,然后才能使用该角色加载或卸载数据。

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

要将 IAM 角色与集群关联,IAM 用户必须具有针对该 IAM 角色的 iam:PassRole 权限。此权限允许管理员限制用户可关联到 Amazon Redshift 集群的 IAM 角色。

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

  • 获取用户的账户拥有的所有 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: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 用户具有相应的权限,用户即可将 IAM 角色与用于 COPY 或 UNLOAD 命令或其他 Amazon Redshift 命令的 Amazon Redshift 集群关联。

有关 IAM 策略的更多信息,请参阅 IAM 用户指南 中的 IAM 策略概述

管理 IAM 角色与集群的关联

您可在创建 Amazon Redshift 集群时将 IAM 角色与此集群关联,也可修改现有集群并添加或删除一个或多个 IAM 角色关联。请注意以下几点:

  • 您最多可将 10 个 IAM 角色与一个 Amazon Redshift 集群关联。

  • 一个 IAM 角色可与多个 Amazon Redshift 集群关联。

  • 仅当 IAM 角色和集群都由同一 AWS 账户拥有时,该角色才能与 Amazon Redshift 集群关联。

使用控制台管理 IAM 角色关联

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

  1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon Redshift 控制台:https://console.amazonaws.cn/redshift/

  2. 在导航窗格中,选择 Clusters

  3. 在列表中,选择要为其管理 IAM 角色的集群。

  4. 选择 Manage IAM Roles

  5. 要将 IAM 角色与集群关联,请从 Available roles 列表中选择您的 IAM 角色。如果您在列表中未看到 IAM 角色(例如,如果 IAM 角色尚未创建),则还可以手动输入 IAM 角色。

  6. 要解除 IAM 角色与集群的关联,请为要解除关联的 IAM 角色选择 X

  7. 在修改完集群的 IAM 角色关联后,选择 Apply Changes 以更新与集群关联的 IAM 角色。

Manage IAM Roles 面板将显示您的集群 IAM 角色关联的状态。已与集群关联的角色将显示状态 in-sync。正在与集群关联的角色将显示状态 adding。正与集群解除关联的角色将显示状态 removing

使用 AWS CLI 管理 IAM 角色关联

您可使用以下方法,借助 AWS CLI 管理集群的 IAM 角色关联。

使用 AWS CLI 将 IAM 角色与集群关联

要在创建集群后将 IAM 角色与其关联,请在 --iam-role-arns 命令的 create-cluster 参数中指定 IAM 角色的 Amazon 资源名称 (ARN)。您可在调用 create-cluster 命令时指定最多 10 个要添加的 IAM 角色。

将 IAM 角色与 Amazon Redshift 集群关联和解除两者之间的关联是一个异步过程。您可通过调用 describe-clusters 命令获取所有 IAM 角色集群关联的状态。

以下示例将两个 IAM 角色与新创建的名为 my-redshift-cluster 的集群关联。

aws redshift create-cluster \ --cluster-identifier "my-redshift-cluster" \ --node-type "dc1.large" \ --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 资源名称 (ARN)。您可在调用 modify-cluster-iam-roles 命令时指定最多 10 个要添加的 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"
使用 AWS CLI 解除 IAM 角色与集群的关联

要解除 IAM 角色与集群的关联,请在 --remove-iam-roles 命令的 modify-cluster-iam-roles 参数中指定 IAM 角色的 ARN。您可在调用 modify-cluster-iam-roles 命令时指定最多 10 个要删除的角色。

以下示例从名为 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": "dc1.large", "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": "dc1.large", "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 命令行界面用户指南