授权使用 IAM 角色执行拷贝、卸载、创建外部函数和创建外部架构操作 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

授权使用 IAM 角色执行拷贝、卸载、创建外部函数和创建外部架构操作

您可以将COPY命令将数据加载(或导入)到 Amazon Redshift,卸载命令从 Amazon Redshift 中卸载(或导出)数据。您可以使用 “创建外部函数” 命令创建用户定义的函数,这些函数从Amazon Lambda。

当您使用 Amazon Redshift Spectrum 时,您可以使用创建外部架构命令来指定包含您的数据的 Amazon S3 存储桶的位置。当您运行 COPY、UNLOAD 或 CREATE EXTERNAL SCHEMA 命令时,您提供了安全凭证。这些凭证授权您的 Amazon Redshift 集群在目标目的地(如 Amazon S3 存储桶)中读取或写入数据。

运行创建外部函数时,您可以使用 IAM 角色参数提供安全证书。这些凭据授权您的 Amazon Redshift 集群从Amazon Lambda。提供安全凭证的首选方法是指定一个Amazon Identity and Access Management(IAM) 角色。对于 COPY 和 UNLOAD,您可以提供Amazon访问密钥。有关创建 IAM 角色的信息,请参阅授予 Amazon Redshift 访问其他Amazon代表您的服务

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

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

  • 将 IAM 角色与集群关联。

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

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

将 IAM 角色与集群相关联

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

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

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

以下示例显示了一个 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: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 角色与 Amazon Redshift 集群关联。随后,IAM 角色可以与复制或卸载命令或其他 Amazon Redshift 命令一起使用。

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

管理 IAM 角色与集群的关联

您可在创建集群时将 IAM 角色与 Amazon Redshift 集群关联。或者,您可修改现有集群并添加或删除一个或多个 IAM 角色关联。

请注意以下事项:

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

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

  • 仅当 IAM 角色和集群都由同一群集所有时,该角色才能与 Amazon Redshift 集群关联。Amazonaccount.

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

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

注意

Amazon Redshift 有新的控制台可用。根据您使用的控制台,选择新控制台原始控制台说明。默认情况下会打开新控制台说明。

管理 IAM 角色关联

  1. 登录到Amazon Web Services Management Console,然后打开 Amazon Redshift 控制台https://console.aws.amazon.com/redshift/

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

  3. 适用于操作中,选择管理 IAM 角色以显示与集群关联的当前 IAM 角色列表。

  4. 在存储库的管理 IAM 角色页面上,选择要添加的可用 IAM 角色,然后选择添加 IAM 角色

  5. 选择Done保存您的更改。

管理 IAM 角色关联

  1. 登录到Amazon Web Services Management Console,然后打开 Amazon Redshift 控制台https://console.aws.amazon.com/redshift/

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

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

  4. 选择请参阅 IAM 角色

  5. 要将 IAM 角色与集群关联,请为可用角色。如果您看到在列表中未包含 IAM 角色(例如,如果尚未创建 IAM 角色),您也可以手动输入 IAM 角色。

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

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

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

使用 Amazon CLI 管理 IAM 角色关联

您可以使用以下方法,通过 Amazon CLI 管理集群的 IAM 角色关联。

使用 Amazon 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 集群关联,请为--add-iam-roles的参数modify-cluster-iam-roles命令。您可在调用 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"
使用 Amazon CLI 将 IAM 角色与集群取消关联

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

以下示例删除的 IAM 角色的关联123456789012 Amazon帐户从名为my-redshift-cluster

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": "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" } ], ... } ] }

有关使用Amazon CLI,请参阅Amazon CLI用户指南