建立 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)

如需有關如何使用 建立 Object Lambda 存取點的資訊RESTAPI,請參閱 Amazon Simple Storage Service 參考 CreateAccessPointForObjectLambda 中的 。 API

建立 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 Resource Name (ARN), AWS 帳戶 或從下拉式功能表中選擇 Lambda 函數。

    • 如果您想要使用 AWS 內建函數,請選擇AWS 內建函數下的函數名稱,然後選擇建立 Lambda 函數 。這將帶您到 Lambda 主控台,您可以在其中將內建函數部署到 AWS 帳戶。如需內建函數的詳細資訊,請參閱 使用 AWS 建置的 Lambda 函數

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

  8. (選用) 在承載 下,新增您要提供給 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 範本建立 Object Lambda 存取點
注意

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

  1. S3 Object Lambda 預設組態 s3objectlambda_deployment_package.zip下載 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. S3 Object Lambda 預設組態 s3objectlambda_defaultconfig.yaml下載 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 範本來叫用 GETHEADLISTAPI操作的 Lambda。如需修改範本預設組態的詳細資訊,請參閱 使用範本自動化 S3 Object Lambda CloudFormation設定

使用 建立 Object Lambda 存取點 AWS CLI
注意

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

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

此範例使用 AWS 預先建置的函數 decompress。如需預先建置函數的詳細資訊,請參閱使用 AWS 建置的 Lambda 函數

  1. 建立儲存貯體。在此範例中,我們將使用 amzn-s3-demo-bucket1。 如需有關建立儲存貯體的資訊,請參閱 建立儲存貯體

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

  3. 執行以下任意一項:

  4. 建立名為 的JSON組態檔案my-olap-configuration.json。在此組態中,為您在先前步驟中建立的 Lambda 函數或您正在使用的預先建置函數提供支援存取點和 ARN Amazon Resource Name (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. (選用) 建立名為 JSON的政策檔案my-olap-policy.json

    新增 Object Lambda 存取點資源政策可依資源、使用者或其他條件控制存取點的使用。此資源政策會授予 帳戶的GetObject許可 444455556666 至指定的 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 函數原始程式碼,並部署這些資源來設定功能性 Object Lambda 存取點。

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

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

上傳 Lambda 函數部署套件
  1. S3 Object Lambda 預設組態 s3objectlambda_deployment_package.zip下載 AWS Lambda 函數部署套件。

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

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

  2. 登入 AWS 管理主控台,並在 https://console.aws.amazon.com/cloudformation 開啟 AWS 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,選擇 truefalse ,取決於您要啟用 Amazon CloudWatch 請求指標和警示。

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

      重要

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

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

    5. 針對 LambdaFunctionS3BucketName,輸入您上傳部署套件的 Amazon S3 儲存貯體名稱。

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

    7. 針對 LambdaFunctionS3ObjectVersion,輸入您上傳部署套件的 Amazon S3 物件版本。

    8. 針對 ObjectLambdaAccessPointName,輸入 Object Lambda 存取點的名稱。

    9. 針對 S3BucketName,輸入將與您的 Object Lambda 存取點相關聯的 Amazon S3 儲存貯體名稱。

    10. 針對 SupportingAccessPointName,輸入支援存取點的名稱。

      注意

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

  9. 選擇 Next (下一步)

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

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

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

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