

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

# Amazon Redshift 与 Amazon S3 访问权限管控的集成
<a name="redshift-iam-access-control-sso-s3idc"></a>

通过与 Amazon S3 访问权限管控集成，可以无缝传播 IAM Identity Center 身份，来控制对 Amazon S3 数据的访问权限。此集成支持您根据 IAM Identity Center 用户和组授权 Amazon S3 数据访问权限。

有关 Amazon S3 访问权限管控的信息，请参阅[使用 S3 访问权限管控管理访问权限](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants.html)。

使用 Amazon S3 访问权限管控可为应用程序带来以下优势：
+ 基于 IAM Identity Center 身份，对 Amazon S3 数据进行精细的访问控制。
+ 跨 Amazon Redshift 和 Amazon S3 集中管理 IAM Identity Center 身份。
+ 您可以避免为 Amazon S3 访问权限管理单独的 IAM 权限。

## 工作原理
<a name="redshift-iam-access-control-sso-s3idc-howitworks"></a>

要将应用程序与 Amazon S3 访问权限管控集成，请执行以下操作：
+ 首先，使用 AWS 管理控制台或 AWS CLI 将 Amazon Redshift 配置为与 Amazon S3 访问权限管控集成。
+ 接下来，具有 IdC 管理员权限的用户使用 Amazon S3 访问权限管控服务，向特定 IdC 用户/组授予对 Amazon S3 存储桶或前缀的访问权限。有关更多信息，请参阅[在 S3 访问权限管控中处理授权](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-grant.html)。
+ 当经过 Redshift 身份验证的 IdC 用户运行访问 S3 的查询（如 COPY、UNLOAD 或 Spectrum 操作）时，Amazon Redshift 会从 Amazon S3 访问权限管控服务中检索该 IdC 身份范围内的临时 S3 访问凭证。
+ 然后，Amazon Redshift 使用检索到的临时凭证，来访问该查询的经授权的 Amazon S3 位置。

## 设置与 Amazon S3 访问权限管控的集成
<a name="redshift-iam-access-control-sso-s3idc-setup"></a>

要为 Amazon Redshift 设置与 Amazon S3 访问权限管控的集成，请执行以下操作：

**Topics**
+ [使用 AWS 管理控制台设置与 Amazon S3 访问权限管控的集成](#redshift-iam-access-control-sso-s3idc-setup-console)
+ [使用 AWS CLI 启用与 Amazon S3 访问权限管控的集成](#redshift-iam-access-control-sso-s3idc-setup-cli)

### 使用 AWS 管理控制台设置与 Amazon S3 访问权限管控的集成
<a name="redshift-iam-access-control-sso-s3idc-setup-console"></a>

1. 打开 Amazon Redshift 控制台。

1. 从**集群**窗格中选择您的集群。

1. 在集群的详细信息页面的**身份提供者集成**部分，启用与 **S3 访问权限管控**服务的集成。
**注意**  
如果您未配置 IAM Identity Center，则不会显示**身份提供者集成**部分。有关更多信息，请参阅 [Enabling AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/get-set-up-for-idc.html)。

### 使用 AWS CLI 启用与 Amazon S3 访问权限管控的集成
<a name="redshift-iam-access-control-sso-s3idc-setup-cli"></a>

1. 要创建一个启用了 S3 集成的新 Amazon Redshift IdC 应用程序，请执行以下操作：

   ```
   aws redshift create-redshift-idc-application <other parameters> 
     --service-integrations '[ {"S3AccessGrants": [{"ReadWriteAccess": {"Authorization": "Enabled"}}]} ]'
   ```

1. 要修改现有应用程序以启用 S3 访问权限管控集成，请执行以下操作：

   ```
   aws redshift modify-redshift-idc-application <other parameters>
     --service-integrations '[ {"S3AccessGrants": [{"ReadWriteAccess": {"Authorization": "Enabled"}}]} ]'
   ```

1. 要修改现有应用程序以禁用 S3 访问权限管控集成，请执行以下操作：

   ```
   aws redshift modify-redshift-idc-application <other parameters>
     --service-integrations '[ {"S3AccessGrants": [{"ReadWriteAccess": {"Authorization": "Disabled"}}]} ]'
   ```

## 使用与 S3 访问权限管控的集成
<a name="redshift-iam-access-control-sso-s3idc-using"></a>

配置 S3 访问权限管控集成后，访问 S3 数据的查询（例如 `COPY`、`UNLOAD` 或 Spectrum 查询）将使用 IdC 身份进行授权。未使用 IdC 进行身份验证的用户也可以运行这些查询，但是这些用户账户无法利用 IdC 提供的集中式管理。

以下示例显示了通过 S3 访问权限管控集成运行的查询：

```
COPY table FROM 's3://mybucket/data';  // -- Redshift uses IdC identity 
UNLOAD ('SELECT * FROM table') TO 's3://mybucket/unloaded/'    // -- Redshift uses IdC identity
```