本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立 Object Lambda 存取點
一個 Object Lambda 存取點只與一個標準存取點相關聯,因此只會與一個 Amazon S3 儲存貯體相關聯。若要建立 Object Lambda 存取點,您需要下列資源:
-
Amazon S3 儲存貯體。如需建立儲存貯體的資訊,請參閱 建立儲存貯體。
-
標準 S3 存取點 當您使用 Object Lambda 存取點時,此標準存取點稱為支援存取點。如需建立標準存取點的相關資訊,請參閱 建立存取點。
-
AWS Lambda 函數。您可以建立自己的 Lambda 函數,也可以使用預先建置的函數。如需建立 Lambda 函數的詳細資訊,請參閱 撰寫 S3 Object Lambda 存取點的 Lambda 函數。如需預先建置函數的詳細資訊,請參閱使用 AWS 內建 Lambda 函數。
-
(選用) An AWS Identity and Access Management (IAM) 政策。Amazon S3 存取點支援 IAM 資源政策,您可以使用這些政策,依資源、使用者或其他條件來控制存取點的使用。如需建立這些政策的詳細資訊,請參閱 設定 Object Lambda 存取點的 IAM 政策。
下列各節描述如何建立 Object Lambda 存取點,方法為使用:
-
的 AWS Management Console
-
The AWS Command Line Interface (AWS CLI)
-
AWS CloudFormation 範本
-
的 AWS Cloud Development Kit (AWS CDK)
如需有關如何使用 REST 建立 Object Lambda 存取點的資訊API,請參閱 Amazon Simple Storage Service API 參考CreateAccessPointForObjectLambda
中的 。
建立 Object Lambda 存取點
使用下列其中一個程序建立 Object Lambda 存取點。
使用主控台建立 Object Lambda 存取點
登入 AWS Management Console 並在 Word 開啟 Amazon S3 主控台。 https://console.aws.amazon.com/s3/
-
在導覽列中,選擇目前顯示的名稱 AWS 區域。接下來,選擇要切換的區域。
-
在左側的導覽窗格中,選擇 Object Lambda Access Points (Object Lambda 存取點)。
-
在 Object Lambda Access Points (Object Lambda 存取點) 頁面上,選擇 Create Object Lambda access point (建立 Object Lambda 存取點)。
-
對於 Object Lambda Access Point name (Object Lambda 存取點名稱),請輸入您要用於存取點的名稱。
與標準存取點一樣,也有命名 Object Lambda 存取點的規則。如需詳細資訊,請參閱命名 Amazon S3 存取點的規則。
-
對於 Supporting Access Point (支援存取點),請輸入或瀏覽至您要使用的標準存取點。存取點必須與您要轉換 AWS 區域 的物件位於相同位置。如需建立標準存取點的相關資訊,請參閱 建立存取點。
-
在轉換組態下,您可以新增一個函數,針對 Object Lambda 存取點轉換資料。執行以下任意一項:
-
如果您的帳戶中已有 AWS Lambda 函數,您可以在叫用 Lambda 函數下選擇該函數。您可以在此輸入 Lambda 函數的 Amazon Resource Name (ARN), AWS 帳戶 或從下拉式功能表中選擇 Lambda 函數。
-
如果您想要使用 AWS 內建函數,請選擇AWS 內建函數下的函數名稱,然後選擇建立 Lambda 函數。這將帶您前往 Lambda 主控台,您可以在其中將內建函數部署到 中 AWS 帳戶。如需內建函數的詳細資訊,請參閱 使用 AWS 內建 Lambda 函數。
在 S3 APIs 下,選擇要調用的一或多個 API 操作。對於每個選取的 API,您必須指定要叫用的 Lambda 函數。
-
-
(選用) 在承載下,新增您要提供給 Lambda 函數作為輸入的 JSON 文字。您可以針對叫用相同 Lambda 函數的不同 Object Lambda 存取點以不同參數設定承載,藉此擴充 Lambda 函數的彈性。
重要
使用 Object Lambda 存取點時,請確定承載不包含任何機密資訊。
-
(選用) 對於 Range and part number (範圍和組件編號),如果想要處理具有範圍和組件編號標頭的
GET
和HEAD
請求,您必須啟用此選項。啟用此選項會確認您的 Lambda 函數可以辨識並處理這些請求。如需範圍標頭和組件編號的詳細資訊,請參閱 使用 Range 以及 partNumber 標頭。 -
(選用) 對於請求指標,請選擇啟用或停用,將 Amazon S3 監控新增至您的 Object Lambda 存取點。請求指標會以標準 Amazon CloudWatch 費率計費。
-
(選用) 在 Object Lambda Access Point policy (Object Lambda 存取點政策) 下,設定資源政策。資源政策會授予所指定 Object Lambda 存取點的許可,並且可依資源、使用者或其他條件控制存取點的使用。如需有關 Object Lambda 存取點資源政策的詳細資訊,請參閱 設定 Object Lambda 存取點的 IAM 政策。
在 Block Public Access settings for this Object Lambda Access Point (此 Object Lambda 存取點的封鎖公開存取設定)下,選取要套用的封鎖公開存取設定。根據預設,新 Object Lambda 存取點的所有封鎖公開存取設定都會啟用,建議將預設設定保持啟用狀態。Amazon S3 目前不支援在您建立了 Object Lambda 存取點之後,變更 Object Lambda 存取點的封鎖公開存取設定。
如需使用 Amazon S3 封鎖公開存取的詳細資訊,請參閱 管理存取點的公開存取。
-
選擇 Create Object Lambda Access Point (建立 Object Lambda 存取點)。
使用 AWS CloudFormation 範本建立 Object Lambda 存取點
注意
若要使用下列命令,請以您自己的資訊取代
。user input
placeholders
-
在 S3 Object Lambda 預設設定
s3objectlambda_deployment_package.zip
中下載 AWS Lambda 函數部署套件。 -
執行下列
put-object
命令,將套件上傳至 Amazon S3 儲存貯體。aws s3api put-object --bucket
Amazon S3 bucket name
--key s3objectlambda_deployment_package.zip --body release/s3objectlambda_deployment_package.zip -
在 S3 Object Lambda 預設設定
s3objectlambda_defaultconfig.yaml
中下載 AWS CloudFormation 範本。 -
執行下列
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
--capabilitiescapability_IAM
您可以設定此 AWS CloudFormation 範本來叫用 GET
、 HEAD
和 API LIST
操作的 Lambda。如需修改範本預設組態的詳細資訊,請參閱 使用 a CloudFormation 範本自動化 S3 Object Lambda 設定。
使用 建立 Object Lambda 存取點 AWS CLI
注意
若要使用下列命令,請以您自己的資訊取代
。user input
placeholders
下列範例會建立名為 的 Object Lambda 存取點
儲存貯體的 my-object-lambda-ap
帳戶中 amzn-s3-demo-bucket1
。 此範例假設名為 的標準存取點 111122223333
已建立 。若要取得有關建立標準存取點的資訊,請參閱 建立存取點。example-ap
此範例使用 AWS 預先建置的函數 decompress
。如需預先建置函數的詳細資訊,請參閱使用 AWS 內建 Lambda 函數。
-
建立儲存貯體。在此範例中,我們將使用
。 如需建立儲存貯體的資訊,請參閱 建立儲存貯體。amzn-s3-demo-bucket1
-
建立標準的存取點並將其連接到您的儲存貯體。在此範例中,我們將使用
。 如需建立標準存取點的相關資訊,請參閱 建立存取點。example-ap
-
執行以下任意一項:
-
在您的帳戶中建立您要用來轉換 Amazon S3 物件的 Lambda 函數。如需建立 Lambda 函數的詳細資訊,請參閱 撰寫 S3 Object Lambda 存取點的 Lambda 函數。若要將自訂函數與 搭配使用 AWS CLI,請參閱 AWS Lambda 開發人員指南中的將 Lambda 與 AWS CLI搭配使用。
-
使用 AWS 預先建置的 Lambda 函數。如需預先建置函數的詳細資訊,請參閱使用 AWS 內建 Lambda 函數。
-
-
建立名為 的 JSON 組態檔案
my-olap-configuration.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" } } }] } -
執行
create-access-point-for-object-lambda
命令以建立 Object Lambda 存取點。aws s3control create-access-point-for-object-lambda --account-id
111122223333
--namemy-object-lambda-ap
--configuration file://my-olap-configuration.json
-
(選用) 建立名為 的 JSON 政策檔案
my-olap-policy.json
。新增 Object Lambda 存取點資源政策可依資源、使用者或其他條件控制存取點的使用。此資源政策會授予 帳戶的
GetObject
許可
至指定的 Object Lambda 存取點。444455556666
{ "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
" } ] } -
(選用) 執行
put-access-point-policy-for-object-lambda
命令以設定您的資源政策。aws s3control put-access-point-policy-for-object-lambda --account-id
111122223333
--namemy-object-lambda-ap
--policy file://my-olap-policy.json
-
(選用) 指定承載。
承載是選用的 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 存取點時,請確定承載不包含任何機密資訊。
您可以使用 Amazon S3 提供的預設組態建立 Object Lambda 存取點。您可以從 GitHub 儲存庫
如需修改 AWS CloudFormation 範本預設組態的相關資訊,請參閱 使用 a CloudFormation 範本自動化 S3 Object Lambda 設定。
如需 AWS CloudFormation 不使用 範本設定 Object Lambda 存取點的相關資訊,請參閱 AWS CloudFormation 使用者指南AWS::S3ObjectLambda::AccessPoint
中的 。
上傳 Lambda 函數部署套件
-
在 S3 Object Lambda 預設設定
s3objectlambda_deployment_package.zip
中下載 AWS Lambda 函數部署套件。 -
將套件上傳至 Amazon S3 儲存貯體。
使用 AWS CloudFormation 主控台建立 Object Lambda 存取點
-
在 S3 Object Lambda 預設設定
s3objectlambda_defaultconfig.yaml
中下載 AWS CloudFormation 範本。 -
登入 AWS 管理主控台,並在 https://console.aws.amazon.com/cloudformation
開啟 AWS CloudFormation 主控台。 -
執行以下任意一項:
-
如果您 AWS CloudFormation 從未使用過,請在 AWS CloudFormation 首頁上選擇建立堆疊。
-
如果您 AWS CloudFormation 之前曾使用 ,請在左側導覽窗格中選擇堆疊。選擇 Create stack (建立堆疊),然後選擇 With new resources (standard) (使用新資源 (標準))。
-
-
對於 Prepare template (準備範本),請選擇 Template is ready (範本已準備就緒)。
-
對於 Specify template (指定範本),選擇 Upload a template file (上傳範本檔案) 並上傳
s3objectlambda_defaultconfig.yaml
。 -
選擇 Next (下一步)。
-
在 Specify stack details (指定堆疊詳細資訊) 頁面上,輸入堆疊的名稱。
-
在 Parameters (參數) 區段中,指定堆疊範本中定義的以下參數。
-
對於 CreateNewSupportingAccessPoint,執行下列其中一項操作:
-
如果您已有範本上傳所在之 S3 儲存貯體的支援存取點,請選擇 false。
-
如果您要針對此儲存貯體建立新的存取點,請選擇 true。
-
-
對於 EnableCloudWatchMonitoring,根據您要啟用 Amazon CloudWatch 請求指標和警示,選擇 true 或 false。
-
(選用) 對於 LambdaFunctionPayload,新增您要提供給 Lambda 函數作為輸入的 JSON 文字。您可以針對叫用相同 Lambda 函數的不同 Object Lambda 存取點以不同參數設定承載,藉此擴充 Lambda 函數的彈性。
重要
使用 Object Lambda 存取點時,請確定承載不包含任何機密資訊。
-
針對 LambdaFunctionRuntime,輸入您偏好的 Lambda 函數執行時間。可用選項為
nodejs14.x
、python3.9
、java11
。 -
針對 LambdaFunctionS3BucketName,輸入您上傳部署套件的 Amazon S3 儲存貯體名稱。
-
對於 LambdaFunctionS3Key,輸入您上傳部署套件的 Amazon S3 物件金鑰。
-
針對 LambdaFunctionS3ObjectVersion,輸入您上傳部署套件的 Amazon S3 物件版本。
-
針對 ObjectLambdaAccessPointName,輸入 Object Lambda 存取點的名稱。
-
針對 S3BucketName,輸入將與您的 Object Lambda 存取點相關聯的 Amazon S3 儲存貯體名稱。
-
針對 SupportingAccessPointName,輸入支援存取點的名稱。
注意
這是與您在上一步驟中所選擇 Amazon S3 儲存貯體相關聯的存取點。如果您沒有與 Amazon S3 儲存貯體相關聯的任何存取點,您可以針對 CreateNewSupportingAccessPoint 選擇 true,將範本設定為為您建立。
-
-
選擇 Next (下一步)。
-
在 Configure stack options (設定堆疊選項) 頁面,選擇 Next (下一步)。
如需此頁面上選用設定的詳細資訊,請參閱《AWS CloudFormation 使用者指南》中的設定 AWS CloudFormation 堆疊選項。
-
在 Review (檢閱) 頁面上,選擇 Create stack (建立堆疊)。
如需使用 設定 Object Lambda 存取點的詳細資訊 AWS CDK,請參閱 AWS Cloud Development Kit (AWS CDK) API 參考中的AWS::S3ObjectLambda
建構程式庫。