

# S3 对象 Lambda 教程
<a name="olap-tutorials"></a>

**注意**  
自 2025 年 11 月 7 日起，S3 对象 Lambda 仅可供当前在使用该服务的现有客户以及部分 AWS 合作伙伴网络（APN）合作伙伴使用。要了解与 S3 对象 Lambda 类似的功能，请在此处了解更多信息：[Amazon S3 Object Lambda availability change](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html)。

以下教程提供了一些 S3 对象 Lambda 任务的完整端到端过程。

采用 S3 对象 Lambda，可以添加自己的代码处理从 S3 检索的数据，然后再将其返回应用程序。以下每个教程都将在从 Amazon S3 检索出数据时对数据进行修改，而无需更改现有对象或维护数据的多个副本。第一个教程将演练如何向 S3 GET 请求添加 AWS Lambda 函数，来修改从 S3 中检索到的对象。第二个教程演示如何使用由 Amazon Comprehend 支持的预构建 Lambda 函数，在将从 S3 检索到的个人身份信息（PII）返回给应用程序之前为其提供保护。第三个教程使用 S3 对象 Lambda，在从 Amazon S3 检索到图像时为其添加水印。
+ [教程：使用 S3 对象 Lambda 转换应用程序的数据](tutorial-s3-object-lambda-uppercase.md)
+ [教程：使用 S3 对象 Lambda 和 Amazon Comprehend 检测和修订 PII 数据](tutorial-s3-object-lambda-redact-pii.md)
+ [教程：使用 S3 对象 Lambda 在检索图像时对其动态加水印](https://aws.amazon.com/getting-started/hands-on/amazon-s3-object-lambda-to-dynamically-watermark-images/?ref=docs_gateway/amazons3/olap-tutorials.html)

# 教程：使用 S3 对象 Lambda 转换应用程序的数据
<a name="tutorial-s3-object-lambda-uppercase"></a>

**注意**  
自 2025 年 11 月 7 日起，S3 对象 Lambda 仅可供当前在使用该服务的现有客户以及部分 AWS 合作伙伴网络（APN）合作伙伴使用。要了解与 S3 对象 Lambda 类似的功能，请在此处了解更多信息：[Amazon S3 Object Lambda availability change](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html)。

在 Amazon S3 中存储数据时，您可以轻松共享数据供多个应用程序使用。但是，每个应用程序可能具有独特的数据格式要求，可能需要针对特定用例修改或处理您的数据。例如，由电子商务应用程序创建的数据集可能包括个人识别信息（PII）。处理相同的数据以进行分析时，不需要此 PII，应该进行修订。但是，如果将同一数据集用于营销活动，可能需要使用其他详细信息来丰富数据，例如来自客户忠诚度数据库的信息。

采用 [S3 对象 Lambda](https://aws.amazon.com/s3/features/object-lambda)，可以添加自己的代码处理从 S3 检索的数据，然后再将其返回应用程序。具体来说，您可以配置 AWS Lambda 函数并将其附加到 S3 对象 Lambda 接入点。当应用程序通过 S3 对象 Lambda 接入点发送 [standard S3 GET requests](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) 时，将调用指定的 Lambda 函数，以处理通过 S3 支持接入点从底层数据来源检索到的任何数据。然后，S3 对象 Lambda 接入点将转换后的结果返回给应用程序。您可以创作和执行自己的自定义 Lambda 函数，根据您的特定用例定制 S3 对象 Lambda 数据转换，所有这些都不需要更改您的应用程序。

![\[这是 S3 对象 Lambda 工作流示意图。\]](http://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/images/ol-example-image-global.png)


**目标**  
在本教程中，您将了解如何将自定义代码添加到标准 S3 GET 请求中，修改从 S3 检索到的请求对象，从而使该对象适合请求客户端或应用程序的需要。具体而言，您将了解如何通过 S3 对象 Lambda，将存储在 S3 存储桶中的原始对象中的所有文本转换为大写。

**注意**  
本教程使用 Python 代码来转换数据，有关使用其它 AWS SDK 的示例，请参阅 AWS SDK 代码示例库中的 [Transform data for your application with S3 Object Lambda](https://docs.aws.amazon.com/code-library/latest/ug/lambda_example_cross_ServerlessS3DataTransformation_section.html)。

**Topics**
+ [先决条件](#ol-upper-prerequisites)
+ [步骤 1：创建 S3 存储桶](#ol-upper-step1)
+ [步骤 2：将文件上传到 S3 存储桶。](#ol-upper-step2)
+ [步骤 3：创建 S3 接入点](#ol-upper-step3)
+ [步骤 4：创建 Lambda 函数](#ol-upper-step4)
+ [步骤 5：为 Lambda 函数的执行角色配置 IAM 策略](#ol-upper-step5)
+ [步骤 6：创建 S3 对象 Lambda 接入点](#ol-upper-step6)
+ [步骤 7：查看转换的数据](#ol-upper-step7)
+ [步骤 8：清除](#ol-upper-step8)
+ [后续步骤](#ol-upper-next-steps)

## 先决条件
<a name="ol-upper-prerequisites"></a>

在开始本教程之前，您必须具有 AWS 账户，您可使用具有正确权限的 AWS Identity and Access Management（IAM）用户登录此账户。您还必须安装 Python 3.8 或更高版本。

**Topics**
+ [在您的 AWS 账户 中创建具有权限的 IAM 用户（控制台）](#ol-upper-prerequisites-account)
+ [在本地计算机上安装 Python 3.8 或更高版本](#ol-upper-prerequisites-python)

### 在您的 AWS 账户 中创建具有权限的 IAM 用户（控制台）
<a name="ol-upper-prerequisites-account"></a>

您可以为此教程创建 IAM 用户。要完成本教程，您的 IAM 用户必须附加以下 IAM 策略才能访问相关 AWS 资源并执行特定操作。有关如何创建 IAM 用户的更多信息，请参阅 *《IAM 用户指南》*中的[创建 IAM 用户（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console)。

您的 IAM 用户需要以下策略：
+ [AmazonS3FullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonS3FullAccess$jsonEditor) - 授予对所有 Amazon S3 操作的权限，包括创建和使用对象 Lambda 接入点的权限。
+ [AWSLambda\$1FullAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSLambda_FullAccess$jsonEditor) - 对所有 Lambda 操作授予权限。
+ [IAMFullAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/IAMFullAccess$jsonEditor) - 对所有 IAM 操作授予权限。
+ [IAMAccessAnalyzerReadOnlyAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/IAMAccessAnalyzerReadOnlyAccess$jsonEditor) - 授予读取 IAM Access Analyzer 提供的所有访问信息的权限。
+ [CloudWatchLogsFullAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/CloudWatchLogsFullAccess$jsonEditor) – 授予对 CloudWatch Logs 的完全访问权限。

**注意**  
为简单起见，本教程创建并使用 IAM 用户。完成本教程后，请记住 [删除 IAM 用户](#ol-upper-step8-delete-user)。对于生产用途，我们建议您遵循《IAM 用户指南》**中的 [IAM 中的安全最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。最佳实践要求人类用户将联合身份验证与身份提供商结合使用，以使用临时凭证访问 AWS。另一项最佳实践是要求工作负载使用带有 IAM 角色的临时凭证访问 AWS。要了解如何使用 AWS IAM Identity Center 创建具有临时凭证的用户，请参阅《AWS IAM Identity Center 用户指南》**中的[入门](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)。  
本教程还使用完全访问 AWS 托管式策略。对于生产用途，建议您根据[安全最佳实践](security-best-practices.md#security-best-practices-prevent)仅授予用例所需的最低权限。

### 在本地计算机上安装 Python 3.8 或更高版本
<a name="ol-upper-prerequisites-python"></a>

使用以下过程在本地计算机上安装 Python 3.8 或更高版本。有关安装说明的更多信息，请参阅 *《Python 初学者指南》*中的[下载 Python](https://wiki.python.org/moin/BeginnersGuide/Download) 页面。

1. 打开本地终端或 shell 并运行以下命令以确定是否已安装 Python，如果已安装，确定已安装的版本。

   ```
   python --version
   ```

1. 如果没有 Python 3.8 或更高版本，则下载适合您的本地计算机的[官方安装](https://www.python.org/downloads/)。

1. 双击下载的文件运行安装程序，然后按照步骤完成安装。

   对于 **Windows 用户**，在安装向导中选择**将 Python 3.X 添加到 PATH**，然后选择**立即安装**。

1. 通过关闭并重新打开终端来重新启动它。

1. 运行以下命令以验证是否正确安装了 Python 3.8或更高版本。

   对于** macOS 用户**，运行以下命令：

   ```
   python3 --version
   ```

   对于 **Windows 用户**，运行此命令：

   ```
   python --version
   ```

1. 运行以下命令验证是否安装了 pip3 包管理器。如果您在命令响应中看到 pip 版本号和 python 3.8 或更高版本，则意味着 pi3 软件包管理器已成功安装。

   ```
   pip --version
   ```

## 步骤 1：创建 S3 存储桶
<a name="ol-upper-step1"></a>

创建存储桶来存储您计划转换的原始数据。

**注意**  
可以为其它数据来源附加接入点，例如适用于 OpenZFS 的 Amazon FSx 卷，但本教程使用附加到 S3 存储桶的支持接入点。

**创建存储桶**

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择**存储桶**。

1. 选择**创建存储桶**。

   此时将打开**创建存储桶**页面。

1. 对于**存储桶名称**，输入您的存储桶名称（例如，**tutorial-bucket**）。

   有关 Amazon S3 存储桶命名的更多信息，请参阅 [通用存储桶命名规则](bucketnamingrules.md)。

1. 对于**区域**，选择要放置存储桶的 AWS 区域。

   有关存储桶区域的更多信息，请参阅 [通用存储桶概述](UsingBucket.md)。

1. 对于**此存储桶的屏蔽公共访问权限设置**，保留默认值（**屏蔽*所有*公共访问权限**已启用）。

   除非您需要为您的用例关闭一个或多个屏蔽公共访问权限设置，否则建议您将所有这些设置保持为启用状态。有关屏蔽公共访问权限的更多信息，请参阅 [阻止对您的 Amazon S3 存储的公有访问](access-control-block-public-access.md)。

1. 对于其余设置，保留默认值。

   （可选）如果要为您的特定用例配置其他存储桶设置，请参阅 [创建通用存储桶](create-bucket-overview.md)。

1. 选择**创建存储桶**。

## 步骤 2：将文件上传到 S3 存储桶。
<a name="ol-upper-step2"></a>

将文本文件上传到 S3 存储桶。此文本文件包含本教程稍后将转换为大写的原始数据。

例如，您可以上传包含以下文本的 `tutorial.txt`文件：

```
Amazon S3 Object Lambda Tutorial:
You can add your own code to process data retrieved from S3 before 
returning it to an application.
```

**要上传文件到存储桶**

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择**存储桶**。

1. 在**存储桶**列表中，选择您在[步骤 1](#ol-upper-step1)中创建的存储桶名称（例如，**tutorial-bucket**）上传您的文件。

1. 在存储桶的**对象** 选项卡上，选择**上传**。

1. 在**上传**页面的**文件和文件夹**下，选择**添加文件**。

1. 选择要上传的文件，然后选择**打开**。例如，您可以上传之前提到的 `tutorial.txt` 文件示例。

1. 选择**上传**。

## 步骤 3：创建 S3 接入点
<a name="ol-upper-step3"></a>

要使用 S3 对象 Lambda 接入点访问和转换原始数据，您必须创建一个 S3 接入点，并将其与您在[步骤 1](#ol-upper-step1) 中创建的 S3 存储桶关联。接入点必须与要变换的对象位于同一 AWS 区域 位置。

在本教程的后面部分，您将使用此接入点作为对象 Lambda 接入点的支持接入点。

**创建接入点**

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择**接入点**。

1. 在**接入点**页面上，选择**创建接入点**。

1. 在**接入点名称**字段中输入接入点名称（例如，**tutorial-access-point**）。

   有关命名接入点的更多信息，请参阅[接入点的命名规则](access-points-restrictions-limitations-naming-rules.md#access-points-names)。

1. 在**数据来源**字段中，输入您在[步骤 1](#ol-upper-step1) 中创建的存储桶的名称（例如 **tutorial-bucket**）。S3 将接入点附加到存储桶。

   您也可以选择**浏览 S3** 浏览和搜索账户中的存储桶。如果选择**浏览 S3**，请选择所需的存储桶，然后选择**选择路径**使用该存储桶的名称填充**存储桶名称**字段。

1. 适用于**网络源**中，选择**互联网**。

   有关接入点的网络源的更多信息，请参阅[创建限制到 Virtual Private Cloud 的接入点](access-points-vpc.md)。

1. 默认情况下，为您的接入点启用所有屏蔽公共访问权限设置。我们建议您将**屏蔽*所有* 公共访问权限**保留为启用状态。

   有关更多信息，请参阅 [管理对通用存储桶的接入点的公共访问权限](access-points-bpa-settings.md)。

1. 对于所有其他接入点设置，保留默认设置。

   （可选）您可以修改接入点设置以支持您的用例。在本教程中，我们建议您保留默认设置。

   （可选）如果需要管理对接入点的访问，可以指定接入点策略。有关更多信息，请参阅 [接入点的策略示例](access-points-policies.md#access-points-policy-examples)。

1. 选择 **Create access point（创建接入点）**。

## 步骤 4：创建 Lambda 函数
<a name="ol-upper-step4"></a>

要转换原始数据，请创建 Lambda 函数以与 S3 对象 Lambda 接入点结合使用。

**Topics**
+ [编写 Lambda 函数代码并使用虚拟环境创建部署包](#ol-upper-step4-write-lambda)
+ [使用执行角色创建 Lambda 函数（控制台）](#ol-upper-step4-create-function)
+ [用 .zip 文件归档部署 Lambda 函数代码，并配置 Lambda 函数（控制台）](#ol-upper-step4-deploy-function)

### 编写 Lambda 函数代码并使用虚拟环境创建部署包
<a name="ol-upper-step4-write-lambda"></a>

1. 在本地计算机上，使用文件夹名称 `object-lambda` 创建一个文件夹，供本教程稍后使用。

1. 在 `object-lambda` 文件夹中，使用 Lambda 函数创建一个文件，该函数将原始对象中的所有文本更改为大写。例如，您可以使用 Python 编写的以下函数。将此函数保存在名为的文件 `transform.py` 中。

   ```
   import boto3
   import requests
   from botocore.config import Config
   
   # This function capitalizes all text in the original object
   def lambda_handler(event, context):
       object_context = event["getObjectContext"]
       # Get the presigned URL to fetch the requested original object 
       # from S3
       s3_url = object_context["inputS3Url"]
       # Extract the route and request token from the input context
       request_route = object_context["outputRoute"]
       request_token = object_context["outputToken"]
       
       # Get the original S3 object using the presigned URL
       response = requests.get(s3_url)
       original_object = response.content.decode("utf-8")
   
       # Transform all text in the original object to uppercase
       # You can replace it with your custom code based on your use case
       transformed_object = original_object.upper()
   
       # Write object back to S3 Object Lambda
       s3 = boto3.client('s3', config=Config(signature_version='s3v4'))
       # The WriteGetObjectResponse API sends the transformed data
       # back to S3 Object Lambda and then to the user
       s3.write_get_object_response(
           Body=transformed_object,
           RequestRoute=request_route,
           RequestToken=request_token)
   
       # Exit the Lambda function: return the status code  
       return {'status_code': 200}
   ```
**注意**  
前面的示例 Lambda 函数将整个请求的对象加载到内存中，然后再将其转换为客户端。您还可以从 S3 流式传输对象，避免将整个对象加载到内存中。这种方法在处理大型对象时非常有用。有关使用对象 Lambda 接入点流式处理响应的详细信息，请参阅[在 Lambda 中处理 `GetObject` 请求](olap-writing-lambda.md#olap-getobject-response)中的流式处理示例。

   编写 Lambda 函数以用于 S3 对象 Lambda 接入点时，该函数基于 S3 对象 Lambda 提供给 Lambda 函数的输入事件上下文。事件上下文提供有关在从 S3 对象 Lambda 传递到 Lambda 的事件中发出请求的信息。它包含用于创建 Lambda 函数的参数。

   用于创建前面的 Lambda 函数的字段如下所示：

   字段 `getObjectContext` 表示与 Amazon S3 和 S3 对象 Lambda连接的输入和输出详细信息。它具有以下字段：
   + `inputS3Url` - Lambda 函数可用于从支持接入点下载原始对象的预签名 URL。通过使用预签名 URL，Lambda 函数无需具有 Amazon S3 读取权限即可检索原始对象，只能访问每次调用处理的对象。
   + `outputRoute` - 当 Lambda 函数调用 `WriteGetObjectResponse` 以发回转换后的对象时，添加到 S3 对象 Lambda URL 的路由令牌。
   + `outputToken` - S3 对象 Lambda 在发送回转换对象时用于将 `WriteGetObjectResponse` 调用与原始调用方匹配的令牌。

   有关事件上下文中所有字段的更多信息，请参阅 [事件上下文格式和用法](olap-event-context.md) 和 [为 S3 对象 Lambda 接入点编写 Lambda 函数](olap-writing-lambda.md)。

1. 在您的本地终端上，输入以下命令来安装 `virtualenv` 包：

   ```
   python -m pip install virtualenv
   ```

1. 在您的本地终端中，打开之前创建的 `object-lambda` 文件夹，然后输入以下命令创建并初始化名为的虚拟环境 `venv`。

   ```
   python -m virtualenv venv
   ```

1. 要激活虚拟环境，请输入以下命令，以执行环境的文件夹中的 `activate` 文件：

   对于** macOS 用户**，运行以下命令：

   ```
   source venv/bin/activate
   ```

   对于** Windows 用户**， 运行此命令：

   ```
   .\venv\Scripts\activate
   ```

   现在，命令提示符更改为显示 **(venv)**，表示虚拟环境处于活动状态。

1. 要安装所需的库，请在 `venv` 虚拟环境中运行下列命令行。

   这些命令会安装您 `lambda_handler` Lambda 函数依赖关系的更新版本。这些依赖关系是 AWS SDK for Python (Boto3) 和请求模块。

   ```
   pip3 install boto3
   ```

   ```
   pip3 install requests
   ```

1. 要停用虚拟环境，运行以下命令：

   ```
   deactivate
   ```

1. 要在 `object-lambda` 目录的根目录下，将已安装的库作为 `.zip` 文件（文件名为 `lambda.zip`）来创建部署程序包，请在本地终端中逐行运行以下命令。
**提示**  
可能需要调整以下命令才能在您的特定环境中工作。例如，库可能出现在 `site-packages` 或 `dist-packages` 中，第一个文件夹可能是 `lib` 或者 `lib64`。另外，`python` 文件夹可能会使用不同的 Python 版本命名。您可以使用 `pip show` 命令定位特定包。

   适用于** macOS 用户**，运行以下命令：

   ```
   cd venv/lib/python3.8/site-packages 
   ```

   ```
   zip -r ../../../../lambda.zip .
   ```

   对于 **Windows 用户**，运行以下命令：

   ```
   cd .\venv\Lib\site-packages\ 
   ```

   ```
   powershell Compress-Archive * ../../../lambda.zip
   ```

   最后一个命令将部署程序包保存到 `object-lambda` 目录的根目录中。

1. 将函数代码文件 `transform.py` 添加到部署程序包的根目录中。

   适用于** macOS 用户**，运行以下命令：

   ```
   cd ../../../../ 
   ```

   ```
   zip -g lambda.zip transform.py
   ```

   对于 **Windows 用户**，运行以下命令：

   ```
   cd ..\..\..\
   ```

   ```
   powershell Compress-Archive -update transform.py lambda.zip
   ```

   完成此步骤后，文件目录结构应如下：

   ```
   lambda.zip$
     │ transform.py
     │ __pycache__
     | boto3/
     │ certifi/
     │ pip/
     │ requests/
     ...
   ```

### 使用执行角色创建 Lambda 函数（控制台）
<a name="ol-upper-step4-create-function"></a>

1. 登录到 AWS 管理控制台，然后通过以下网址打开 AWS Lambda 控制台：[https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)。

   

1. 在左侧导航窗格中，选择**函数**。

1. 选择 **Create function (创建函数)**。

1. 选择**从头开始创作**。

1. 在**基本信息**中，执行以下操作：

   1. 对于 **Function name（函数名称）**，请输入 **tutorial-object-lambda-function**。

   1. 适用于**运行时间**中，选择** Python 3.8 **或更高版本。

1. 展开**更改默认执行角色**部分。在**执行角色**中，选择**创建具有基本 Lambda 权限的新角色**。

   在[步骤 5 ](#ol-upper-step5)中，在本教程的后面，您将** AmazonS3ObjectLambdaExecutionRolePolicy **附加到 Lambda 函数的执行角色上。

1. 对于其余设置，保留默认值。

1. 选择 **Create function（创建函数）**。

### 用 .zip 文件归档部署 Lambda 函数代码，并配置 Lambda 函数（控制台）
<a name="ol-upper-step4-deploy-function"></a>

1. 在 AWS Lambda 控制台位于[ https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/) 中，选择左侧导航窗格中的 **Functions**（函数）。

1. 选择您之前创建的 Lambda 函数（例如 **tutorial-object-lambda-function**）。

1. 在 Lambda 函数的详细信息页面上，选择**代码**选项卡。在**代码源**部分，选择**上传**，然后选择 **.zip 文件**。

1. 选择**上传**以选择本地 `.zip` 文件。

1. 选择您之前创建的 `lambda.zip` 文件，然后选择**打开**。

1. 选择**保存**。

1. 在**运行时间设置**部分，选择**编辑**。

1. 在存储库的**编辑运行时设置**页面上，确认**运行时**设置为** Python 3.8 **或更高版本。

1. 要告诉 Lambda 运行时要调用 Lambda 函数代码中的哪个处理程序方法，请输入 **transform.lambda\$1handler** 的**处理程序**。

   当您在 Python 中配置函数时，处理程序设置的值是文件名，也是处理程序模块的名称（由点分隔）。例如，`transform.lambda_handler` 调用在 `transform.py` 文件中定义的 `lambda_handler` 方法。

1. 选择**保存**。

1. （可选）在 Lambda 函数的详细信息页面上，选择**配置**选项卡。在左侧导航窗格中，选择**常规配置**，然后选择**编辑**。在**超时**字段中，输入 **1** 分钟 **0** 秒。对于其余设置，保留默认值，然后选择**保存**。

   **超时** –是 Lambda 允许函数在停止调用之前为调用运行的时长。默认值为 3 秒。S3 对象 Lambda 使用的 Lambda 函数的最大持续时间为 60 秒。定价基于配置的内存量和代码运行的时间量。

## 步骤 5：为 Lambda 函数的执行角色配置 IAM 策略
<a name="ol-upper-step5"></a>

要使 Lambda 函数能够提供自定义的数据和响应标头 `GetObject` 调用者，Lambda 函数的执行角色必须具有 IAM 权限才能调用 `WriteGetObjectResponse` API。

**将 IAM 策略附加到 Lambda 函数角色**



1. 在 AWS Lambda 控制台位于 [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/) 中，选择左侧导航窗格中的 **Functions**（函数）。

1. 选择您在[步骤 4](#ol-upper-step4) 中创建的函数（例如，**tutorial-object-lambda-function**）。

1. 在 Lambda 函数的详细信息页面上，选择**配置**选项卡，然后选择**Permissions（权限）**在左侧导航窗格中。

1. Unts**执行角色**中，选择 **Role name（角色名称）**。打开 IAM 控制台。

1. 在 IAM 控制台上对应于 Lambda 函数的执行角色的 **Summary**（摘要）页面上，选择 **Permissions**（权限）选项卡。然后，从 **Add Permissions**（添加权限）菜单中选择 **Attach policies**（附加策略）。

1. **在附加权限策略**页的搜索字段中输入 **AmazonS3ObjectLambdaExecutionRolePolicy** 策略的名称。选中 **AmazonS3ObjectLambdaExecutionRolePolicy** 政策名称旁边的复选框。

1. 选择**附加策略**。

## 步骤 6：创建 S3 对象 Lambda 接入点
<a name="ol-upper-step6"></a>

S3 对象 Lambda 接入点提供了直接从 S3 GET 请求调用 Lambda 函数的灵活性，以便该函数可以处理从 S3 接入点检索的数据。创建和配置 S3 对象 Lambda 接入点时，必须指定 Lambda 函数以调用并提供 JSON 格式的事件上下文作为 Lambda 要使用的自定义参数。

**创建 S3 对象 Lambda 接入点**

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择 **Object Lambda 接入点**。

1. 在**对象 Lambda 接入点**页面上，选择**创建对象 Lambda 接入点**。

1. 对于**对象 Lambda 接入点名称**，输入想要用于对象 Lambda 接入点的名称（例如 **tutorial-object-lambda-accesspoint**）。

1. 适用于**支持接入点**中，输入或浏览到您在[步骤 3](#ol-upper-step3)（例如，**tutorial-access-point**），然后选择**选择支持的接入点**。

1. 对于 **S3 APIs**（S3 API），要从 S3 存储桶中检索对象以便 Lambda 函数进行处理，请选择 **GetObject**。

1. 对于**调用 Lambda 函数**，您可以为本教程选择以下两个选项之一。
   + 选择**从您的账户中的函数中选择**，然后在 **Lambda 函数**下拉列表中，选择您在[步骤 4](#ol-upper-step4) 中创建的 Lambda 函数（例如 **tutorial-object-lambda-function**）。
   + 选择**输入 ARN**，然后输入您在[步骤 4](#ol-upper-step4) 中创建的 Lambda 函数的 Amazon 资源名称（ARN）。

1. 适用于**Lambda 函数版本**，选择**\$1LATEST**（您在[步骤 4](#ol-upper-step4)中创建的最新版 Lambda 函数)。

1. （可选）如果您需要 Lambda 函数识别和处理带有范围和分段编号标头的 GET 请求，请选择 **Lambda 函数支持使用范围的请求**和 **Lambda 函数支持使用零件编号的请求**。否则，请清除这两个复选框。

   有关如何将范围或分段编号与 S3 对象 Lambda 结合使用的更多信息，请参阅 [使用 Range 和 partNumber 标头](range-get-olap.md)。

1. （可选）在 **Payload（负载）- *可选***下，添加 JSON 文本，向 Lambda 函数提供其他信息。

   负载是可选 JSON 文本，您可以将其作为来自特定 S3 对象 Lambda 接入点的所有调用的输入提供给 Lambda 函数。要自定义调用同一 Lambda 函数的多个对象 Lambda 接入点的行为，您可以使用不同的参数配置负载，从而扩展 Lambda 函数的灵活性。

   更多有关路径模式的信息，请参阅 [事件上下文格式和用法](olap-event-context.md)。

1. （可选）对于**请求指标 – *可选***，选择**禁用**或**启用**，以便将 Amazon S3 监控添加到对象 Lambda 接入点。请求指标按标准 Amazon CloudWatch 费率计费。有关更多信息，请参阅 [CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing/)。

1. 在**对象 Lambda 接入点策略 - *可选***下，保留默认设置。

   （可选）您可以设置资源策略。此资源策略授予 `GetObject` API 权限，以便使用指定的对象 Lambda 接入点。

1. 对于其余设置，保留默认值，然后选择**创建对象 Lambda 接入点**。

## 步骤 7：查看转换的数据
<a name="ol-upper-step7"></a>

现在，S3 对象 Lambda 已准备好为您的使用案例转换您的数据。在本教程中，S3 对象 Lambda 将对象中的所有文本转换为大写。

**Topics**
+ [在 S3 对象 Lambda 接入点中查看转换后的数据](#ol-upper-step7-check-data)
+ [运行 Python 脚本以打印原始数据和转换数据](#ol-upper-step7-python-print)

### 在 S3 对象 Lambda 接入点中查看转换后的数据
<a name="ol-upper-step7-check-data"></a>

当您请求通过 S3 对象 Lambda 接入点检索文件时，您需要对 S3 对象 Lambda 进行 `GetObject` API 调用。S3 对象 Lambda 调用 Lambda 函数来转换您的数据，然后返回转换后的数据作为对标准 S3 的响应 `GetObject` API 调用。

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择**对象 Lambda 接入点**。

1. 在**对象 Lambda 接入点**页面上，选择您在[步骤 6](#ol-upper-step6) 中创建的 S3 对象 Lambda 接入点（例如，**tutorial-object-lambda-accesspoint**)。

1. 在 S3 对象 Lambda 接入点的**对象**选项卡中，选择具有相同名称的文件（例如 `tutorial.txt`）作为您在[步骤 2](#ol-upper-step2) 中上传到 S3 存储桶的文件。

   此文件应包含所有转换的数据。

1. 要查看转换后的数据，请选择**打开**或者**下载**。

### 运行 Python 脚本以打印原始数据和转换数据
<a name="ol-upper-step7-python-print"></a>

您可以将 S3 对象 Lambda 与现有应用程序结合使用。为此，请更新应用程序配置，以使用在[步骤 6](#ol-upper-step6) 中创建的新 S3 对象 Lambda 接入点 ARN 从 S3 检索数据。

以下示例 Python 脚本既打印来自 S3 存储桶的原始数据，也打印来自 S3 对象 Lambda 接入点的转换数据。

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择**对象 Lambda 接入点**。

1. 在**对象 Lambda 接入点**页面上，选择在[步骤 6](#ol-upper-step6) 中创建的 S3 对象 Lambda 接入点左侧的单选按钮（例如，**tutorial-object-lambda-accesspoint**)。

1. 选择**复制 ARN**。

1. 保存 ARN 以供稍后使用。

1. 在本地计算机上编写 Python 脚本，以从 S3 存储桶中打印原始数据（例如，`tutorial.txt`）并从 S3 对象 Lambda 接入点中打印转换后的数据（例如 `tutorial.txt`）。您可以使用以下示例脚本。

   ```
   import boto3
   from botocore.config import Config
   
   s3 = boto3.client('s3', config=Config(signature_version='s3v4'))
   
   def getObject(bucket, key):
       objectBody = s3.get_object(Bucket = bucket, Key = key)
       print(objectBody["Body"].read().decode("utf-8"))
       print("\n")
   
   print('Original object from the S3 bucket:')
   # Replace the two input parameters of getObject() below with 
   # the S3 bucket name that you created in Step 1 and 
   # the name of the file that you uploaded to the S3 bucket in Step 2
   getObject("tutorial-bucket", 
             "tutorial.txt")
   
   print('Object transformed by S3 Object Lambda:')
   # Replace the two input parameters of getObject() below with 
   # the ARN of your S3 Object Lambda Access Point that you saved earlier and
   # the name of the file with the transformed data (which in this case is
   # the same as the name of the file that you uploaded to the S3 bucket 
   # in Step 2)
   getObject("arn:aws:s3-object-lambda:us-west-2:111122223333:accesspoint/tutorial-object-lambda-accesspoint",
             "tutorial.txt")
   ```

1. 使用自定义名称将 Python 脚本（例如，`tutorial_print.py`）保存您在[步骤 4](#ol-upper-step4)中本地计算机上中创建的文件夹中（例如，`object-lambda`）。

1. 在您的本地终端上，在[步骤 4](#ol-upper-step4)中创建的根目录下运行以下命令（例如，`object-lambda`）。

   ```
   python3 tutorial_print.py
   ```

   您应该通过终端同时看到原始数据和转换后的数据（所有文本均为大写）。如，您应看到类似于以下的文本。

   ```
   Original object from the S3 bucket:
   Amazon S3 Object Lambda Tutorial:
   You can add your own code to process data retrieved from S3 before 
   returning it to an application.
   
   Object transformed by S3 Object Lambda:
   AMAZON S3 OBJECT LAMBDA TUTORIAL:
   YOU CAN ADD YOUR OWN CODE TO PROCESS DATA RETRIEVED FROM S3 BEFORE 
   RETURNING IT TO AN APPLICATION.
   ```

## 步骤 8：清除
<a name="ol-upper-step8"></a>

如果您仅出于练习目的通过 S3 对象 Lambda 创建静态网站，则删除您所分配的 AWS 资源，使其不再产生费用。

**Topics**
+ [删除对象 Lambda 接入点](#ol-upper-step8-delete-olap)
+ [删除 S3 接入点](#ol-upper-step8-delete-ap)
+ [删除您的 Lambda 函数的执行角色。](#ol-upper-step8-delete-lambda-role)
+ [删除 Lambda 函数](#ol-upper-step8-delete-lambda-function)
+ [删除 CloudWatch 日志组](#ol-upper-step8-delete-cloudwatch)
+ [删除 S3 源存储桶中的原始文件](#ol-upper-step8-delete-file)
+ [删除 S3 源存储桶](#ol-upper-step8-delete-bucket)
+ [删除 IAM 用户](#ol-upper-step8-delete-user)

### 删除对象 Lambda 接入点
<a name="ol-upper-step8-delete-olap"></a>

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择**对象 Lambda 接入点**。

1. 在**对象 Lambda 接入点**页面上，选择在[步骤 6](#ol-upper-step6) 中创建的 S3 对象 Lambda 接入点左侧的单选按钮（例如，**tutorial-object-lambda-accesspoint**)。

1. 选择**删除**。

1. 通过在显示的文本字段中输入对象 Lambda 接入点的名称，确认要删除的对象 Lambda 接入点，然后选择**删除**。

### 删除 S3 接入点
<a name="ol-upper-step8-delete-ap"></a>

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择**接入点**。

1. 导航到您在[步骤 3](#ol-upper-step3)创建的接入点（例如，**tutorial-access-point**），然后选择接入点名称旁的单选按钮。

1. 选择**删除**。

1. 在显示的文本字段中输入接入点名称，然后选择**删除**，确认您要删除接入点。

### 删除您的 Lambda 函数的执行角色。
<a name="ol-upper-step8-delete-lambda-role"></a>

1. 登录到 AWS 管理控制台，然后通过以下网址打开 AWS Lambda 控制台：[https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)。

1. 在左侧导航窗格中，选择**函数**。

1. 选择您在[步骤 4](#ol-upper-step4) 中创建的函数（例如，**tutorial-object-lambda-function**）。

1. 在 Lambda 函数的详细信息页面上，选择**配置**选项卡，然后选择**Permissions（权限）**在左侧导航窗格中。

1. Unts**执行角色**中，选择 **Role name（角色名称）**。打开 IAM 控制台。

1. 在 Lambda 函数的执行角色 IAM 控制台的**摘要**页面上，选择**删除角色**。

1. 在 **Delete role**（删除角色）对话框中，选择 **Yes, delete**（是的，删除）。

### 删除 Lambda 函数
<a name="ol-upper-step8-delete-lambda-function"></a>

1. 在 AWS Lambda 控制台（位于 [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)）中，选择左侧导航窗格中的 **Functions**（函数）。

1. 选择您在[步骤4](#ol-upper-step4)中创建的函数名称左侧的复选框（例如，**tutorial-object-lambda-function**）。

1. 选择**操作**，然后选择**删除**。

1. 在**删除函数**对话框中，选择**删除**。

### 删除 CloudWatch 日志组
<a name="ol-upper-step8-delete-cloudwatch"></a>

1. 通过 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 打开 CloudWatch 控制台。

1. 在左侧导航窗格中，选择**日志组**。

1. 查找名称以[步骤4](#ol-upper-step4)中创建的 Lambda 函数结尾的日志组（例如，**tutorial-object-lambda-function**）。

1. 选择日志组名称左侧的复选框。

1. 选择**操作**，然后选择**删除日志组**。

1. 在**删除日志组**对话框中，选择**删除**。

### 删除 S3 源存储桶中的原始文件
<a name="ol-upper-step8-delete-file"></a>

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择**存储桶**。

1. 在**存储桶名称**列表中，选择您在[步骤 2](#ol-upper-step2)中将原始文件上传到的存储桶名称（例如，**tutorial-bucket**)。

1. 选中要删除的对象名称左侧的复选框（例如，`tutorial.txt`）。

1. 选择**删除**。

1. 在**永久删除对象？**的**删除对象**页面上，在文本框中输入 **permanently delete** 确认您希望删除此对象。

1. 选择**删除对象**。

### 删除 S3 源存储桶
<a name="ol-upper-step8-delete-bucket"></a>

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择**存储桶**。

1. 在**存储桶**列表中，选择您在[步骤 1](#ol-upper-step1)中创建的存储桶名称旁的单选按钮（例如，**tutorial-bucket**)。

1. 选择**删除**。

1. 在**删除存储桶**页面上，通过在文本字段中输入存储桶名称来确认要删除存储桶，然后选择**删除存储桶**。

### 删除 IAM 用户
<a name="ol-upper-step8-delete-user"></a>

1. 登录 AWS 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在左侧导航窗格中，选择**用户**，然后选中要删除的用户旁的复选框。

1. 在页面的顶部，选择**删除**。

1. 在**删除*用户名*?**对话框中，在文本输入字段中输入用户名以确认删除用户。选择**删除**。

## 后续步骤
<a name="ol-upper-next-steps"></a>

完成本教程后，您可以为您的用例自定义 Lambda 函数，以便修改标准 S3 GET 请求返回的数据。

以下是 S3 对象 Lambda 的常见用例列表：
+ 屏蔽敏感数据以确保安全性和合规性。

  有关更多信息，请参阅 [教程：使用 S3 对象 Lambda 和 Amazon Comprehend 检测和修订 PII 数据](tutorial-s3-object-lambda-redact-pii.md)。
+ 筛选某些数据行以提供特定信息。
+ 使用来自其他服务或数据库的信息增加数据。
+ 跨数据格式转换，例如将 XML 转换为 JSON 以实现应用程序兼容性。
+ 在下载文件时压缩或解压缩文件。
+ 调整图像大小和水印图像。

  有关更多信息，请参阅[教程：使用 S3 对象 Lambda 在检索图像时对其动态加水印](https://aws.amazon.com/getting-started/hands-on/amazon-s3-object-lambda-to-dynamically-watermark-images/?ref=docs_gateway/amazons3/tutorial-s3-object-lambda-uppercase.html)。
+ 实施自定义授权规则以访问数据。

有关 S3 对象 Lambda 的更多信息，请参阅 [使用 S3 对象 Lambda 转换对象](transforming-objects.md)。

# 教程：使用 S3 对象 Lambda 和 Amazon Comprehend 检测和修订 PII 数据
<a name="tutorial-s3-object-lambda-redact-pii"></a>

**注意**  
自 2025 年 11 月 7 日起，S3 对象 Lambda 仅可供当前在使用该服务的现有客户以及部分 AWS 合作伙伴网络（APN）合作伙伴使用。要了解与 S3 对象 Lambda 类似的功能，请在此处了解更多信息：[Amazon S3 Object Lambda availability change](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html)。

将 Amazon S3 用于多个应用程序和用户访问的共享数据集时，请务必将特权信息（如个人身份信息 (PII)）限制为仅授权实体。例如，当营销应用程序使用某些包含 PII 的数据时，可能需要首先掩盖 PII 数据以满足数据隐私要求。此外，分析应用程序使用生产订单清单数据集时，可能需要首先编辑客户信用卡信息，防止意外的数据泄露。

用 [S3 对象 Lambda](https://aws.amazon.com/s3/features/object-lambda) 和预构建的 AWS Lambda 函数，您可以在将从 S3 检索 Amazon Comprehend 的 PII 数据返回到应用程序之前进行保护。具体来说，您可以使用预构建的 [Lambda 函数](https://aws.amazon.com/lambda/)作为编校函数，并将其附加到 S3 对象 Lambda 接入点。当应用程序（例如，分析应用程序）发送 [standard S3 GET requests](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) 时，这些通过 S3 对象 Lambda 接入点发出的请求将调用预构建的编校 Lambda 函数，以检测和编校通过 S3 支持接入点从底层数据来源检索到的 PII 数据。然后，S3 对象 Lambda 接入点将编校的结果返回到应用程序。

![\[这是 S3 对象 Lambda 工作流示意图。\]](http://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/images/ol-comprehend-image-global.png)


在此过程中，无论 PII 在文本中的存在方式如何（例如，数字或单词和数字的组合），预构建的 Lambda 函数均使用 [Amazon Comprehend](https://aws.amazon.com/comprehend/)，这是一种自然语言处理 (NLP) 服务，用于捕获 PII 表示方式的变化。Amazon Comprehend 甚至可以用文本中的上下文来了解 4 位数字是否是 PIN、社会保险号 (SSN) 的最后四个数字还是年份。Amazon Comprehend 处理 UTF-8 格式的任何文本文件，并可以大规模保护 PII，而不会影响准确性。有关更多信息，请参阅 *《Amazon Comprehend 开发人员指南》*中的[什么是 Amazon Comprehend？](https://docs.aws.amazon.com/comprehend/latest/dg/what-is.html)

**目标**  
在本教程中，您将学习如何将 S3 对象 Lambda 与预构建的 Lambda 函数一起使用 `ComprehendPiiRedactionS3ObjectLambda`。此函数使用 Amazon Comprehend 来检测 PII 实体。然后，通过用星号替换这些实体来修订它们。通过修订 PII，您可以隐藏敏感数据，这有助于提高安全性和合规性。

您还可以了解在 [AWS Serverless Application Repository](https://aws.amazon.com/serverless/serverlessrepo/) 中如何使用和配置预构建的 AWS Lambda 函数与 S3 对象 Lambda 一起使用便于部署。

**Topics**
+ [先决条件：创建具有权限的 IAM 用户](#ol-pii-prerequisites)
+ [步骤 1：创建 S3 存储桶](#ol-pii-step1)
+ [步骤 2：将文件上传到 S3 存储桶。](#ol-pii-step2)
+ [步骤 3：创建 S3 接入点](#ol-pii-step3)
+ [步骤 4：配置和部署预构建的 Lambda 函数](#ol-pii-step4)
+ [步骤 5：创建 S3 对象 Lambda 接入点](#ol-pii-step5)
+ [步骤 6：使用 S3 对象 Lambda 接入点检索编校的文件](#ol-pii-step6)
+ [步骤 7：清除](#ol-pii-step7)
+ [后续步骤](#ol-pii-next-steps)

## 先决条件：创建具有权限的 IAM 用户
<a name="ol-pii-prerequisites"></a>

在开始本教程之前，您必须具有 AWS 账户，您可使用具有正确权限的 AWS Identity and Access Management 用户（IAM 用户）登录此账户。

您可以为此教程创建 IAM 用户。要完成本教程，您的 IAM 用户必须附加以下 IAM 策略才能访问相关 AWS 资源并执行特定操作。

**注意**  
为简单起见，本教程创建并使用 IAM 用户。完成本教程后，请记住 [删除 IAM 用户](#ol-pii-step8-delete-user)。对于生产用途，我们建议您遵循《IAM 用户指南》**中的 [IAM 中的安全最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。最佳实践要求人类用户将联合身份验证与身份提供商结合使用，以使用临时凭证访问 AWS。另一项最佳实践是要求工作负载使用带有 IAM 角色的临时凭证访问 AWS。要了解如何使用 AWS IAM Identity Center 创建具有临时凭证的用户，请参阅《AWS IAM Identity Center 用户指南》**中的[入门](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)。  
本教程还使用完全访问策略。对于生产用途，我们建议您根据[安全最佳实践](security-best-practices.md#security-best-practices-prevent)仅授予用例所需的最低权限。

您的 IAM 用户需要以下 AWS 托管策略：
+ [AmazonS3FullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonS3FullAccess$jsonEditor) - 授予对所有 Amazon S3 操作的权限，包括创建和使用对象 Lambda 接入点的权限。
+ [AWSLambda\$1FullAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSLambda_FullAccess$jsonEditor) - 对所有 Lambda 操作授予权限。
+ [AWSCloudFormationFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AWSCloudFormationFullAccess$serviceLevelSummary) - 为所有 AWS CloudFormation 操作授予权限。
+ [IAMFullAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/IAMFullAccess$jsonEditor) - 对所有 IAM 操作授予权限。
+ [IAMAccessAnalyzerReadOnlyAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/IAMAccessAnalyzerReadOnlyAccess$jsonEditor) - 授予读取 IAM Access Analyzer 提供的所有访问信息的权限。

您可以在创建 IAM 用户时直接附加这些现有策略。有关如何创建 IAM 用户的更多信息，请参阅 *《IAM 用户指南》*中的[创建 IAM 用户（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console)。

此外，您的 IAM 用户需要客户托管策略。将 IAM 用户权限授予所有 AWS Serverless Application Repository 资源和操作，您必须创建 IAM 策略并将此策略附加给 IAM 用户。

**创建一个 IAM 策略并将其附加到 IAM 用户**

1. 登录 AWS 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在左侧导航窗格中，选择 **Policies（策略）**。

1. 选择**创建策略**。

1. 在**可视化编辑器**选项卡上，**服务**，选择**服务**。然后，选择 **Serverless Application Repository**。

1. 对于**操作**，在**手动操作**中，选择此教程中**所有 Serverless Application Repository 操作（serverlessrepo:\$1）**。

   作为安全最佳实践，您应根据用例仅允许用户所需的操作和资源的权限。有关更多信息，请参阅 [《IAM 用户指南》](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)中的 *IAM 安全最佳实践*。

1. 对于**资源**中，选择本教程中的**所有资源**。

   作为最佳实践，您应仅为特定账户中的特定资源定义权限。您也可以使用条件键授予最低权限。有关更多信息，请参阅 *《IAM 用户指南》* 中的[授予最低权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)。

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

1. 选择**下一步：审核**。

1. 在**查看策略**页面上，为您正在创建的策略输入**名称**（例如 **tutorial-serverless-application-repository**）和**描述**（可选）。查看策略摘要以确保您授予了所需的权限，然后选择**创建策略**以保存新策略。

1. 在左侧导航窗格中，选择 **用户**。然后，为本教程选择 IAM 用户。

1. 在所选用户的**摘要**页面上，选择**权限**选项卡，然后选择**添加权限**。

1. 在 **Grant permissions (授予权限)** 下，选择 **Attach existing policies directly (直接挂载现有策略)**。

1. 选择刚创建的策略旁边的复选框（例如，**tutorial-serverless-application-repository**），然后选择**下一步：审查**。

1. 在**策略摘要**下，查看摘要确保附加了预期的策略。然后选择 **添加权限**。

## 步骤 1：创建 S3 存储桶
<a name="ol-pii-step1"></a>

创建存储桶来存储您计划转换的原始数据。

**注意**  
可以为其它数据来源附加接入点，例如适用于 OpenZFS 的 Amazon FSx 卷，但本教程使用附加到 S3 存储桶的支持接入点。

**创建存储桶**

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择**存储桶**。

1. 选择**创建存储桶**。

   此时将打开**创建存储桶**页面。

1. 对于**存储桶名称**，输入您的存储桶名称（例如，**tutorial-bucket**）。

   有关 Amazon S3 存储桶命名的更多信息，请参阅 [通用存储桶命名规则](bucketnamingrules.md)。

1. 对于**区域**，选择要放置存储桶的 AWS 区域。

   有关存储桶区域的更多信息，请参阅 [通用存储桶概述](UsingBucket.md)。

1. 对于**此存储桶的屏蔽公共访问权限设置**，保留默认值（**屏蔽*所有*公共访问权限**已启用）。

   除非您需要为您的用例关闭一个或多个屏蔽公共访问权限设置，否则建议您将所有这些设置保持为启用状态。有关屏蔽公共访问权限的更多信息，请参阅 [阻止对您的 Amazon S3 存储的公有访问](access-control-block-public-access.md)。

1. 对于其余设置，保留默认值。

   （可选）如果要为您的特定用例配置其他存储桶设置，请参阅 [创建通用存储桶](create-bucket-overview.md)。

1. 选择**创建存储桶**。

## 步骤 2：将文件上传到 S3 存储桶。
<a name="ol-pii-step2"></a>

将包含各种类型的已知 PII 数据（如姓名、银行信息、电话号码和SSN）的文本文件作为原始数据上传到 S3 存储桶中，您将在本教程稍后部分对PII进行修订。

例如，您可以上传 `tutorial.txt` 文件。这是 Amazon Comprehend 的示例输入文件。

```
Hello Zhang Wei, I am John. Your AnyCompany Financial Services, 
LLC credit card account 1111-0000-1111-0008 has a minimum payment 
of $24.53 that is due by July 31st. Based on your autopay settings, 
we will withdraw your payment on the due date from your 
bank account number XXXXXX1111 with the routing number XXXXX0000. 

Your latest statement was mailed to 100 Main Street, Any City, 
WA 98121. 
After your payment is received, you will receive a confirmation 
text message at 206-555-0100. 
If you have questions about your bill, AnyCompany Customer Service 
is available by phone at 206-555-0199 or 
email at support@anycompany.com.
```

**要上传文件到存储桶**

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择**存储桶**。

1. 在**存储桶**列表中，选择您在[步骤 1](#ol-pii-step1)中创建的存储桶名称（例如，**tutorial-bucket**）上传您的文件。

1. 在存储桶的**对象** 选项卡上，选择**上传**。

1. 在**上传**页面的**文件和文件夹**下，选择**添加文件**。

1. 选择要上传的文件，然后选择**打开**。例如，您可以上传之前提到的 `tutorial.txt` 文件示例。

1. 选择**上传**。

## 步骤 3：创建 S3 接入点
<a name="ol-pii-step3"></a>

要使用 S3 对象 Lambda 接入点访问和转换原始数据，您必须创建一个 S3 接入点，并将其与您在[步骤 1](#ol-pii-step1) 中创建的 S3 存储桶关联。接入点必须与要转换的对象位于同一 AWS 区域中。

在本教程的后面部分，您将使用此接入点作为对象 Lambda 接入点的支持接入点。

**创建接入点**

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择**接入点**。

1. 在**接入点**页面上，选择**创建接入点**。

1. 在**接入点名称**字段中输入接入点名称（例如，**tutorial-pii-access-point**）。

   有关命名接入点的更多信息，请参阅[接入点的命名规则](access-points-restrictions-limitations-naming-rules.md#access-points-names)。

1. 在**数据来源**字段中，输入您在[步骤 1](#ol-pii-step1) 中创建的存储桶的名称（例如 **tutorial-bucket**）。S3 将接入点附加到存储桶。

   您也可以选择**浏览 S3** 浏览和搜索账户中的存储桶。如果选择**浏览 S3**，请选择所需的存储桶，然后选择**选择路径**使用该存储桶的名称填充**存储桶名称**字段。

1. 适用于**网络源**中，选择**互联网**。

   有关接入点的网络源的更多信息，请参阅[创建限制到 Virtual Private Cloud 的接入点](access-points-vpc.md)。

1. 默认情况下，为接入点启用所有屏蔽公共访问权限设置。我们建议您将**屏蔽*所有* 公共访问权限**保留为启用状态。有关更多信息，请参阅 [管理对通用存储桶的接入点的公共访问权限](access-points-bpa-settings.md)。

1. 对于所有其他接入点设置，保留默认设置。

   （可选）您可以修改接入点设置以支持您的用例。在本教程中，我们建议您保留默认设置。

   （可选）如果需要管理对接入点的访问，可以指定接入点策略。有关更多信息，请参阅 [接入点的策略示例](access-points-policies.md#access-points-policy-examples)。

1. 选择 **Create access point（创建接入点）**。

## 步骤 4：配置和部署预构建的 Lambda 函数
<a name="ol-pii-step4"></a>

要编校 PII 数据，请配置和部署预构建的 AWS Lambda 函数 `ComprehendPiiRedactionS3ObjectLambda` 以便与 S3 对象 Lambda 接入点结合使用。

**要配置和部署 Lambda 函数**

1. 登录到 AWS 管理控制台，然后查看 AWS Serverless Application Repository 中的 [https://console.aws.amazon.com/lambda/home#/create/app?applicationId=arn:aws:serverlessrepo:us-east-1:839782855223:applications/ComprehendPiiRedactionS3ObjectLambda](https://console.aws.amazon.com/lambda/home#/create/app?applicationId=arn:aws:serverlessrepo:us-east-1:839782855223:applications/ComprehendPiiRedactionS3ObjectLambda) 函数。

1. 对于**应用程序设置**，在**应用程序名称**下，请保留本教程默认值 (`ComprehendPiiRedactionS3ObjectLambda`)。

   （可选）您可以输入要为此应用程序提供的名称。如果计划为同一共享数据集的不同访问需求配置多个 Lambda 函数，则可能需要执行此操作。

1. 对于 **MaskCharacter**，请保留默认值 (`*`)。掩码字符将替换已修订的 PII 实体中的每个字符。

1. 对于 **MaskMode**，请保留默认值 (**MASK**)。**MaskMode** 值指定 PII 实体是否使用 `MASK` 字符或 `PII_ENTITY_TYPE` 值。

1. 要修订数据指定类型，对于 **PiiEntityTypes**，请保留默认值 **ALL**。**PiiEntityTypes** 值指定要考虑修订的 PII 实体类型。

   有关支持的 PII 实体类型列表的更多信息，请参阅 *《Amazon Comprehend 开发人员指南》*中的[检测个人身份信息 (PII)](https://docs.aws.amazon.com/comprehend/latest/dg/how-pii.html)。

1. 对于其余设置，保留默认值。

   （可选）如果要为特定用例配置其他设置，请参阅页面左侧的**自述文件**部分。

1. 选中 **I acknowledge that this app creates custom IAM roles (我确认此应用程序创建自定义 IAM 角色)** 旁边的复选框。

1. 选择**部署**。

1. 在新应用程序的页面上，在**资源**下，选择Lambda 函数的**逻辑 ID**，在 Lambda 函数页面上部署的 Lambda 函数。

## 步骤 5：创建 S3 对象 Lambda 接入点
<a name="ol-pii-step5"></a>

S3 对象 Lambda 接入点提供了直接从 S3 GET 请求调用 Lambda 函数的灵活性，以便该函数可以编校从 S3 接入点检索的 PII 数据。创建和配置 S3 对象 Lambda 接入点时，必须指定要调用的编校 Lambda 函数，并以 JSON 格式提供事件上下文作为供 Lambda 使用的自定义参数。

事件上下文提供有关在从 S3 对象 Lambda 传递到 Lambda 的事件中发出请求的信息。有关事件上下文中所有字段的更多信息，请参阅 [事件上下文格式和用法](olap-event-context.md)。

**创建 S3 对象 Lambda 接入点**

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择 **Object Lambda 接入点**。

1. 在**对象 Lambda 接入点**页面上，选择**创建对象 Lambda 接入点**。

1. 对于**对象 Lambda 接入点名称**，输入想要用于对象 Lambda 接入点的名称（例如 **tutorial-pii-object-lambda-accesspoint**）。

1. 适用于**支持接入点**中，输入或浏览到您在[步骤 3](#ol-pii-step3)（例如，**tutorial-pii-access-point**），然后选择**选择支持的接入点**。

1. 对于 **S3 APIs**（S3 API），要从 S3 存储桶中检索对象以便 Lambda 函数进行处理，请选择 **GetObject**。

1. 对于**调用 Lambda 函数**，您可以为本教程选择以下两个选项之一。
   + 选择**从您的账户中的函数中选择**，并从 **Lambda 函数**下拉列表中选择您在[步骤 4](#ol-pii-step4) 中部署的 Lambda 函数（例如 **serverlessrepo-ComprehendPiiRedactionS3ObjectLambda**）。
   + 选择**输入 ARN**，然后输入您在[步骤 4](#ol-pii-step4) 中创建的 Lambda 函数的 Amazon 资源名称（ARN）。

1. 对于 **Lambda 函数版本**中，选择**\$1LATEST**（您在[步骤 4](#ol-pii-step4)中部署的最新版本 Lambda 函数)。

1. （可选）如果您需要 Lambda 函数识别和处理带有范围和分段编号标头的 GET 请求，选择 **Lambda 函数支持，使用范围的请求**和 **Lambda 函数支持带零件编号的请求**。否则，请清除这两个复选框。

   有关如何将范围或分段编号与 S3 对象 Lambda 结合使用的更多信息，请参阅 [使用 Range 和 partNumber 标头](range-get-olap.md)。

1. （可选）在 **Payload（负载）- *可选***下，添加 JSON 文本，向 Lambda 函数提供其他信息。

   负载是可选 JSON 文本，您可以将其作为来自特定 S3 对象 Lambda 接入点的所有调用的输入提供给 Lambda 函数。要自定义调用同一 Lambda 函数的多个对象 Lambda 接入点的行为，您可以使用不同的参数配置负载，从而扩展 Lambda 函数的灵活性。

   更多有关路径模式的信息，请参阅 [事件上下文格式和用法](olap-event-context.md)。

1. （可选）对于**请求指标 – *可选***，选择**禁用**或**启用**，以便将 Amazon S3 监控添加到对象 Lambda 接入点。请求指标按标准 Amazon CloudWatch 费率计费。有关更多信息，请参阅 [CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing/)。

1. 在**对象 Lambda 接入点策略 - *可选***下，保留默认设置。

   （可选）您可以设置资源策略。此资源策略授予 `GetObject` API 权限，以便使用指定的对象 Lambda 接入点。

1. 对于其余设置，保留默认值，选择**创建对象 Lambda 接入点**。

## 步骤 6：使用 S3 对象 Lambda 接入点检索编校的文件
<a name="ol-pii-step6"></a>

现在，S3 对象 Lambda 已准备好从原始文件修订 PII 数据。

**使用 S3 对象 Lambda 接入点检索编校的文件**

当您请求通过 S3 对象 Lambda 接入点检索文件时，您需要对 S3 对象 Lambda 进行 `GetObject` API 调用。S3 对象 Lambda 调用 Lambda 函数来编辑 PII 数据，并将转换后的数据作为对标准 S3 `GetObject` API调用的响应返回。

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择**对象 Lambda 接入点**。

1. 在**对象 Lambda 接入点**页面上，选择您在[步骤 5](#ol-pii-step5) 中创建的 S3 对象 Lambda 接入点（例如，**tutorial-pii-object-lambda-accesspoint**)。

1. 在 S3 对象 Lambda 接入点的**对象**选项卡中，选择具有相同名称的文件（例如 `tutorial.txt`）作为您在[步骤 2](#ol-pii-step2) 中上传到 S3 存储桶的文件。

   此文件应包含所有转换的数据。

1. 要查看转换后的数据，请选择**打开**或者**下载**。

    您应该能够看到修订的文件，如以下示例所示。

   ```
   Hello *********. Your AnyCompany Financial Services, 
   LLC credit card account ******************* has a minimum payment 
   of $24.53 that is due by *********. Based on your autopay settings, 
   we will withdraw your payment on the due date from your 
   bank account ********** with the routing number *********. 
   
   Your latest statement was mailed to **********************************. 
   After your payment is received, you will receive a confirmation 
   text message at ************. 
   If you have questions about your bill, AnyCompany Customer Service 
   is available by phone at ************ or 
   email at **********************.
   ```

## 步骤 7：清除
<a name="ol-pii-step7"></a>

如果您仅作为学习练习通过 S3 对象 Lambda 修订数据，请删除分配的 AWS 资源，以便不再累积费用。

**Topics**
+ [删除对象 Lambda 接入点](#ol-pii-step8-delete-olap)
+ [删除 S3 接入点](#ol-pii-step8-delete-ap)
+ [删除 Lambda 函数](#ol-pii-step8-delete-lambda-function)
+ [删除 CloudWatch 日志组](#ol-pii-step8-delete-cloudwatch)
+ [删除 S3 源存储桶中的原始文件](#ol-pii-step8-delete-file)
+ [删除 S3 源存储桶](#ol-pii-step8-delete-bucket)
+ [删除您的 Lambda 函数的 IAM 角色](#ol-pii-step8-delete-lambda-role)
+ [删除 IAM 用户的客户托管策略](#ol-pii-step8-delete-function-policy)
+ [删除 IAM 用户](#ol-pii-step8-delete-user)

### 删除对象 Lambda 接入点
<a name="ol-pii-step8-delete-olap"></a>

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择**对象 Lambda 接入点**。

1. 在**对象 Lambda 接入点**页面上，选择在[步骤 5](#ol-pii-step5) 中创建的 S3 对象 Lambda 接入点（例如，**tutorial-pii-object-lambda-accesspoint**）左侧的选项按钮。

1. 选择**删除**。

1. 通过在显示的文本字段中输入对象 Lambda 接入点的名称，确认要删除的对象 Lambda 接入点，然后选择**删除**。

### 删除 S3 接入点
<a name="ol-pii-step8-delete-ap"></a>

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择**接入点**。

1. 导航到您在[步骤 3](#ol-pii-step3)中创建的接入点（例如，**tutorial-pii-access-point**)，然后选择接入点名称旁边的选项按钮。

1. 选择**删除**。

1. 在显示的文本字段中输入接入点名称，然后选择**删除**，确认您要删除接入点。

### 删除 Lambda 函数
<a name="ol-pii-step8-delete-lambda-function"></a>

1. 在 AWS Lambda 控制台左侧导航窗格中 [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/) 中，选择**函数**。

1. 选择您在[步骤 4](#ol-pii-step4) 中创建的函数（例如，**serverlessrepo-ComprehendPiiRedactionS3ObjectLambda**）。

1. 选择**操作**，然后选择**删除**。

1. 在**删除函数**对话框中，选择**删除**。

### 删除 CloudWatch 日志组
<a name="ol-pii-step8-delete-cloudwatch"></a>

1. 通过 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 打开 CloudWatch 控制台。

1. 在左侧导航窗格中，选择**日志组**。

1. 查找名称以[步骤4](#ol-pii-step4)中创建的 Lambda 函数结尾的日志组（例如，**serverlessrepo-ComprehendPiiRedactionS3ObjectLambda**）。

1. 选择**操作**，然后选择**删除日志组**。

1. 在**删除日志组**对话框中，选择**删除**。

### 删除 S3 源存储桶中的原始文件
<a name="ol-pii-step8-delete-file"></a>

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择**存储桶**。

1. 在**存储桶名称**列表中，选择您在[步骤 2](#ol-pii-step2)中将原始文件上传到的存储桶名称（例如，**tutorial-bucket**)。

1. 选中要删除的对象名称左侧的复选框（例如，`tutorial.txt`）。

1. 选择**删除**。

1. 在**永久删除对象？**的**删除对象**页面上，在文本框中输入 **permanently delete** 确认您希望删除此对象。

1. 选择**删除对象**。

### 删除 S3 源存储桶
<a name="ol-pii-step8-delete-bucket"></a>

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择**存储桶**。

1. 在**存储桶**列表中，选择您在[步骤 1](#ol-pii-step1)中创建存储桶名称旁边的选项按钮（例如，**tutorial-bucket**)。

1. 选择**删除**。

1. 在**删除存储桶**页面上，通过在文本字段中输入存储桶名称来确认要删除存储桶，然后选择**删除存储桶**。

### 删除您的 Lambda 函数的 IAM 角色
<a name="ol-pii-step8-delete-lambda-role"></a>

1. 登录 AWS 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在左侧导航窗格中，选择**角色**，然后选中要删除的角色旁的复选框。角色名称以您在[步骤 4](#ol-pii-step4)中部署的 Lambda 函数名称开头（例如，**serverlessrepo-ComprehendPiiRedactionS3ObjectLambda**)。

1. 选择**删除**。

1. 在**删除**对话框中，在文本输入字段中输入角色名称以确认删除。然后选择 **Delete**(删除)。

### 删除 IAM 用户的客户托管策略
<a name="ol-pii-step8-delete-function-policy"></a>

1. 登录 AWS 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在左侧导航窗格中，选择 **Policies（策略）**。

1. 在**策略**页面上，输入您在搜索框中[先决条件](#ol-pii-prerequisites)中创建的客户托管策略名称（例如，**tutorial-serverless-application-repository**) 以筛选策略列表。选择要删除的策略名称旁边的选项按钮。

1. 选择**操作**，然后选择**删除**。

1. 在出现的文本字段中输入此策略的名称，确认要删除此策略，然后选择**删除**。

### 删除 IAM 用户
<a name="ol-pii-step8-delete-user"></a>

1. 登录 AWS 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在左侧导航窗格中，选择**用户**，然后选中要删除的用户旁的复选框。

1. 在页面的顶部，选择**删除**。

1. 在**删除*用户名*?**对话框中，在文本输入字段中输入用户名以确认删除用户。选择**删除**。

## 后续步骤
<a name="ol-pii-next-steps"></a>

完成本教程后，您可以进一步探索以下相关用例：
+ 您可以创建多个 S3 对象 Lambda 接入点，并使用预构建的 Lambda 函数启用这些接入点，根据数据访问者的业务需要，将以不同方式配置这些函数，以编校特定类型的 PII。

  每种类型的用户都代入一个 IAM 角色，且只能访问一个 S3 对象 Lambda 接入点（通过 IAM 策略进行托管）。然后，将为不同编校使用案例配置的每个 `ComprehendPiiRedactionS3ObjectLambda` Lambda 函数附加到不同的 S3 对象 Lambda 接入点。对于每个 S3 对象 Lambda 接入点，您可以拥有一个支持的 S3 接入点，以便从存储共享数据集的 S3 存储桶读取数据。

  有关如何创建 S3 存储桶策略（仅允许用户通过 S3 接入点读取存储桶）的详细信息，请参阅 [配置使用接入点的 IAM 策略](access-points-policies.md)。

  有关如何授予用户访问 Lambda 函数、S3 接入点和 S3 对象 Lambda 接入点的权限的更多信息，请参阅[为对象 Lambda 接入点配置 IAM 策略](olap-policies.md)。
+ 您可以构建自己的 Lambda 函数，并将 S3 对象 Lambda 与自定义的 Lambda 函数结合使用，满足您的特定数据需求。

  例如，要探索各种数据值，您可以使用 S3 对象 Lambda 和自己的 Lambda 函数，该函数使用其他 [Amazon Comprehend 特征](https://aws.amazon.com/comprehend/features/)（例如实体识别、关键短语识别、情绪分析和文档分类）来处理数据。您也可以使用 S3 对象 Lambda 与 [Amazon Comprehend Medical](https://aws.amazon.com/comprehend/medical/)（符合 HIPAA 条件的 NLP 服务），用于以上下文感知的方式分析和提取数据。

  有关如何使用 S3 对象 Lambda 和自己的 Lambda 函数转换数据的详细信息，请参阅 [教程：使用 S3 对象 Lambda 转换应用程序的数据](tutorial-s3-object-lambda-uppercase.md)。