Amazon Redshift
管理指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

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

您可使用 COPY 命令将数据加载(或导入)到 Amazon Redshift,使用 UNLOAD 命令从 Amazon Redshift 卸载(或导出)数据。当您使用 COPY 或 UNLOAD 命令时,必须提供为您的 Amazon Redshift 群集授权在目标目的地(如 Amazon S3 存储桶)中读取或写入数据的安全凭证。安全凭证可以是 AWS 访问密钥,也可以是指定 IAM 角色的首选方法。如果指定了一个 IAM 角色,则该 IAM 角色必须与您要在其中加载或卸载数据的群集关联。有关创建 IAM 角色以授权 Amazon Redshift 将数据复制到 Amazon Redshift 或从其中卸载数据的信息,请参阅授权 Amazon Redshift 代表您访问其他 AWS 服务

将 IAM 角色与 COPY 或 UNLOAD 命令结合使用的步骤如下:

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

  • 将 IAM 角色与群集关联。

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

本主题的各个部分介绍如何将 IAM 角色与 Amazon Redshift 群集关联。有关创建 IAM 角色的信息,请参阅授权 Amazon Redshift 代表您访问其他 AWS 服务

有关使用 COPY 命令的信息,请参阅加载数据。有关使用 UNLOAD 命令的更多信息,请参阅卸载数据

将 IAM 角色与群集关联

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

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

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

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

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

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

Copy
{ "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 角色与其关联,请在 create-cluster 命令的 --iam-role-arns 参数中指定 IAM 角色的 Amazon 资源名称 (ARN)。您可在调用 create-cluster 命令时指定最多 10 个要添加的 IAM 角色。

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

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

Copy
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 的现有群集关联。

Copy
aws redshift modify-cluster-iam-roles \ --cluster-identifier "my-redshift-cluster" \ --add-iam-roles "arn:aws:iam::123456789012:role/RedshiftCopyUnload"
使用 AWS CLI 解除 IAM 角色与群集的关联

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

以下示例从名为 my-redshift-cluster 的群集中删除 123456789012 AWS 账户的 IAM 角色的关联。

Copy
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

Copy
{ "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 命令行界面用户指南