

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 建立 Object Lambda 存取點
<a name="olap-create"></a>

**注意**  
自 2025 年 11 月 7 日起，S3 Object Lambda 僅適用於目前正在使用該服務的現有客戶，以及選取 AWS 合作夥伴網路 (APN) 合作夥伴。對於類似於 S3 Object Lambda 的功能，請在此處進一步了解 - [Amazon S3 Object Lambda 可用性變更](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html)。

Object Lambda 存取點只會與您在建立期間指定的一個標準存取點建立關聯。若要建立 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)。
+ **（選用） An AWS Identity and Access Management (IAM) 政策。**Amazon S3 存取點支援 IAM 資源政策，可讓您依資源、使用者或其他條件控制對存取點的使用。如需建立這些政策的詳細資訊，請參閱 [設定 Object Lambda 存取點的 IAM 政策](olap-policies.md)。

下列各節描述如何建立 Object Lambda 存取點，方法為使用：
+ 的 AWS 管理主控台
+ The 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 管理主控台 ，並在 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 開啟 Amazon S3 主控台。

1. 在導覽列中，選擇目前顯示的 名稱 AWS 區域。接下來，選擇您想要切換到的區域。

1. 在左側的導覽窗格中，選擇 **Object Lambda Access Points** (Object Lambda 存取點)。

1. 在 **Object Lambda Access Points** (Object Lambda 存取點) 頁面上，選擇 **Create Object Lambda access point** (建立 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 函數，您可以在**叫用 Lambda 函數下選擇該函數**。您可以在其中輸入 Lambda 函數的 Amazon Resource Name (ARN)， AWS 帳戶 或從下拉式功能表中選擇 Lambda 函數。
   + 如果您想要使用 AWS 內建函數，請選擇**AWS 內建**函數下的函數名稱，然後選取**建立 Lambda 函數**。這將帶您前往 Lambda 主控台，您可以在其中將內建函數部署到 AWS 帳戶。如需內建函數的詳細資訊，請參閱 [使用 AWS 建置的 Lambda 函數](olap-examples.md)。

   在 **S3 APIs** (S3 API) 下，選擇一或多個要叫用的 API 操作。對於每個選取的 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)`s3objectlambda_deployment_package.zip`中下載 AWS Lambda 函數部署套件。

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)`s3objectlambda_defaultconfig.yaml`下載 AWS CloudFormation 範本。

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
   ```

您可以設定此 AWS CloudFormation 範本來叫用 `GET`、 `HEAD`和 `LIST` API 操作的 Lambda。如需修改範本預設組態的詳細資訊，請參閱 [使用 CloudFormation 範本自動設定 S3 Object Lambda](olap-using-cfn-template.md)。<a name="olap-create-cli-specific"></a>

**使用 建立 Object Lambda 存取點 AWS CLI**
**注意**  
若要使用下列命令，請以您自己的資訊取代 `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 開發人員指南*》中的[搭配 使用 Lambda AWS CLI](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 Resource Name (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`* 的 `GetObject` 許可授予指定的 Object Lambda 存取點。  
**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. (選用) 指定承載。

   承載是選用的 JSON，您可以提供給 AWS Lambda 函數做為輸入。您可以針對叫用相同 Lambda 函數的不同 Object Lambda 存取點以不同參數設定承載，藉此擴充 Lambda 函數的彈性。

   下列 Object Lambda 存取點組態顯示具有兩個參數的承載。

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

   下列 Object Lambda 存取點組態顯示具有一個參數、且已啟用 `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)`s3objectlambda_deployment_package.zip`的 AWS Lambda 函數部署套件。

1. 將套件上傳至 Amazon S3 儲存貯體。

**使用 AWS CloudFormation 主控台建立 Object Lambda 存取點**

1. 在 [S3 Object Lambda 預設組態](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration)`s3objectlambda_defaultconfig.yaml`下載 AWS CloudFormation 範本。

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) 開啟 AWS CloudFormation 主控台。

1. 執行以下任意一項：
   + 如果您 AWS CloudFormation 之前從未使用過 ，請在 AWS CloudFormation 首頁上，選擇**建立堆疊**。
   + 如果您 AWS CloudFormation 之前已使用過 ，請在左側導覽窗格中選擇 **Stacks**。選擇 **Create stack (建立堆疊)**，然後選擇 **With new resources (standard)** (使用新資源 (標準))。

1. 對於 **Prepare template** (準備範本)，請選擇 **Template is ready** (範本已準備就緒)。

1. 對於 **Specify template** (指定範本)，選擇 **Upload a template file** (上傳範本檔案) 並上傳 `s3objectlambda_defaultconfig.yaml`。

1. 選擇**下一步**。

1. 在 **Specify stack details** (指定堆疊詳細資訊) 頁面上，輸入堆疊的名稱。

1. 在 **Parameters** (參數) 區段中，指定堆疊範本中定義的以下參數。

   1. 對於 **CreateNewSupportingAccessPoint**，請執行下列其中一項動作：
      + 如果您已有範本上傳所在之 S3 儲存貯體的支援存取點，請選擇 **false**。
      + 如果您要針對此儲存貯體建立新的存取點，請選擇 **true**。

   1. 對於 **EnableCloudWatchMonitoring**，請選擇 **true** 或 **false**，取決於您是否想要啟用 Amazon CloudWatch 請求指標和警示。

   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. 在 **Configure stack options** (設定堆疊選項) 頁面，選擇 **Next** (下一步)。

   如需此頁面上選用設定的詳細資訊，請參閱《AWS CloudFormation 使用者指南》**中的[設定 AWS CloudFormation 堆疊選項](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-add-tags.html)。

1. 在 **Review** (檢閱) 頁面上，選擇 **Create stack** (建立堆疊)。

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

如需使用 設定 Object Lambda 存取點的詳細資訊 AWS CDK，請參閱 *AWS Cloud Development Kit (AWS CDK) API 參考*中的[`AWS::S3ObjectLambda`建構程式庫](https://docs.aws.amazon.com/cdk/api/latest/docs/aws-s3objectlambda-readme.html)。