建立 Object Lambda 存取點 - Amazon Simple Storage Service

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

建立 Object Lambda 存取點

一個 Object Lambda 存取點只與一個標準存取點相關聯,因此只會與一個 Amazon S3 儲存貯體相關聯。若要建立 Object Lambda 存取點,您需要下列資源:

  • Amazon S3 儲存貯體。如需建立儲存貯體的資訊,請參閱 建立儲存貯體

  • 標準 S3 存取點 當您使用 Object Lambda 存取點時,此標準存取點稱為支援存取點。如需建立標準存取點的相關資訊,請參閱 建立存取點

  • 一個 AWS Lambda 函數。您可以建立自己的 Lambda 函數,也可以使用預先建置的函數。如需建立 Lambda 函數的詳細資訊,請參閱 撰寫 S3 Object Lambda 存取點的 Lambda 函數。如需預先建置函數的詳細資訊,請參閱使用 AWS 內 Lambda 函數

  • (選擇性) AWS Identity and Access Management (IAM) 政策。Amazon S3 存取點支援 IAM 資源政策,可讓您依資源、使用者或其他條件控制對存取點的使用。如需建立這些政策的詳細資訊,請參閱 設定 Object Lambda 存取點的 IAM 政策

下列各節描述如何建立 Object Lambda 存取點,方法為使用:

  • 該 AWS Management Console

  • 該 AWS Command Line Interface (AWS CLI)

  • 一個 AWS CloudFormation 模板

  • 該 AWS Cloud Development Kit (AWS CDK)

如需如何使用 REST API 建立 Object Lambda 存取點的資訊,請參閱《Amazon Simple Storage Service API 參考》中的 CreateAccessPointForObjectLambda

建立 Object Lambda 存取點

使用下列其中一個程序建立 Object Lambda 存取點。

使用主控台建立 Object Lambda 存取點
  1. 登入 AWS Management Console 並開啟 Amazon S3 主控台,網址為 https://console.aws.amazon.com/s3/

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

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

  4. Object Lambda Access Points (Object Lambda 存取點) 頁面上,選擇 Create Object Lambda access point (建立 Object Lambda 存取點)。

  5. 對於 Object Lambda Access Point name (Object Lambda 存取點名稱),請輸入您要用於存取點的名稱。

    與標準存取點一樣,也有命名 Object Lambda 存取點的規則。如需詳細資訊,請參閱 命名 Amazon S3 存取點的規則

  6. 對於 Supporting Access Point (支援存取點),請輸入或瀏覽至您要使用的標準存取點。存取點必須與您要轉換 AWS 區域 的物件位於相同的位置。如需建立標準存取點的相關資訊,請參閱 建立存取點

  7. 轉換組態下,您可以新增一個函數,針對 Object Lambda 存取點轉換資料。執行以下任意一項:

    • 如果您的帳戶中已有 AWS Lambda 函數,您可以在叫用 Lambda 函數下選擇它。您可以在此處輸入 Lambda 函數的 Amazon 資源名稱 (ARN), AWS 帳戶 或從下拉式功能表中選擇 Lambda 函數。

    • 如果您希望使用內置函數,請在 AWS 構建函數下AWS 選擇函數名稱,然後選擇創建 Lambda 函數這會帶您前往 Lambda 主控台,您可以在其中將內建函數部署到 AWS 帳戶. 如需內建函數的詳細資訊,請參閱 使用 AWS 內 Lambda 函數

    S3 APIs (S3 API) 下,選擇一或多個要叫用的 API 操作。對於每個選取的 API,您都必須指定一個要叫用的 Lambda 函數。

  8. (選用) 在 Payload (承載) 下,新增您想要提供給 Lambda 函數作為輸入的 JSON 文字。您可以針對叫用相同 Lambda 函數的不同 Object Lambda 存取點以不同參數設定承載,藉此擴充 Lambda 函數的彈性。

    重要

    使用 Object Lambda 存取點時,請確定承載不包含任何機密資訊。

  9. (選用) 對於 Range and part number (範圍和組件編號),如果想要處理具有範圍和組件編號標頭的 GETHEAD 請求,您必須啟用此選項。啟用此選項會確認您的 Lambda 函數可以辨識並處理這些請求。如需範圍標頭和組件編號的詳細資訊,請參閱 使用 Range 和 partNumber 標頭

  10. (選用) 對於請求指標,請選擇啟用停用,將 Amazon S3 監控新增至您的 Object Lambda 存取點。請求指標以標準 Amazon 費 CloudWatch率計費。

  11. (選用) 在 Object Lambda Access Point policy (Object Lambda 存取點政策) 下,設定資源政策。資源政策會授予所指定 Object Lambda 存取點的許可,並且可依資源、使用者或其他條件控制存取點的使用。如需有關 Object Lambda 存取點資源政策的詳細資訊,請參閱 設定 Object Lambda 存取點的 IAM 政策

  12. Block Public Access settings for this Object Lambda Access Point (此 Object Lambda 存取點的封鎖公開存取設定)下,選取要套用的封鎖公開存取設定。根據預設,新 Object Lambda 存取點的所有封鎖公開存取設定都會啟用,建議將預設設定保持啟用狀態。Amazon S3 目前不支援在您建立了 Object Lambda 存取點之後,變更 Object Lambda 存取點的封鎖公開存取設定。

    如需使用 Amazon S3 封鎖公開存取的詳細資訊,請參閱 管理存取點的公開存取

  13. 選擇 Create Object Lambda Access Point (建立 Object Lambda 存取點)。

若要使用 AWS CloudFormation 範本建立物件 Lambda 存取點
注意

若要使用下列命令,請以您自己的資訊取代 user input placeholders

  1. s3objectlambda_deployment_package.zipS3 物件 Lambda 預設組態下載 AWS Lambda 函數部署套件

  2. 執行下列 put-object 命令,將套件上傳至 Amazon S3 儲存貯體。

    aws s3api put-object --bucket Amazon S3 bucket name --key s3objectlambda_deployment_package.zip --body release/s3objectlambda_deployment_package.zip
  3. s3objectlambda_defaultconfig.yamlS3 物件 Lambda 預設組態下載 AWS CloudFormation 範本。

  4. 執行下列 deploy 命令,將範本部署到您的 AWS 帳戶。

    aws cloudformation deploy --template-file s3objectlambda_defaultconfig.yaml \ --stack-name AWS 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 範本來呼叫GETHEAD、和 LIST API 作業的 Lambda。如需修改範本預設組態的詳細資訊,請參閱 使用 CloudFormation範本自動化 S3 物件 Lambda 設定

若要使用建立物件 Lambda 存取點 AWS CLI
注意

若要使用下列命令,請以您自己的資訊取代 user input placeholders

下列範例會為帳戶 111122223333 中的儲存貯體 DOC-EXAMPLE-BUCKET1 建立名為 my-object-lambda-ap 的 Object Lambda 存取點。此範例假設已建立名為 example-ap 的標準存取點。若要取得有關建立標準存取點的資訊,請參閱 建立存取點

這個例子使用 AWS 預構建的函數decompress。如需預先建置函數的詳細資訊,請參閱使用 AWS 內 Lambda 函數

  1. 建立儲存貯體。在此範例中,我們將使用 DOC-EXAMPLE-BUCKET1。如需建立儲存貯體的資訊,請參閱 建立儲存貯體

  2. 建立標準的存取點並將其連接到您的儲存貯體。在此範例中,我們將使用 example-ap。如需建立標準存取點的相關資訊,請參閱 建立存取點

  3. 執行以下任意一項:

  4. 建立名為 my-olap-configuration.json 的 JSON 組態檔案。在此組態中,請為您在先前步驟中建立的 Lambda 函數提供支援存取點和 Amazon Resource Name (ARN),或為您正在使用的預建函數提供 ARN。

    { "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" } } }] }
  5. 執行 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
  6. (選用) 建立名為 my-olap-policy.json 的 JSON 政策檔案。

    新增 Object Lambda 存取點資源政策可依資源、使用者或其他條件控制存取點的使用。此資源政策會將帳戶 444455556666GetObject 許可授予指定的 Object Lambda 存取點。

    { "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" } ] }
  7. (選用) 執行 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
  8. (選用) 指定承載。

    有效負載是可選的 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-RangeGetObject-PartNumberHeadObject-RangeHeadObject-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 存取點時,請確定承載不包含任何機密資訊。

您可以使用 Amazon S3 提供的預設組態建立 Object Lambda 存取點。您可以從GitHub 儲存庫下載 AWS CloudFormation 範本和 Lambda 函數原始程式碼,並部署這些資源以設定功能性物件 Lambda 存取點。

如需修改 AWS CloudFormation 範本預設組態的資訊,請參閱使用 CloudFormation範本自動化 S3 物件 Lambda 設定

如 AWS CloudFormation 需使用不使用範本來設定物件 Lambda 存取點的相關資訊,請參閱使用AWS CloudFormation 者指南AWS::S3ObjectLambda::AccessPoint中的。

上傳 Lambda 函數部署套件
  1. s3objectlambda_deployment_package.zipS3 物件 Lambda 預設組態下載 AWS Lambda 函數部署套件

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

使用 AWS CloudFormation 主控台建立物件 Lambda 存取點
  1. s3objectlambda_defaultconfig.yamlS3 物件 Lambda 預設組態下載 AWS CloudFormation 範本。

  2. 登入 AWS 管理主控台,然後開啟 AWS CloudFormation 主控台,網址為 https://console.aws.amazon.com/cloudformation

  3. 執行以下任意一項:

    • 如果您從未使用 AWS CloudFormation 過,請在 AWS CloudFormation 首頁上選擇 [建立堆疊]。

    • 如果您 AWS CloudFormation 之前曾使用過,請在左側導覽窗格中選擇「堆疊」。選擇 Create stack (建立堆疊),然後選擇 With new resources (standard) (使用新資源 (標準))。

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

  5. 對於 Specify template (指定範本),選擇 Upload a template file (上傳範本檔案) 並上傳 s3objectlambda_defaultconfig.yaml

  6. 選擇 Next (下一步)。

  7. Specify stack details (指定堆疊詳細資訊) 頁面上,輸入堆疊的名稱。

  8. Parameters (參數) 區段中,指定堆疊範本中定義的以下參數。

    1. 對於 CreateNewSupportingAccessPoint,請執行下列其中一個動作:

      • 如果您已有範本上傳所在之 S3 儲存貯體的支援存取點,請選擇 false

      • 如果您要針對此儲存貯體建立新的存取點,請選擇 true

    2. 對於 EnableCloudWatchMonitoring,請根據您是否要啟用 Amazon CloudWatch 請求指標和警示,選擇

    3. (選擇性) 針對 LambdaFunctionPayload,新增您要提供給 Lambda 函數做為輸入的 JSON 文字。您可以針對叫用相同 Lambda 函數的不同 Object Lambda 存取點以不同參數設定承載,藉此擴充 Lambda 函數的彈性。

      重要

      使用 Object Lambda 存取點時,請確定承載不包含任何機密資訊。

    4. 針對 LambdaFunctionRuntime,輸入您偏好的 Lambda 函數執行階段。可用選項為 nodejs14.xpython3.9java11

    5. 對於 LambdaFunctionS3 BucketName,請輸入您上傳部署套件的 Amazon S3 儲存貯體名稱。

    6. 對於 LambdaFunctionS3Key,請輸入您上傳部署套件的 Amazon S3 物件金鑰。

    7. 對於 LambdaFunctionS3 ObjectVersion,請輸入您上傳部署套件的 Amazon S3 物件版本。

    8. 在中 ObjectLambdaAccessPointName,輸入物件 Lambda 存取點的名稱。

    9. 對於 S3 BucketName,請輸入將與您的物件 Lambda 存取點關聯的 Amazon S3 儲存貯體名稱。

    10. 在中 SupportingAccessPointName,輸入支援存取點的名稱。

      注意

      這是與您在上一步驟中所選擇 Amazon S3 儲存貯體相關聯的存取點。如果您的 Amazon S3 儲存貯體沒有任何關聯的存取點,可以透過選擇 true 為來設定範本為您建立一個CreateNewSupportingAccessPoint

  9. 選擇下一步

  10. Configure stack options (設定堆疊選項) 頁面,選擇 Next (下一步)。

    如需此頁面上選用設定的詳細資訊,請參閱《AWS CloudFormation 使用者指南》中的設定 AWS CloudFormation 堆疊選項

  11. Review (檢閱) 頁面上,選擇 Create stack (建立堆疊)。

如需使用設定物件 Lambda 存取點的詳細資訊 AWS CDK,請參閱 AWS Cloud Development Kit (AWS CDK) API 參考中的AWS::S3ObjectLambda建構程式庫