

# Object Lambda アクセスポイントの作成
<a name="olap-create"></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)」を参照してください。

Object Lambda アクセスポイントは、作成時に指定した 1 つの標準アクセスポイントにのみ関連付けられます。Object Lambda アクセスポイントを作成するには、次のリソースが必要です。
+ **標準 S3 アクセスポイント。**Object Lambda アクセスポイントを使用する場合、この標準アクセスポイントは*サポートアクセスポイント*と呼ばれ、S3 バケットまたは Amazon FSx for OpenZFS ボリュームにアタッチされます。標準アクセスポイントの作成については、「[アクセスポイントの作成](creating-access-points.md)」を参照してください。
+ **AWS Lambda 関数。**独自の Lambda 関数を作成することも、事前に構築された関数を使用することもできます。Lambda 関数の詳細については、「[S3 Object Lambda アクセスポイントの Lambda 関数の記述](olap-writing-lambda.md)」を参照してください。事前構築された関数の詳細については、「[AWS で構築された Lambda 関数の使用](olap-examples.md)」を参照してください。
+ **(オプション) AWS Identity and Access Management (IAM) ポリシー。**Amazon S3 アクセスポイントは IAM リソースポリシーをサポートしています。これにより、リソース、ユーザー、またはその他の条件別にアクセスポイントの使用を制御できます。これらのポリシーの作成の詳細については、「[Object Lambda アクセスポイントの IAM ポリシーの設定](olap-policies.md)」を参照してください。

以下のセクションでは、下記を使用して Object Lambda アクセスポイントを作成する方法について説明します。
+ AWS マネジメントコンソール
+ AWS Command Line Interface (AWS CLI)
+ AWS CloudFormation テンプレート
+ AWS Cloud Development Kit (AWS CDK)

REST API を使用して Object Lambda アクセスポイントを作成する方法については、*Amazon Simple Storage Service API リファレンス*の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessPointForObjectLambda.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessPointForObjectLambda.html)」を参照してください。

## Object Lambda アクセスポイントの作成
<a name="create-olap"></a>

次のいずれかの手順に従って Object Lambda アクセスポイントを作成します。

### S3 コンソールの使用
<a name="olap-create-console"></a>

**コンソールを使用して Object Lambda のアクセスポイントを作成するには**

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

1. ナビゲーションバーで、現在表示されている AWS リージョン の名前をクリックします。次に、切り替え先のリージョンを選択します。

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

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

1. **[Object Lambda Access Point name]** (Object Lambda アクセスポイント名) に、アクセスポイントに使用する名前を入力します。

   標準のアクセスポイントと同様に、Object Lambda には命名規則があります。詳細については、「[アクセスポイントの命名規則](access-points-restrictions-limitations-naming-rules.md#access-points-names)」を参照してください。

1. **[Supporting Access Point]** (サポートアクセスポイント) で、使用する標準アクセスポイントを入力または参照します。アクセスポイントは、変換するオブジェクトと同じ AWS リージョン に存在する必要があります。標準アクセスポイントの作成については、「[アクセスポイントの作成](creating-access-points.md)」を参照してください。

1. **[変換の設定]** で、Object Lambda アクセスポイントのデータを変換する関数を追加できます。次のいずれかを行います。
   + アカウントに既に AWS Lambda 関数がある場合は、**[Invoke Lambda function]** (Lambda 関数の呼び出し) で選択できます。ここで、AWS アカウント で Lambda 関数の Amazon リソースネーム (ARN) を入力するか、ドロップダウンメニューから Lambda 関数を選択できます。
   + AWS で構築された関数を使用する場合は、**[AWS で構築された関数]** で関数名を選択し、**[Lambda 関数を作成]** を選択します。これにより Lambda コンソールが表示され、そこで構築した関数を AWS アカウント にデプロイできます。構築した関数の詳細については、「[AWS で構築された Lambda 関数の使用](olap-examples.md)」を参照してください。

   **[S3 APIs]** で、呼び出す API オペレーションを 1 つ以上選択します。選択した各 API に対して、呼び出す Lambda 関数を指定する必要があります。

1. (オプション) **[Payload]** (ペイロード) に、入力として Lambda 関数に提供する JSON テキストを追加します。同じ Lambda 関数を呼び出す異なる Object Lambda アクセスポイントに対して、異なるパラメータを使用してペイロードを設定できます。これにより、Lambda 関数の柔軟性が向上します。
**重要**  
Object Lambda アクセスポイントを使用する場合、ペイロードには機密情報を一切含めないでください。

1. (オプション) **[Range and part number]** (範囲とパート番号) では、範囲とパート番号ヘッダーで `GET` および `HEAD` リクエストを処理するには、このオプションを有効にする必要があります。このオプションを有効にすると、Lambda 関数がこれらのリクエストを認識して処理できることが確認されます。範囲ヘッダーとパート番号の詳細については、[Range および partNumber ヘッダーの操作](range-get-olap.md) を参照してください。

1. (オプション) **[リクエストのメトリクス]** で、**[有効化]** または **[無効化]** を選択して、Amazon S3 モニタリングを Object Lambda アクセスポイントに追加します。リクエストメトリクスには、Amazon CloudWatch の標準料金が課金されます。

1. (オプション) **[Object Lambda Access Point policy]** (Object Lambda アクセスポイントポリシー) で、リソースポリシーを設定します。リソースポリシーは、指定された Object Lambda アクセスポイントにアクセス許可を付与し、リソース、ユーザー、その他の条件別にアクセスポイントの使用を制御します。Object Lambda アクセスポイントのリソースポリシーの詳細については、「[Object Lambda アクセスポイントの IAM ポリシーの設定](olap-policies.md)」を参照してください。

1. **[Block Public Access settings for this Object Lambda Access Point]** (この Object Lambda アクセスポイントのパブリックアクセス設定をブロック) で、適用するパブリックアクセスブロック設定を選択します。新しい Object Lambda アクセスポイントでは、すべてのパブリックアクセスブロック設定がデフォルトで有効になります。デフォルトの設定のままにしておくことをお勧めします。Amazon S3 は、現在、Object Lambda アクセスポイントの作成後における Object Lambda アクセスポイントのパブリックアクセスブロック設定の変更をサポートしていません。

   Amazon S3 パブリックアクセスブロックの詳細については、「[汎用バケットのアクセスポイントへのパブリックアクセスの管理](access-points-bpa-settings.md)」を参照してください。

1. **[Create Object Lambda Access Point]** (Object Lambda アクセスポイントの作成) を選択します。

### の使用AWS CLI
<a name="olap-create-cli"></a>

**AWS CloudFormation テンプレートを使用して Object Lambda アクセスポイントを作成するには**
**注記**  
次のコマンドを使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。

1. [S3 Object Lambda のデフォルト設定](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration)で、AWS Lambda 関数デプロイパッケージ `s3objectlambda_deployment_package.zip` をダウンロードします。

1. 次の `put-object` コマンドを実行して、Amazon S3 バケットにパッケージをアップロードします。

   ```
   aws s3api put-object --bucket Amazon S3 bucket name --key s3objectlambda_deployment_package.zip --body release/s3objectlambda_deployment_package.zip
   ```

1. [S3 Object Lambda のデフォルト設定](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration)で AWS CloudFormation テンプレート `s3objectlambda_defaultconfig.yaml` をダウンロードします。

1. 次の `deploy` コマンドを実行して、テンプレートを AWS アカウント にデプロイします。

   ```
   aws cloudformation deploy --template-file s3objectlambda_defaultconfig.yaml \
    --stack-name CloudFormation stack name \ 
    --parameter-overrides ObjectLambdaAccessPointName=Object Lambda Access Point name \
     SupportingAccessPointName=Amazon S3 access point S3BucketName=Amazon S3 bucket \
     LambdaFunctionS3BucketName=Amazon S3 bucket containing your Lambda package \ 
     LambdaFunctionS3Key=Lambda object key LambdaFunctionS3ObjectVersion=Lambda object version \ 
     LambdaFunctionRuntime=Lambda function runtime --capabilities capability_IAM
   ```

`GET`、`HEAD`、および `LIST` API オペレーションで Lambda を呼び出すようにこの AWS CloudFormation テンプレートを設定できます。テンプレートのデフォルト設定の変更の詳細については、「[CloudFormation テンプレートを使用して S3 Object Lambda のセットアップを自動化する](olap-using-cfn-template.md)」を参照してください。<a name="olap-create-cli-specific"></a>

**AWS CLI を使用して Object Lambda アクセスポイントを作成するには**
**注記**  
次のコマンドを使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。

以下の例では、アカウント *`111122223333`* のバケット *`amzn-s3-demo-bucket1`* に「*`my-object-lambda-ap`*」という名前の Object Lambda アクセスポイントを作成します。この例では、「*`example-ap`*」という名前の標準アクセスポイントが既に作成されていることを前提としています。標準アクセスポイントの作成については、[アクセスポイントの作成](creating-access-points.md) を参照してください。

この例では、AWS の事前構築された関数 `decompress` を使用しています。事前構築された関数の詳細については、「[AWS で構築された Lambda 関数の使用](olap-examples.md)」を参照してください。

1. バケットを作成します。この例では、*`amzn-s3-demo-bucket1`* を使用します。バケットの作成については、「[汎用バケットの作成](create-bucket-overview.md)」を参照してください。

1. 標準アクセスポイントを作成し、バケットにアタッチします。この例では、*`example-ap`* を使用します。標準アクセスポイントの作成については、「[アクセスポイントの作成](creating-access-points.md)」を参照してください。

1. 次のいずれかを行います。
   + Amazon S3 オブジェクトの変換に使用する Lambda 関数をアカウント内に作成します。Lambda 関数の詳細については、「[S3 Object Lambda アクセスポイントの Lambda 関数の記述](olap-writing-lambda.md)」を参照してください。AWS CLI でカスタム関数を使用するには、「*AWS Lambda 開発者ガイド*」の「[AWS CLI での Lambda の使用](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-awscli.html)」を参照してください。
   + AWS の事前構築された Lambda 関数を使用します。事前構築された関数の詳細については、「[AWS で構築された Lambda 関数の使用](olap-examples.md)」を参照してください。

1. `my-olap-configuration.json` という名前の JSON 設定ファイルを作成します。この設定では、前のステップで作成した Lambda 関数のサポートアクセスポイントと Amazon リソースネーム (ARN)、または使用している事前構築された関数の ARN を指定します。  
**Example**  

   

   ```
   {
       "SupportingAccessPoint" : "arn:aws:s3:us-east-1:111122223333:accesspoint/example-ap",
       "TransformationConfigurations": [{
           "Actions" : ["GetObject", "HeadObject", "ListObjects", "ListObjectsV2"],
           "ContentTransformation" : {
               "AwsLambda": {
                   "FunctionPayload" : "{\"compressionType\":\"gzip\"}",
                   "FunctionArn" : "arn:aws:lambda:us-east-1:111122223333:function/compress"
               }
           }
       }]
   }
   ```

1. `create-access-point-for-object-lambda` コマンドを実行して Object Lambda アクセスポイントを作成します。

   ```
   aws s3control create-access-point-for-object-lambda --account-id 111122223333 --name my-object-lambda-ap --configuration file://my-olap-configuration.json
   ```

1. (オプション) `my-olap-policy.json` という名前の JSON ポリシーファイルを作成します。

   Object Lambda アクセスポイントのリソースポリシーを追加することで、リソース、ユーザー、その他の条件別にアクセスポイントの使用を制御することができます。このリソースポリシーは、アカウント *`444455556666`* に指定された Object Lambda アクセスポイントへの `GetObject` 許可を付与します。  
**Example**  

   

   ```
   {
       "Version": "2008-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Grant account 444455556666 GetObject access",
               "Effect": "Allow",
               "Action": "s3-object-lambda:GetObject",
               "Principal": {
                   "AWS": "arn:aws:iam::444455556666:root"
               },
               "Resource": "your-object-lambda-access-point-arn"
           }
       ]
   }
   ```

1. (オプション) `put-access-point-policy-for-object-lambda` コマンドを実行して、リソースポリシーを設定します。

   ```
   aws s3control put-access-point-policy-for-object-lambda --account-id 111122223333 --name my-object-lambda-ap --policy file://my-olap-policy.json
   ```

1. (オプション) ペイロードを規定します。

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

   次の Object Lambda アクセスポイントの設定は、2 つのパラメータを持つペイロードを示しています。

   ```
   {
   	"SupportingAccessPoint": "AccessPointArn",
   	"CloudWatchMetricsEnabled": false,
   	"TransformationConfigurations": [{
   		"Actions": ["GetObject", "HeadObject", "ListObjects", "ListObjectsV2"],
   		"ContentTransformation": {
   			"AwsLambda": {
   				"FunctionArn": "FunctionArn",
   				"FunctionPayload": "{\"res-x\": \"100\",\"res-y\": \"100\"}"
   			}
   		}
   	}]
   }
   ```

   次の Object Lambda アクセスポイント設定は、パラメータが 1 つあり、`GetObject-Range`、`GetObject-PartNumber`、`HeadObject-Range`、および `HeadObject-PartNumber` が有効になっているペイロードを示しています。

   ```
   {
       "SupportingAccessPoint":"AccessPointArn",
       "CloudWatchMetricsEnabled": false,
       "AllowedFeatures": ["GetObject-Range", "GetObject-PartNumber", "HeadObject-Range", "HeadObject-PartNumber"],        
       "TransformationConfigurations": [{
           "Action": ["GetObject", "HeadObject", "ListObjects", "ListObjectsV2"],
           "ContentTransformation": {
               "AwsLambda": {
                   "FunctionArn":"FunctionArn",
                   "FunctionPayload": "{\"compression-amount\": \"5\"}"
               }
           }
       }]
   }
   ```
**重要**  
Object Lambda アクセスポイントを使用する場合、ペイロードには機密情報を一切含めないでください。

### AWS CloudFormation コンソールとテンプレートの使用。
<a name="olap-create-cfn-console"></a>

Amazon S3 が提供するデフォルト設定を使用して、Object Lambda アクセスポイントを作成できます。[GitHub リポジトリ](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration) から AWS CloudFormation テンプレートと Lambda 関数のソースコードのリソースをダウンロードして、これらのリソースをデプロイして、Object Lambda アクセスポイントを設定します。

AWS CloudFormation テンプレートのデフォルト設定の変更の詳細については、「[CloudFormation テンプレートを使用して S3 Object Lambda のセットアップを自動化する](olap-using-cfn-template.md)」を参照してください。

テンプレートなしで CloudFormation を使用する Object Lambda アクセスポイントの設定の詳細については、*AWS CloudFormation ユーザーガイド*の「[https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3objectlambda-accesspoint.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3objectlambda-accesspoint.html)」を参照してください。

**Lambda 関数のデプロイパッケージをアップロードします**

1. [S3 Object Lambda のデフォルト設定](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration)で、AWS Lambda 関数デプロイパッケージ `s3objectlambda_deployment_package.zip` をダウンロードします。

1. Amazon S3 バケットにパッケージをアップロードします。

**AWS CloudFormation コンソールを使用して Object Lambda のアクセスポイントを作成するには**

1. [S3 Object Lambda のデフォルト設定](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration)で AWS CloudFormation テンプレート `s3objectlambda_defaultconfig.yaml` をダウンロードします。

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

1. 次のいずれかを行います。
   + AWS CloudFormation を初めて使用する場合は、AWS CloudFormation ホームページで **[Create stack]** (スタックの作成) を選択します。
   + 以前に AWS CloudFormation を使用したことがある場合は、左側のナビゲーションペインで **[Stacks]** (スタック) を選択します。**[Create stack]** (スタックの作成) を選択し、**[With new resources (standard)]** (新しいリソースを使用 (標準)) を選択します。

1. **前提条件 − テンプレートの準備**で、**テンプレートの準備完了**を選択します。

1. **[Specify template]** (テンプレートの指定) で、**[Upload a template file]** (テンプレートファイルのアップロード) を選択して `s3objectlambda_defaultconfig.yaml` をアップロードします。

1. [**次へ**] を選択します。

1. **スタックの詳細の指定**ページで、スタックの名前を入力します。

1. **[Parameters]** (パラメータ) セクションで、スタックテンプレートで定義されている次のパラメータを指定します。

   1. **[CreateNewSupportingAccessPoint]** では、次のいずれかを実行します。
      + テンプレートをアップロードした S3 バケット用のサポートアクセスポイントが既にある場合は、**[false]** を選択します。
      + このバケット用に新しいアクセスポイントを作成する場合は、**[true]** を選択します。

   1. **[EnableCloudWatchMonitoring]** では、Amazon CloudWatch リクエストメトリクスとアラームを有効にするかどうかに応じて、**[true]** または **[false]** を選択します。

   1. (オプション) **[LambdaFunctionPayload]** に、入力として Lambda 関数に提供する JSON テキストを追加します。同じ Lambda 関数を呼び出す異なる Object Lambda アクセスポイントに対して、異なるパラメータを使用してペイロードを設定できます。これにより、Lambda 関数の柔軟性が向上します。
**重要**  
Object Lambda アクセスポイントを使用する場合、ペイロードには機密情報を一切含めないでください。

   1. **[LambdaFunctionRuntime]** で、Lambda 関数に希望するランタイムを入力します。使用可能な選択は次のとおりです。`nodejs14.x`、`python3.9`、`java11`。

   1. **[LambdaFunctionS3BucketName]** で、デプロイパッケージをアップロードした Amazon S3 バケット名を入力します。

   1. **[LambdaFunctionS3Key]** で、デプロイパッケージをアップロードした Amazon S3 オブジェクトキーを入力します。

   1. **[LambdaFunctionS3ObjectVersion]** で、デプロイパッケージをアップロードした Amazon S3 オブジェクトバージョンを入力します。

   1. **[ObjectLambdaAccessPointName]** で、Object Lambda アクセスポイント名を入力します。

   1. **[S3BucketName]** で、Object Lambda アクセスポイントと関連付けられる Amazon S3 のバケット名を入力します。

   1. **[SupportingAccessPointName]** で、サポートアクセスポイント名を入力します。
**注記**  
これは前のステップで選択した Amazon S3 バケットに関連付けられたアクセスポイントです。Amazon S3 バケットに関連付けられているアクセスポイントがない場合は、**[CreateNewSupportingAccessPoint]** で **[true]** を選択すると、テンプレートを作成するようにテンプレートを構成できます。

1. [**次へ**] を選択します。

1. **[スタックオプションの設定]** ページで、**[次へ]** を選択します。

   このページのオプション設定の詳細については、「*AWS CloudFormation ユーザーガイド*」の「[AWS CloudFormation スタックオプションの設定](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-add-tags.html)」を参照してください。

1. **[確認]** ページで **[スタックの作成]** を選択します。

### の使用AWS Cloud Development Kit (AWS CDK)
<a name="olap-create-cdk"></a>

AWS CDK を使用した Object Lambda アクセスポイントの設定の詳細については、*AWS Cloud Development Kit (AWS CDK) API リファレンス*の「[`AWS::S3ObjectLambda` Construct Library](https://docs.aws.amazon.com/cdk/api/latest/docs/aws-s3objectlambda-readme.html)」を参照してください。

# CloudFormation テンプレートを使用して S3 Object Lambda のセットアップを自動化する
<a name="olap-using-cfn-template"></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)」を参照してください。

AWS CloudFormation テンプレートを使用すると、Amazon S3 Object Lambda アクセスポイントをすばやく作成できます。CloudFormation テンプレートは、関連するリソースを自動的に作成し、AWS Identity and Access Management (IAM) ロールを設定し、Object Lambda アクセスポイントを介してリクエストを自動的に処理する AWS Lambda 関数を設定します。CloudFormation テンプレートでベストプラクティスを実装し、セキュリティ体制を改善し、マニュアルプロセスによって引き起こされるエラーを減らすことができます。

この [GitHub リポジトリ](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration)には、CloudFormation テンプレートと Lambda 関数のソースコードが含まれています。テンプレートの使用方法については、「[Object Lambda アクセスポイントの作成](olap-create.md)」を参照してください。

テンプレートで提供される Lambda 関数が変換を実行することはありません。代わりに、基盤となるデータソースからオブジェクトをそのまま返します。関数をクローン化し、独自の変換コードを追加して、データがアプリケーションに返されるときに変更および処理できます。関数の変更の詳細については、「[Lambda 関数の変更](#modifying-lambda-function)」と「[S3 Object Lambda アクセスポイントの Lambda 関数の記述](olap-writing-lambda.md)」を参照してください。

## テンプレートの変更
<a name="modifying-cfn-template"></a>

**新しいサポートアクセスポイントの作成**  
S3 Object Lambda は、Object Lambda アクセスポイントと、*サポートアクセスポイント*と呼ばれる、標準の S3 アクセスポイントの 2 つのアクセスポイントを使用します。Object Lambda アクセスポイントにリクエストを行うと、S3 は S3 Object Lambda の設定に応じて、ユーザーに代わって Lambda を呼び出すか、サポートアクセスポイントにリクエストを委任します。テンプレートのデプロイ時に、`aws cloudformation deploy` コマンドの一部として次のパラメータを渡すことにより、新しいサポートアクセスポイントを作成できます。

```
CreateNewSupportingAccessPoint=true
```

**関数ペイロードの設定。**  
テンプレートをデプロイするときに `aws cloudformation deploy` コマンドの一部として、次のパラメータを渡すことにより、Lambda 関数に補足データを提供するようにペイロードを設定できます。

```
LambdaFunctionPayload="format=json"
```

**Amazon CloudWatch モニタリングを有効にします。**  
テンプレートをデプロイするときに `aws cloudformation deploy` コマンドの一部として<次のパラメータを渡すことで、CloudWatch モニタリングを有効にできます。

```
EnableCloudWatchMonitoring=true
```

このパラメータにより、Amazon S3 リクエストメトリクスの Object Lambda アクセスポイントが有効になり、クライアント側とサーバー側のエラーをモニタリングする 2 つの CloudWatch アラームが作成されます。

**注記**  
Amazon CloudWatch の使用には追加コストが発生します。Amazon S3 リクエストメトリクスの詳細については、「[アクセスポイントのモニタリングとログ記録](access-points-monitoring-logging.md)」を参照してください。  
料金表については、「[CloudWatch 料金表](https://aws.amazon.com/cloudwatch/pricing/)」を参照してください。

**プロビジョニング済み同時実行の設定**  
レイテンシーを低減するために、Object Lambda アクセスポイントをサポートする Lambda 関数にプロビジョニングされた同時実行を設定するには、テンプレートを編集して、`Resources` の以下の行を含めます。

```
LambdaFunctionVersion:
      Type: AWS::Lambda::Version
      Properties:
        FunctionName: !Ref LambdaFunction
        ProvisionedConcurrencyConfig:
            ProvisionedConcurrentExecutions: Integer
```

**注記**  
同時実行のプロビジョニングには追加料金が発生します。プロビジョニングされた同時実行の詳細については、「*AWS Lambda デベロッパーガイド*」の「[Lambda プロビジョニング済み同時実行数の管理](https://docs.aws.amazon.com/lambda/latest/dg/provisioned-concurrency.html)」を参照してください。  
料金の詳細については、「[AWS Lambda の料金](https://aws.amazon.com/lambda/pricing/)」を参照してください。

## Lambda 関数の変更
<a name="modifying-lambda-function"></a>

**`GetObject` リクエストのヘッダー値の変更**  
デフォルトでは、Lambda 関数は `Content-Length` と `ETag` を除くすべてのヘッダーを、署名付き URL リクエストから `GetObject` クライアントに転送します。Lambda 関数の変換コードに基づいて、新しいヘッダー値を `GetObject` クライアントに送信を選択できます。

Lambda 関数を更新して、新しいヘッダー値を `WriteGetObjectResponse` API オペレーションで渡すことで送信できます。

例えば、Lambda 関数が Amazon S3 オブジェクトのテキストを別の言語に変換する場合、`Content-Language` ヘッダーに新しい値を渡すことができます。これを行うには、以下のように `writeResponse` 関数を変更します。

```
async function writeResponse (s3Client: S3, requestContext: GetObjectContext, transformedObject: Buffer,
  headers: Headers): Promise<PromiseResult<{}, AWSError>> {
  const { algorithm, digest } = getChecksum(transformedObject);

  return s3Client.writeGetObjectResponse({
    RequestRoute: requestContext.outputRoute,
    RequestToken: requestContext.outputToken,
    Body: transformedObject,
    Metadata: {
      'body-checksum-algorithm': algorithm,
      'body-checksum-digest': digest
    },
    ...headers,
    ContentLanguage: 'my-new-language'
  }).promise();
}
```

サポートされているヘッダーの完全なリストについては、*Amazon Simple Storage Service API リファレンス*の [https://docs.aws.amazon.com/AmazonS3/latest/API/API_WriteGetObjectResponse.html#API_WriteGetObjectResponse_RequestSyntax](https://docs.aws.amazon.com/AmazonS3/latest/API/API_WriteGetObjectResponse.html#API_WriteGetObjectResponse_RequestSyntax) を参照してください。

**メタデータヘッダーを返します。**  
Lambda 関数を更新して、新しいヘッダー値を [https://docs.aws.amazon.com/AmazonS3/latest/API/API_WriteGetObjectResponse.html#API_WriteGetObjectResponse_RequestSyntax](https://docs.aws.amazon.com/AmazonS3/latest/API/API_WriteGetObjectResponse.html#API_WriteGetObjectResponse_RequestSyntax) API オペレーションリクエストで渡すことで送信できます。

```
async function writeResponse (s3Client: S3, requestContext: GetObjectContext, transformedObject: Buffer,
  headers: Headers): Promise<PromiseResult<{}, AWSError>> {
  const { algorithm, digest } = getChecksum(transformedObject);

  return s3Client.writeGetObjectResponse({
    RequestRoute: requestContext.outputRoute,
    RequestToken: requestContext.outputToken,
    Body: transformedObject,
    Metadata: {
      'body-checksum-algorithm': algorithm,
      'body-checksum-digest': digest,
      'my-new-header': 'my-new-value' 
    },
    ...headers
  }).promise();
}
```

**新しいステータスコードを返します。**  
カスタムステータスコードを [https://docs.aws.amazon.com/AmazonS3/latest/API/API_WriteGetObjectResponse.html#API_WriteGetObjectResponse_RequestSyntax](https://docs.aws.amazon.com/AmazonS3/latest/API/API_WriteGetObjectResponse.html#API_WriteGetObjectResponse_RequestSyntax) API オペレーションリクエストで渡すことにより、`GetObject` クライアントに返すことができます。

```
async function writeResponse (s3Client: S3, requestContext: GetObjectContext, transformedObject: Buffer,
  headers: Headers): Promise<PromiseResult<{}, AWSError>> {
  const { algorithm, digest } = getChecksum(transformedObject);

  return s3Client.writeGetObjectResponse({
    RequestRoute: requestContext.outputRoute,
    RequestToken: requestContext.outputToken,
    Body: transformedObject,
    Metadata: {
      'body-checksum-algorithm': algorithm,
      'body-checksum-digest': digest
    },
    ...headers,
    StatusCode: Integer
  }).promise();
}
```

サポートされているステータスコードの完全なリストについては、*Amazon Simple Storage Service API リファレンス*の [https://docs.aws.amazon.com/AmazonS3/latest/API/API_WriteGetObjectResponse.html#API_WriteGetObjectResponse_RequestSyntax](https://docs.aws.amazon.com/AmazonS3/latest/API/API_WriteGetObjectResponse.html#API_WriteGetObjectResponse_RequestSyntax) を参照してください。

**ソースオブジェクトに `Range` と `partNumber` パラメータを適用します。**  
デフォルトでは、CloudFormation テンプレートによって作成された Object Lambda アクセスポイントは、`Range` と `partNumber` のパラメータを処理できます。Lambda 関数は、要求された範囲または部品番号を変換されたオブジェクトに適用します。これを行うには、関数がオブジェクト全体をダウンロードして変換を実行する必要があります。場合によっては、変換されたオブジェクト範囲がソースオブジェクトの範囲に正確にマップされることがあります。つまり、ソースオブジェクトでバイト範囲 A−B を要求して変換を実行すると、オブジェクト全体を要求して変換を実行し、変換されたオブジェクトでバイト範囲 A−B を返すのと同じ結果が得られる可能性があります。

このような場合、Lambda 関数の実装を変更して、範囲または部品番号をソースオブジェクトに直接適用できます。このアプローチにより、関数全体のレイテンシーと必要なメモリが軽減されます。詳細については、「[Range および partNumber ヘッダーの操作](range-get-olap.md)」を参照してください。

**`Range` と `partNumber` 処理の無効化**  
デフォルトでは、CloudFormation テンプレートによって作成された Object Lambda アクセスポイントは、`Range` と `partNumber` のパラメータを処理できます。この動作が不要な場合は、テンプレートから次の行を削除して無効化することができます。

```
AllowedFeatures:
  - GetObject-Range
  - GetObject-PartNumber
  - HeadObject-Range 
  - HeadObject-PartNumber
```

**大きなオブジェクトの変換**  
デフォルトでは、Lambda 関数は、S3 Object Lambda への応答のストリーミングをスタートする前に、メモリ内のオブジェクト全体を処理します。関数を変更して、変換の実行時に応答をストリーミングできます。これにより、変換のレイテンシーと Lambda 関数のメモリサイズを軽減できます。実装例については、[ストリーミング圧縮コンテンツの例](olap-writing-lambda.md#olap-getobject-response)を参照してください。