

# S3 Object Lambda のチュートリアル
<a name="olap-tutorials"></a>

**注記**  
2025 年 11 月 7 日現在、S3 Object Lambda は、現在サービスを使用している既存のお客様、および一部の AWS パートナーネットワーク (APN) パートナーのみが利用できます。S3 Object Lambda と同様の機能の詳細については、「[Amazon S3 Object Lambda availability change](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html)」を参照してください。

次のチュートリアルでは、いくつかの S3 Object Lambda タスクにおけるエンドツーエンドの一連の手順について説明します。

S3 Object Lambda を使用すると、独自のコードを追加して、データがアプリケーションに返される前に S3 からのデータを処理できます。以下のチュートリアルでは、既存のオブジェクトを変更したり、データの複数のコピーを維持したりすることなく、Amazon S3 から取得されるデータを変更します。最初のチュートリアルでは、S3 GET リクエストに AWS Lambda 関数を追加して、S3 から取得したオブジェクトを変更する方法について説明します。2 番目のチュートリアルでは、Amazon Comprehend を搭載した構築済みの Lambda 関数を使用して、S3 から取得した個人を特定できる情報 (PII) をアプリケーションに返す前に保護する方法を示します。3 番目のチュートリアルでは、S3 Object Lambda を使用してAmazon S3から取得されるイメージに透かしを追加します。
+ [チュートリアル: S3 Object Lambda を使用したアプリケーションのデータの変換](tutorial-s3-object-lambda-uppercase.md)
+ [チュートリアル: S3 Object Lambda と Amazon Comprehend を使用した PII データの検出と編集](tutorial-s3-object-lambda-redact-pii.md)
+ [チュートリアル: S3 Object 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 Object Lambda を使用したアプリケーションのデータの変換
<a name="tutorial-s3-object-lambda-uppercase"></a>

**注記**  
2025 年 11 月 7 日現在、S3 Object Lambda は、現在サービスを使用している既存のお客様、および一部の AWS パートナーネットワーク (APN) パートナーのみが利用できます。S3 Object Lambda と同様の機能の詳細については、「[Amazon S3 Object Lambda availability change](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html)」を参照してください。

Amazon S3 にデータを保管すると、複数のアプリケーションで使用するために簡単にデータを共有できます。ただし、各アプリケーションには固有のデータ形式の要件があり、特定のユースケースでデータの変更や処理が必要になる場合があります。例えば、e コマースアプリケーションによって作成されたデータセットには、個人を特定できる情報 (PII) が含まれている場合があります。分析のために同じデータが処理される場合、この PII は必要ないため、編集する必要があります。ただし、同じデータセットをマーケティングキャンペーンに使用する場合は、顧客ロイヤルティデータベースからの情報など、追加の詳細でデータを充実させる必要がある場合があります。

[S3 Object Lambda](https://aws.amazon.com/s3/features/object-lambda) を使用すると、独自のコードを追加して、データがアプリケーションに返される前に S3 からのデータを処理できます。具体的には、AWS Lambda 関数を設定して、S3 Object Lambda アクセスポイントにアタッチします。アプリケーションが S3 Object Lambda アクセスポイントを介して[標準 S3 GET リクエスト](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)を送信すると、指定された Lambda 関数が呼び出され、サポートする S3 アクセスポイントを介して基盤となるデータソースから取得されたデータが処理されます。その後、S3 Object Lambda アクセスポイントは、変換された結果をアプリケーションに返します。独自のカスタム Lambda 関数を作成して実行し、S3 Object Lambda データ変換を特定のユースケースに合わせて調整できます。すべて、アプリケーションの変更は不要です。

![\[これは S3 Object Lambda ワークフロー図です。\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/images/ol-example-image-global.png)


**目的**  
このチュートリアルでは、標準の S3 GET リクエストにカスタムコードを追加して、リクエストしたクライアントまたはアプリケーションのニーズに合うように、S3 から取得したリクエストされたオブジェクトを変更する方法を学習します。具体的には、S3 バケットに保存されている元のオブジェクトのすべてのテキストを S3 Object Lambda を使用して大文字に変換する方法を学習します。

**注記**  
このチュートリアルでは、Python コードを使用してデータを変換します。他の AWS SDK の使用例については、AWS SDK コードサンプルライブラリの「[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: Object Lambda アクセスポイントの作成](#ol-upper-step6)
+ [ステップ 7: 変換されたデータを表示する](#ol-upper-step7)
+ [ステップ 8: クリーンアップする](#ol-upper-step8)
+ [次のステップ](#ol-upper-next-steps)

## 前提条件
<a name="ol-upper-prerequisites"></a>

このチュートリアルを開始する前に、適切な許可が付与された AWS Identity and Access Management (IAM) ユーザーとしてサインインできる AWS アカウントが必要です。また、バージョン 3.8 以降の Python をインストールする必要があります。

**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) – Object Lambda アクセスポイントを作成および使用するための許可を含む、すべての Amazon S3 アクションに対する許可を付与します。
+ [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)」に従うことをお勧めします。ベストプラクティスでは、人間のユーザーと ID プロバイダーとのフェデレーションにより、一時的な認証情報を使用して AWS にアクセスする必要があります。追加のベストプラクティスとして、ワークロードでは一時的な認証情報で IAM ロールを使用し、AWS にアクセス必要があります。AWS IAM アイデンティティセンター を使用して一時的な認証情報を持つユーザーを作成する方法については、「*AWS IAM アイデンティティセンター ユーザーガイド*」の「[Getting started](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 の *Beginner Guide* で「[Python のダウンロード](https://wiki.python.org/moin/BeginnersGuide/Download)」ページを参照してください。

1. ローカルターミナルまたはシェルを開き、次のコマンドを実行して、Python がすでにインストールされているかどうか、インストールされている場合は、どのバージョンがインストールされているかを確認します。

   ```
   python --version
   ```

1. Python 3.8 以降をお持ちでない場合は、ローカルマシンに適した 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 以降が表示された場合、pip3 パッケージマネージャが正常にインストールされていることを意味します。

   ```
   pip --version
   ```

## ステップ 1: S3 バケットを作成する
<a name="ol-upper-step1"></a>

変換する元のデータを保存するバケットを作成します。

**注記**  
Amazon FSx for OpenZFS ボリュームなどの別のデータソースにアクセスポイントをアタッチできますが、このチュートリアルでは S3 バケットにアタッチされたサポートアクセスポイントを使用します。

**バケットを作成するには**

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. 左側のナビゲーションペインで、[**バケット**] を選択します。

1. [**Create bucket (バケットの作成)**] を選択します。

   **[バケットの作成]** ページが開きます。

1. [**バケット名**] に、バケットの名前 (例、**tutorial-bucket**) を入力します。

   Amazon S3 のバケット命名規則の詳細については、「[汎用バケットの命名規則](bucketnamingrules.md)」を参照してください。

1. [**リージョン**] で、バケットを保存する AWS リージョン を選択します。

   バケットのリージョンの詳細については、「[汎用バケットの概要](UsingBucket.md)」を参照してください。

1. [**このバケットのパブリックアクセス設定をブロック**] で、デフォルト設定 (**ブロック*すべて*パブリックアクセス**が有効) のままであることを確認します。

   ユースケースでオフにする必要のある設定が 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 Object Lambda アクセスポイントを使用して元のデータにアクセスし、変換するには、S3 アクセスポイントを作成し、[ステップ 1](#ol-upper-step1) で作成した S3 バケットに関連付けます。アクセスポイントは、変換するオブジェクトと同じ AWS リージョン に存在する必要があります。

このチュートリアルの後半では、このアクセスポイントを Object 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. **[アクセスポイントを作成]** を選択します。

## ステップ 4: Lambda 関数を作成する
<a name="ol-upper-step4"></a>

元のデータを変換するには、S3 Object Lambda アクセスポイントで使用する 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 からオブジェクトをストリーミングすることもできます。この方法は、大きなオブジェクトを扱うときに役立ちます。Object Lambda アクセスポイントを使用したレスポンスのストリーミングの詳細については、[Lambdaでの `GetObject` リクエストの処理](olap-writing-lambda.md#olap-getobject-response) にあるストリーミングの例を参照してください。

   S3 Object Lambda アクセスポイントで使用する Lambda 関数を記述する場合、この関数は S3 Object Lambda が Lambda 関数に提供する入力イベントコンテキストに基づいています。イベントコンテキストは、S3 Object Lambda から Lambda に渡されたイベントで行われたリクエストに関する情報を提供します。これには、Lambda 関数の作成に使用するパラメータが含まれています。

   前述の Lambda 関数の作成に使用されるフィールドは次のとおりです。

   `getObjectContext` のフィールドは、Amazon S3 および S3 Object Lambda への接続に関する入力および出力の詳細を意味します。以下のフィールドがあります。
   + `inputS3Url` – Lambda 関数がサポートするアクセスポイントから元のオブジェクトをダウンロードするために使用できる署名付き URL です。Lambda 関数は、署名付き URL を使用することにより、元のオブジェクトを取得するために Amazon S3 の読み取り許可を必要とせず、呼び出しごとに処理されたオブジェクトにのみアクセスできます。
   + `outputRoute` – Lambda 関数が変換したオブジェクトを戻すために `WriteGetObjectResponse` を呼び出すときに S3 Object Lambda URL に追加されるルーティングトークン。
   + `outputToken` – 変換されたオブジェクトを送り返すときに、`WriteGetObjectResponse` 呼び出しを元の呼び出し元と照合するために S3 Object Lambda によって使用されるトークンです。

   イベントコンテキスト内のすべてのフィールドの詳細については、「[イベントコンテキストの形式と使用法](olap-event-context.md) および [S3 Object 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` ディレクトリのルートにある `lambda.zip` という名前の `.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. **関数の作成** を選択します。

1. **Author from scratch** を選択します。

1. **基本的な情報** で、以下の作業を行います。

   1. **[関数名]** に「**tutorial-object-lambda-function**」と入力します。

   1. [**ランタイム**] で、**Python 3.8** またはそれ以降のバージョンを選択します。

1. [**デフォルト実行ロールの変更**] セクションを展開します。[**実行ロール**] で、[**基本的な Lambda 許可で新しいロールを作成**] を選択します。

   このチュートリアルの[ステップ 5](#ol-upper-step5) で、**AmazonS3ObjectLambdaExecutionRolePolicy** をこの Lambda 関数の実行ロールにアタッチします。

1. 残りの設定はデフォルト値のままにしておきます。

1. [**関数の作成**] を選択してください。

### .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/)) で、左のナビゲーションペインの**関数**を選択します。

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 Object Lambda によって使用される Lambda 関数の最大持続時間は 60 秒です。料金は、設定されたメモリの量とコードの実行時間に基づいて請求されます。

## ステップ 5: Lambda 関数の実行ロールの IAM ポリシーを設定する
<a name="ol-upper-step5"></a>

Lambda 関数がカスタマイズされたデータと応答ヘッダーを `GetObject` 呼び出し元に提供できるようにするには、Lambda 関数の実行ロールに `WriteGetObjectResponse` API を呼び出すための IAM 許可が必要です。

**IAM ポリシーを Lambda 関数ロールにアタッチするには**



1. AWS Lambda コンソール ([https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)) で、左のナビゲーションペインの**関数**を選択します。

1. [ステップ 4](#ol-upper-step4) で作成した関数 (たとえば、**tutorial-object-lambda-function**) を選択します。

1. Lambda 関数の詳細ページで、[**設定**] タブを選択してから、左のナビゲーションペインの [**許可**] を選択します。

1. [**実行ロール**] で、[**ロール名**] のリンクを選択します。IAM コンソールが開きます。

1. Lambda 関数の実行ロールの IAM コンソールの **[Summary]** (概要) ページで、**[Permissions]** (許可) タブを選択します。**[Add Permissions]** (許可を追加) メニューから **[Attach policies]** (ポリシーを添付) を選択します。

1. [**許可のアタッチ**] ページで、[検索] ボックスに **AmazonS3ObjectLambdaExecutionRolePolicy** を入力して、ポリシーのリストをフィルタリングします。**AmazonS3ObjectLambdaExecutionRolePolicy** ポリシーの名前の横にあるチェックボックスを選択します。

1. **ポリシーのアタッチ** を選択します。

## ステップ 6: Object Lambda アクセスポイントの作成
<a name="ol-upper-step6"></a>

S3 Object Lambda アクセスポイントは、S3 GET リクエストから Lambda 関数を直接呼び出す柔軟性を提供し、関数が S3 アクセスポイントから取得したデータを処理できるようにします。S3 Object Lambda アクセスポイントを作成および設定するときは、Lambda が使用するカスタムパラメータとして JSON 形式のイベントコンテキストを呼び出し、提供する Lambda 関数を指定する必要があります。

**S3 Object Lambda アクセスポイントを作成するには**

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. 左のナビゲーションペインで、[**Object Lambda アクセスポイント**] を選択します。

1. [**Object Lambda アクセスポイント**] ページで、[**Object Lambda アクセスポイントの作成**] を選択します。

1. **Object Lambda アクセスポイント名**] に、Object Lambda アクセスポイントに使用する名前を入力します (例、**tutorial-object-lambda-accesspoint**)。

1. **[サポートするアクセスポイント]** で、[ステップ 3](#ol-upper-step3) で作成した標準アクセスポイントを入力または参照します (**tutorial-access-point** など)。次に、**[サポートするアクセスポイントの選択]** を選択します。

1. **S3 API** の場合、Lambda 関数が処理する S3 バケットからオブジェクトを取得するには、**[GetObject]** を選択します。

1. **[Lambda 関数の呼び出し]** では、このチュートリアルでは、次の 2 つのオプションのいずれかを選択できます。
   + **[アカウントの関数から選択]** を選択し、**[Lambda 関数]** ドロップダウンリストから、[ステップ 4](#ol-upper-step4) (例、**tutorial-object-lambda-function**) で作成したLambda 関数を選択します。
   + [**ARN を入力**] を選択し、[ステップ 4](#ol-upper-step4) で作成した Lambda 関数の Amazon リソースネーム (ARN) を入力します。

1. [**Lambda 関数のバージョン**] で、**\$1LATEST** ([ステップ 4](#ol-upper-step4) で作成した Lambda 関数の最新バージョン) を選択します。

1. (オプション) Lambda 関数で、範囲とパート番号によって GET リクエストを認識および処理する必要がある場合は、[**Lambda 関数は、範囲を使用してリクエストをサポート**] および [**Lambda 関数は、パート番号を使用してリクエストをサポート**] を選択します。それ以外の場合は、これらの 2 つのチェックボックスをオフにします。

   S3 Object Lambda で範囲またはパート番号を使用する方法の詳細については、「[Range および partNumber ヘッダーの操作](range-get-olap.md)」を参照してください。

1. (オプション) [**ペイロード - *オプション***] で JSON テキストを追加して、Lambda 関数に追加情報を提供します。

   ペイロードは、特定の S3 Object Lambda アクセスポイントからのすべての呼び出しに対する入力として、Lambda 関数に提供できるオプションの JSON テキストです。同じ Lambda 関数を呼び出す複数の Object Lambda アクセスポイントの動作をカスタマイズして、異なるパラメータを使用してペイロードを設定できます。これにより、Lambda 関数の柔軟性が向上します。

   ペイロードの詳細については、「[イベントコンテキストの形式と使用法](olap-event-context.md)」を参照してください。

1. (オプション) **[リクエストメトリクス - *オプション*]** で、**[無効]** または **[有効]** を選択して、Amazon S3 モニタリングを Object Lambda アクセスポイントに追加します。リクエストメトリクスには、Amazon CloudWatch の標準料金が課金されます。詳細については、「[CloudWatch 料金表](https://aws.amazon.com/cloudwatch/pricing/)」を参照してください。

1. [**Object Lambda アクセスポイントポリシー-*オプション***] で、デフォルトの設定を保持します。

   (オプション) リソースポリシーを設定できます。このリソースポリシーは、指定された Object Lambda アクセスポイントを使用する `GetObject` API 許可を付与します。

1. 残りの設定はデフォルト値のままにしておき、[**Object Lambda アクセスポイントの作成**] を選択します。

## ステップ 7: 変換されたデータを表示する
<a name="ol-upper-step7"></a>

これで、S3 Object Lambda は、ユースケースに合わせてデータを変換する準備が整いました。このチュートリアルでは、S3 Object Lambda はオブジェクト内のすべてのテキストを大文字に変換します。

**Topics**
+ [S3 Object Lambda アクセスポイントの変換済みデータの表示](#ol-upper-step7-check-data)
+ [Python スクリプトを実行して、元のデータと変換されたデータを出力する](#ol-upper-step7-python-print)

### S3 Object Lambda アクセスポイントの変換済みデータの表示
<a name="ol-upper-step7-check-data"></a>

S3 Object Lambda アクセスポイントを使用してファイルの取得をリクエストすると、S3 Object Lambda への `GetObject` API 呼び出しが行われます。S3 Object Lambda は Lambda 関数を呼び出してデータを変換し、変換されたデータを標準 S3 `GetObject` API への応答として返します。

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. 左のナビゲーションペインで、[**Object Lambda アクセスポイント**] を選択します。

1. [**Object Lambda アクセスポイント**] ページで、[ステップ 6](#ol-upper-step6) で作成した S3 Object Lambda アクセスポイントを選択します (例、**tutorial-object-lambda-accesspoint**)。

1. S3 Object Lambda アクセスポイントの [**オブジェクト**] タブで、[ステップ 2](#ol-upper-step2) で S3 バケットにアップロードしたファイルと同じ名前のファイルを選択します(例、`tutorial.txt`)。

   このファイルには、変換されたすべてのデータが含まれているはずです。

1. 変換されたデータを表示するには、[**開く**] または [**ダウンロード**] を選択します。

### Python スクリプトを実行して、元のデータと変換されたデータを出力する
<a name="ol-upper-step7-python-print"></a>

S3 Object Lambda は、既存のアプリケーションで使用できます。これを行うには、アプリケーション設定を更新して、[ステップ 6](#ol-upper-step6) で、S3 からのデータを作成した新しい S3 Object Lambda アクセスポイント ARN を使用してデータを取得します。

次の Python スクリプトの例では、S3 バケットからの元のデータと S3 Object Lambda アクセスポイントからの変換されたデータの両方を出力します。

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. 左のナビゲーションペインで、[**Object Lambda アクセスポイント**] を選択します。

1. [**Object Lambda アクセスポイント**] ページで、[ステップ 6](#ol-upper-step6) で作成した S3 Object Lambda アクセスポイントの左にあるラジオブタンを選択します (例、**tutorial-object-lambda-accesspoint**)。

1. [**ARN のコピー**] を選択します。

1. 後で使用するために ARN を保存します。

1. ローカルマシンで Python スクリプトを記述して、S3 バケットからの元のデータ (例えば、`tutorial.txt`) と S3 Object 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 Object Lambda によってデータを変換した場合は、割り当てた AWS リソースを削除して、料金が発生しないようにします。

**Topics**
+ [Object 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 Logs グループを削除する](#ol-upper-step8-delete-cloudwatch)
+ [S3 ソースバケットの元のファイルを削除する](#ol-upper-step8-delete-file)
+ [S3 ソースバケットを削除する](#ol-upper-step8-delete-bucket)
+ [IAM ユーザーを削除する](#ol-upper-step8-delete-user)

### Object 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. 左のナビゲーションペインで、[**Object Lambda アクセスポイント**] を選択します。

1. [**Object Lambda アクセスポイント**] ページで、[ステップ 6](#ol-upper-step6) で作成した S3 Object Lambda アクセスポイントの左にあるラジオブタンを選択します (例、**tutorial-object-lambda-accesspoint**)。

1. **[削除]** を選択します。

1. 表示されるテキストフィールドにアクセスポイントの名前を入力して、[**削除**] を選択し、bject 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 関数の詳細ページで、[**設定**] タブを選択してから、左のナビゲーションペインの [**許可**] を選択します。

1. [**実行ロール**] で、[**ロール名**] のリンクを選択します。IAM コンソールが開きます。

1. Lambda 関数の実行ロールの IAM コンソールの [**概要**] ページで、[**ロールの削除**] を選択します。

1. **ロールの削除**ダイアログボックスで、[**はい、削除します**] をクリックします。

### 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/)) で、左のナビゲーションペインの**関数**を選択します。

1. [ステップ 4](#ol-upper-step4) で作成した関数名の左にあるチェックボックスを選択します (例、**tutorial-object-lambda-function**)。

1. **[アクション]**、**[削除]** の順に選択します。

1. **[関数の削除]** ダイアログボックスで、**[削除]** を選択します。

### CloudWatch Logs グループを削除する
<a name="ol-upper-step8-delete-cloudwatch"></a>

1. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/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 Object Lambda の一般的なユースケースを以下に示します。
+ セキュリティとコンプライアンスのために機密データをマスキングします。

  詳細については、「[チュートリアル: S3 Object Lambda と Amazon Comprehend を使用した PII データの検出と編集](tutorial-s3-object-lambda-redact-pii.md)」を参照してください。
+ 特定の情報を配信するために、特定のデータ行をフィルタリングします。
+ 他のサービスやデータベースからの情報でデータ強化します。
+ アプリケーション互換性のために XML から JSON への変換など、データ形式間の変換を行います。
+ ダウンロード中のファイルを圧縮または解凍します。
+ 画像のサイズ変更とウォーターマークを行います。

  詳細については、「[チュートリアル: S3 Object 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 Object Lambda, の詳細については、「[S3 Object Lambda を使用したオブジェクトの変換](transforming-objects.md)」を参照してください。

# チュートリアル: S3 Object Lambda と Amazon Comprehend を使用した PII データの検出と編集
<a name="tutorial-s3-object-lambda-redact-pii"></a>

**注記**  
2025 年 11 月 7 日現在、S3 Object Lambda は、現在サービスを使用している既存のお客様、および一部の AWS パートナーネットワーク (APN) パートナーのみが利用できます。S3 Object 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 Object Lambda](https://aws.amazon.com/s3/features/object-lambda) と Amazon Comprehend により事前に構築された AWS Lambda 関数を使用すると、S3 から取得した PII データを、アプリケーションに返す前に保護できます。具体的な内容は以下のとおりです。組み込みの [Lambda 関数](https://aws.amazon.com/lambda/)を編集関数として作使用し、S3 Object Lambda アクセスポイントにアタッチします。アプリケーション (分析アプリケーションなど) が[標準 S3 GET リクエスト](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)を送信する場合、S3 Object Lambda アクセスポイントを介して行われたこれらのリクエストは、事前作成された編集用 Lambda 関数を呼び出し、サポートしている S3 アクセスポイントを介して基盤となるデータソースから取得した PII データを検出して修正します。次に、S3 Object Lambda アクセスポイントは、編集された結果をアプリケーションに返します。

![\[これは、S3 Object Lambda ワークフロー図です。\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/images/ol-comprehend-image-global.png)


プロセスでは、事前に構築された Lambda 関数は [Amazon Comprehend](https://aws.amazon.com/comprehend/) (自然言語処理 (NLP) サービス) を使用して、PII がテキストにどのように存在するかに関係なく (数値、または単語と数字の組み合わせなど)、PII の表現方法のバリエーションをキャプチャします。Amazon Comprehend は、テキスト内のコンテキストを使用して、4 桁の数字が PIN、社会保障番号 (SSN) の最後の 4 桁の数字であるか、または年であるかを理解することもできます。Amazon Comprehend は UTF-8 形式のテキストファイルを処理し、精度に影響を与えずに PII を大規模に保護します。詳細については、*Amazon Comprehend デベロッパーガイド*の「[Amazon Comprehend とは?](https://docs.aws.amazon.com/comprehend/latest/dg/what-is.html)」を参照してください。

**目的**  
このチュートリアルでは、事前に構築された Lambda 関数 `ComprehendPiiRedactionS3ObjectLambda` で S3 Object Lambda を使用する方法を学習します。この関数は、Amazon Comprehend を使用して PII エンティティを検出します。次に、これらのエンティティをアスタリスクに置き換えて墨消しします。PII を編集することで、機密データを隠すことができ、セキュリティとコンプライアンスに役立ちます。

また、[AWS Serverless Application Repository](https://aws.amazon.com/serverless/serverlessrepo/) で事前作成された AWS Lambda 関数を操作して、S3 Object 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 Object Lambda アクセスポイントの作成](#ol-pii-step5)
+ [ステップ 6: S3 Object Lambda アクセスポイントを使用して、編集されたファイルを取得する](#ol-pii-step6)
+ [ステップ 7: クリーンアップ](#ol-pii-step7)
+ [次のステップ](#ol-pii-next-steps)

## 前提条件: 許可を持つ IAM ユーザーを作成する
<a name="ol-pii-prerequisites"></a>

このチュートリアルを開始する前に、正しいアクセス許可を持つ AWS Identity and Access Management ユーザー (IAM ユーザー) としてサインインできる AWS アカウントが必要です。

チュートリアル用の IAM ユーザーを作成できます。このチュートリアルを完了するには、IAM ユーザーが次の IAM ポリシーをアタッチして、関連する AWS リソースにアクセスし、特定のアクションを実行する必要があります。

**注記**  
このチュートリアルでは、わかりやすいように IAM ユーザーを作成して使用します。このチュートリアルを完了したら、忘れずに「[IAM ユーザーを削除する](#ol-pii-step8-delete-user)」を行います。本番環境で使用する場合は、「*IAM ユーザーガイド*」の「[IAM でのセキュリティのベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)」に従うことをお勧めします。ベストプラクティスでは、人間のユーザーと ID プロバイダーとのフェデレーションにより、一時的な認証情報を使用して AWS にアクセスする必要があります。追加のベストプラクティスとして、ワークロードでは一時的な認証情報で IAM ロールを使用し、AWS にアクセス必要があります。AWS IAM アイデンティティセンター を使用して一時的な認証情報を持つユーザーを作成する方法については、「*AWS IAM アイデンティティセンター ユーザーガイド*」の「[Getting started](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) – Object Lambda アクセスポイントを作成および使用するための許可を含む、すべての Amazon S3 アクションに対する許可を付与します。
+ [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. 左のナビゲーションペインの **[ポリシー]** を選択します。

1. [**Create policy (ポリシーの作成)**] を選択します。

1. **Service** の [**Visual editor**] タブで、[**サービスの選択**] を選択します。次に、[**Serverless Application Repository**] を選択します。

1. [**アクション**] の [**手動アクション**] の下で、このチュートリアルでは、[**すべての Serverless Application Repository アクション (serverlessrepo:\$1)**] を選択します。

   セキュリティのベストプラクティスとは、ユーザーが必要とするアクションとリソースに対する許可を、ユースケースに基づいて付与することです。詳細については、*IAM ユーザーガイド*の「[IAM でのセキュリティベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)」を参照してください。

1. [**リソース**] で、このチュートリアルでは、[**すべてのリソース**] を選択します。

   ベストプラクティスは、特定のアカウントの特定のリソースに対してのみ許可を定義することです。または、条件キーを使用して、最小の特権を付与することもできます。詳細については、[IAM ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)の「*最小限の特権を付与*」を参照してください。

1. [**Next: Tags (次へ: タグ)**] を選択します。

1. **[次へ: レビュー]** を選択します。

1. **[ポリシーの確認]** ページで、作成するポリシーの **[名前]** (例、**tutorial-serverless-application-repository**) と **[説明]** (オプション) を入力します。ポリシー概要を確認して、目的のアクセス許可を付与していることを確認し、**[Create policy]** (ポリシーの作成) を選択して新しいポリシーを保存します。

1. 左のナビゲーションペインで、**[ユーザー]** を選択します。次に、このチュートリアルの IAM ユーザーを選択します。

1. 選択したユーザーの [**概要**] ページで、[**許可**] タブを選択してから、[**許可を追加**] を選択します。

1. [**権限の付与**] で、[**既存のポリシーを直接アタッチします**] を選択します。

1. 今、作成したポリシーの横にあるチェックボックスを選択し (例、**tutorial-serverless-application-repository**)、次に [**次へ: レビュー**] を選択します。

1. [**許可概要**] で、概要を確認し、意図したポリシーを付与したことを確認します。次に、[**許可を追加**] を選択します。

## ステップ 1: S3 バケットを作成する
<a name="ol-pii-step1"></a>

変換する元のデータを保存するバケットを作成します。

**注記**  
Amazon FSx for OpenZFS ボリュームなどの別のデータソースにアクセスポイントをアタッチできますが、このチュートリアルでは S3 バケットにアタッチされたサポートアクセスポイントを使用します。

**バケットを作成するには**

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. 左側のナビゲーションペインで、[**バケット**] を選択します。

1. [**Create bucket (バケットの作成)**] を選択します。

   **[バケットの作成]** ページが開きます。

1. [**バケット名**] に、バケットの名前 (例、**tutorial-bucket**) を入力します。

   Amazon S3 のバケット命名規則の詳細については、「[汎用バケットの命名規則](bucketnamingrules.md)」を参照してください。

1. [**リージョン**] で、バケットを保存する AWS リージョン を選択します。

   バケットのリージョンの詳細については、「[汎用バケットの概要](UsingBucket.md)」を参照してください。

1. [**このバケットのパブリックアクセス設定をブロック**] で、デフォルト設定 (**ブロック*すべて*パブリックアクセス**が有効) のままであることを確認します。

   ユースケースでオフにする必要のある設定が 1 つ以上あることがわかっている場合を除き、すべてのブロックパブリックアクセス設定を有効にしておくことをお勧めします。パブリックアクセスのブロックの詳細については、[Amazon S3 ストレージへのパブリックアクセスのブロック](access-control-block-public-access.md) を参照してください。

1. 残りの設定はデフォルトのままにしておきます。

   (オプション) 特定のユースケースに追加のバケット設定を設定する場合は、「[汎用バケットの作成](create-bucket-overview.md)」を参照してください。

1. **[バケットを作成]** を選択します。

## ステップ 2: S3 バケットにファイルをアップロード
<a name="ol-pii-step2"></a>

名前、銀行情報、電話番号、SSN など、さまざまなタイプの既知の PII データを含むテキストファイルを 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 Object Lambda アクセスポイントを使用して元のデータにアクセスし、変換するには、S3 アクセスポイントを作成し、[ステップ 1](#ol-pii-step1) で作成した S3 バケットに関連付けます。アクセスポイントは、変換するオブジェクトと同じ AWS リージョン に存在する必要があります。

このチュートリアルの後半では、このアクセスポイントを Object 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. **[アクセスポイントを作成]** を選択します。

## ステップ 4: 事前構築された Lambda 関数の設定とデプロイ
<a name="ol-pii-step4"></a>

PII データを編集するには、事前に構築された AWS Lambda関数 `ComprehendPiiRedactionS3ObjectLambda` を S3 Object 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. 残りの設定はデフォルト値のままにしておきます。

   (オプション) 特定のユースケースに対して追加の設定を構成する場合は、ページの左側の **Readme ファイル**セクションを参照してください。

1. [**I acknowledge that this app creates custom IAM roles (このアプリでカスタム IAM ロールを作成することを認識しています)**] チェックボックスをオンにします。

1. **[デプロイ]** をクリックします。

1. 新しいアプリケーションのページの [**リソース**] で、デプロイする Lambda 関数の [**論理 ID**] を選択して、Lambda 関数ページで関数を確認します。

## ステップ 5: S3 Object Lambda アクセスポイントの作成
<a name="ol-pii-step5"></a>

S3 Object Lambda アクセスポイントは、S3 GET リクエストから Lambda 関数を直接呼び出す柔軟性を提供し、関数が S3 アクセスポイントから取得した PII データを編集できるようにします。S3 Object Lambda アクセスポイントを作成および設定するときは、変更する Lambda 関数を指定して、Lambda が使用するカスタムパラメータとして JSON 形式のイベントコンテキストを呼び出し、提供する必要があります。

イベントコンテキストは、S3 Object Lambda から Lambda に渡されたイベントで行われたリクエストに関する情報を提供します。イベントコンテキスト内のすべてのフィールドの詳細については、「 [イベントコンテキストの形式と使用法](olap-event-context.md)」を参照してください。

**S3 Object Lambda アクセスポイントを作成するには**

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. 左のナビゲーションペインで、[**Object Lambda アクセスポイント**] を選択します。

1. [**Object Lambda アクセスポイント**] ページで、[**Object Lambda アクセスポイントの作成**] を選択します。

1. **Object Lambda アクセスポイント名**] に、Object Lambda アクセスポイントに使用する名前を入力します (例、**tutorial-pii-object-lambda-accesspoint**)。

1. **[サポートするアクセスポイント]** で、[ステップ 3](#ol-pii-step3) で作成した標準アクセスポイントを入力または参照します (**tutorial-pii-access-point** など)。次に、**[サポートするアクセスポイントの選択]** を選択します。

1. **S3 API** の場合、Lambda 関数が処理する S3 バケットからオブジェクトを取得するには、**[GetObject]** を選択します。

1. **[Lambda 関数の呼び出し]** では、このチュートリアルでは、次の 2 つのオプションのいずれかを選択できます。
   + **[アカウントの関数から選択]** を選択し、**[Lambda 関数]** ドロップダウンリストから、[ステップ 4](#ol-pii-step4) (例、**serverlessrepo-ComprehendPiiRedactionS3ObjectLambda**) でデプロイしたLambda 関数を選択します。
   + **ARN を入力**] を選択し、[ステップ 4](#ol-pii-step4) で作成した Lambda 関数の Amazon リソースネーム (ARN) を入力します。

1. [**Lambda 関数のバージョン**] で、**\$1LATEST** ([ステップ 4](#ol-pii-step4) でデプロイした Lambda 関数の最新バージョン) を選択します。

1. (オプション) Lambda 関数で、範囲とパート番号によって GET リクエストを認識および処理する必要がある場合は、[**Lambda 関数は、範囲を使用してリクエストをサポート**] および [**Lambda 関数は、パート番号を使用してリクエストをサポート**] を選択します。それ以外の場合は、これらの 2 つのチェックボックスをオフにします。

   S3 Object Lambda で範囲またはパート番号を使用する方法の詳細については、「[Range および partNumber ヘッダーの操作](range-get-olap.md)」を参照してください。

1. (オプション) [**ペイロード - *オプション***] で JSON テキストを追加して、Lambda 関数に追加情報を提供します。

   ペイロードは、特定の S3 Object Lambda アクセスポイントからのすべての呼び出しに対する入力として、Lambda 関数に提供できるオプションの JSON テキストです。同じ Lambda 関数を呼び出す複数の Object Lambda アクセスポイントの動作をカスタマイズして、異なるパラメータを使用してペイロードを設定できます。これにより、Lambda 関数の柔軟性が向上します。

   ペイロードの詳細については、「[イベントコンテキストの形式と使用法](olap-event-context.md)」を参照してください。

1. (オプション) **[リクエストメトリクス - *オプション*]** で、**[無効]** または **[有効]** を選択して、Amazon S3 モニタリングを Object Lambda アクセスポイントに追加します。リクエストメトリクスには、Amazon CloudWatch の標準料金が課金されます。詳細については、「[CloudWatch 料金表](https://aws.amazon.com/cloudwatch/pricing/)」を参照してください。

1. [**Object Lambda アクセスポイントポリシー-*オプション***] で、デフォルトの設定を保持します。

   (オプション) リソースポリシーを設定できます。このリソースポリシーは、指定された Object Lambda アクセスポイントを使用する `GetObject` API 許可を付与します。

1. 残りの設定はデフォルト値のままにしておき、[**Object Lambda アクセスポイントの作成**] を選択します。

## ステップ 6: S3 Object Lambda アクセスポイントを使用して、編集されたファイルを取得する
<a name="ol-pii-step6"></a>

これで、S3 Object Lambda は元のファイルから PII データを編集する準備が整いました。

**S3 Object Lambda アクセスポイントを使用して、編集されたファイルを取得するには**

S3 Object Lambda アクセスポイントを使用してファイルの取得をリクエストすると、S3 Object Lambda への `GetObject` API 呼び出しが行われます。S3 Object Lambda は Lambda 関数を呼び出して PII データを変換し、変換されたデータを標準 S3 `GetObject` API への応答として返します。

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. 左のナビゲーションペインで、[**Object Lambda アクセスポイント**] を選択します。

1. [**Object Lambda アクセスポイント**] ページで、[ステップ 5](#ol-pii-step5) で作成した S3 Object Lambda アクセスポイントを選択します (例、**tutorial-pii-object-lambda-accesspoint**)。

1. S3 Object Lambda アクセスポイントの [**オブジェクト**] タブで、[ステップ 2](#ol-pii-step2) で S3 バケットにアップロードしたファイルと同じ名前のファイルを選択します(例、`tutorial.txt`)。

   このファイルには、変換されたすべてのデータが含まれているはずです。

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 Object Lambda によってデータを編集した場合は、割り当てた AWS リソースを削除して、料金が発生しないようにします。

**Topics**
+ [Object Lambda アクセスポイントの削除](#ol-pii-step8-delete-olap)
+ [S3 アクセスポイントを削除する](#ol-pii-step8-delete-ap)
+ [Lambda 関数を削除する](#ol-pii-step8-delete-lambda-function)
+ [CloudWatch Logs グループを削除する](#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)

### Object 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. 左のナビゲーションペインで、[**Object Lambda アクセスポイント**] を選択します。

1. [**Object Lambda アクセスポイント**] ページで、[ステップ 5](#ol-pii-step5) で作成した S3 Object Lambda アクセスポイントの左にあるオプションブタンを選択します (例、**tutorial-pii-object-lambda-accesspoint**)。

1. **[削除]** を選択します。

1. 表示されるテキストフィールドにアクセスポイントの名前を入力して、[**削除**] を選択し、bject 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 Logs グループを削除する
<a name="ol-pii-step8-delete-cloudwatch"></a>

1. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/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. [**削除**] ダイアログボックスで、テキスト入力フィールドにロール名を入力し、ユーザーの削除を確認します。その後、**[削除]** をクリックします。

### 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. 左のナビゲーションペインの **[ポリシー]** を選択します。

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 Object Lambda アクセスポイントを作成し、データアクセサーのビジネスニーズに応じて特定の種類の PII を変更するように構成された事前構築済みの Lambda 関数でそれらを有効にすることができます。

  各タイプのユーザーは IAM ロールを引き受け、1 つの S3 Object Lambda アクセスポイント(IAM ポリシーで管理)にのみアクセスできます。次に、異なる編集ユースケース用に設定されたそれぞれの `ComprehendPiiRedactionS3ObjectLambda` Lambda 関数を異なる S3 Object Lambda アクセスポイントにアタッチします。S3 Object Lambda アクセスポイントごとに、共有データセットを保存する S3 バケットからデータを読み取るためのサポートする S3 アクセスポイントを持つことができます。

  ユーザーが、S3 アクセスポイントを介してのみバケットから読み取ることを許可する、S3 バケットポリシーを作成する方法については、「[アクセスポイントを使用するための IAM ポリシーの設定](access-points-policies.md)」を参照してください。

  Lambda 関数、S3 アクセスポイント、および S3 Object Lambda アクセスポイントにアクセスする許可をユーザーに付与する方法の詳細については、「[Object Lambda アクセスポイントの IAM ポリシーの設定](olap-policies.md)」を参照してください。
+ 独自の Lambda 関数を構築し、カスタマイズした Lambda 関数で S3 Object Lambda を使用し、特定のデータニーズを満たすことができます。

  例えば、さまざまなデータ値を調べるには、S3 Object Lambda と、追加の [Amazon Comprehend の機能](https://aws.amazon.com/comprehend/features/)(エンティティ認識、キーフレーズ認識、センチメント分析、ドキュメントの分類など)を使用して、データを処理できます。また、S3 Object Lambda を [Amazon Comprehend Medical](https://aws.amazon.com/comprehend/medical/) (HIPAA 適格な NLP サービス) と共に使用して、コンテキストに応じた方法でデータを分析および抽出できます。

  S3 Object Lambda および独自の Lambda 関数を使用してデータを変換する方法の詳細については、「[チュートリアル: S3 Object Lambda を使用したアプリケーションのデータの変換](tutorial-s3-object-lambda-uppercase.md)」を参照してください。