

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://www.amazonaws.cn/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# 授权 Amazon Redshift 代表您访问 Amazon 服务
<a name="authorizing-redshift-service"></a>

某些 Amazon Redshift 功能要求 Amazon Redshift 代表您访问其他 Amazon 服务。例如，[COPY](https://docs.amazonaws.cn/redshift/latest/dg/r_COPY.html) 和 [UNLOAD](https://docs.amazonaws.cn/redshift/latest/dg/r_UNLOAD.html) 命令可使用 Simple Storage Service（Amazon S3）存储桶将数据加载或卸载到您的 Amazon Redshift 集群中。[CREATE EXTERNAL FUNCTION](https://docs.amazonaws.cn/redshift/latest/dg/r_CREATE_EXTERNAL_FUNCTION.html) 命令可以使用标量 Lambda 用户定义的函数 (UDF) 调用 Amazon Lambda 函数。Amazon Redshift Spectrum 可以在 Amazon Athena 或 Amazon Glue 中使用数据目录。要让您的 Amazon Redshift 集群代表您执行操作，请为这些集群提供安全凭证。提供安全凭证的首选方法是指定一个 Amazon Identity and Access Management (IAM) 角色。对于 COPY 和 UNLOAD，您可以提供临时凭证。

如果用户需要在 Amazon Web Services 管理控制台之外与 Amazon 交互，则需要编程式访问权限。Amazon API 和 Amazon Command Line Interface 需要访问密钥。可能的话，创建临时凭证，该凭证由一个访问密钥 ID、一个秘密访问密钥和一个指示凭证何时到期的安全令牌组成。

要向用户授予编程式访问权限，请选择以下选项之一。


****  

| 哪个用户需要编程式访问权限？ | 目的 | 方式 | 
| --- | --- | --- | 
| IAM | 使用短期凭证签署对 Amazon CLI 或 Amazon API 的编程式请求（直接或使用 Amazon SDK）。 | 按照《IAM 用户指南》中[将临时凭证用于 Amazon 资源](https://docs.amazonaws.cn//IAM/latest/UserGuide/id_credentials_temp_use-resources.html)中的说明进行操作。 | 
| IAM | （不推荐使用）使用长期凭证签署对 Amazon CLI 或 Amazon API 的编程式请求（直接或使用 Amazon SDK）。 | 按照《IAM 用户指南》中[管理 IAM 用户的访问密钥](https://docs.amazonaws.cn//IAM/latest/UserGuide/id_credentials_access-keys.html)中的说明进行操作。 | 

接下来，了解如何创建具有访问其他 Amazon 服务的适当权限的 IAM 角色。当您执行 Amazon Redshift 命令时，还需要将该角色与您的集群关联并指定角色的 Amazon Resource Name (ARN)。有关更多信息，请参阅 [使用 IAM 角色授权 COPY、UNLOAD、CREATE EXTERNAL FUNCTION 和 CREATE EXTERNAL SCHEMA 操作使用 IAM 角色授权执行操作](copy-unload-iam-role.md)。

此外，超级用户还可以向特定用户和组授予 ASSUMEROLE 权限，以便为 COPY 和 UNLOAD 操作提供对角色的访问权限。有关更多信息，请参阅 *Amazon Redshift 数据库开发人员指南*中的 [GRANT](https://docs.amazonaws.cn/redshift/latest/dg/r_GRANT.html)。

## 创建 IAM 角色以允许 Amazon Redshift 集群访问 Amazon 服务


## 创建具有权限的 IAM 角色
<a name="authorizing-redshift-service-creating-an-iam-role"></a>

要创建 IAM 角色以允许您的 Amazon Redshift 集群代表您与其他 Amazon 服务通信，请执行以下步骤。本节中使用的值是示例，您可以根据需要选择值。<a name="create-iam-role-for-aws-services"></a>

**要创建 IAM 角色以允许 Amazon Redshift 访问 Amazon 服务**

1. 打开 [IAM 控制台](https://console.amazonaws.cn/iam/home?#home)。

1. 在导航窗格中，选择**角色**。

1. 选择 **Create role**（创建角色）。

1. 选择 **Amazon 服务**，然后选择 **Redshift**。

1. 在 **Select your use case** 下，选择 **Redshift - Customizable**，然后选择 **Next: Permissions**。此时显示 **Attach permissions policy** 页面。

1. 对于使用 COPY 访问 Simple Storage Service（Amazon S3），作为示例，您可以使用 **AmazonS3ReadOnlyAccess** 并附加。要使用 COPY 或 UNLOAD 访问 Simple Storage Service（Amazon S3），我们建议您创建托管式策略，以相应地限制对所需存储桶和前缀的访问。对于读取和写入操作，我们建议强制执行最低权限，并仅限于 Amazon Redshift 要求的 Simple Storage Service（Amazon S3）存储桶和键前缀。

   要想为 CREATE EXTERNAL FUNCTION 命令调用 Lambda 函数，请添加 **AWSLambdaRole**。

   对于 Redshift Spectrum，除 Simple Storage Service（Amazon S3）访问以外，添加 **AWSGlueConsoleFullAccess** 或 **AmazonAthenaFullAccess**。

   选择 **下一步：标签**。

1. 此时将显示**添加标签**页面。您可以选择性地添加标签。选择**下一步：审核**。

1. 对于**角色名称**，键入一个角色名称，例如 **RedshiftCopyUnload**。选择****创建角色****。

1. 使用新角色的集群中的所有用户都可使用该角色。如需限制访问，只允许特定集群中的特定用户、或特定区域中的集群访问，请编辑该角色的信任关系。有关更多信息，请参阅 [限制对 IAM 角色的访问](authorizing-redshift-service-database-users.md)。

1. 将角色与您的集群关联。您可以在创建集群时关联 IAM 角色，或将角色添加到现有集群中。有关更多信息，请参阅 [将 IAM 角色与集群相关联](copy-unload-iam-role-associating-with-clusters.md)。
**注意**  
要限制对特定数据的访问，请使用授予所需最少权限的 IAM 角色。