本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
教學課程:使用 S3 Object Lambda 轉換應用程式的資料
將資料存放至 Amazon S3 時,您可以輕鬆地進行共用,以供多個應用程式使用。不過,每個應用程式可能有唯一的資料格式需求,而且可能需要針對特定使用案例修改或處理您的資料。例如,電子商務應用程式建立的資料集可能包含個人識別資訊 (PII)。處理相同的資料進行分析時,不需要此 PII,且應加以編輯。不過,如果同一個資料集用於行銷活動,您可能需要使用其他詳細資訊 (例如來自客戶忠誠度資料庫的資訊) 來豐富資料。
利用 S3 Object Lambda
目標
在本教學課程中,您將了解如何將自訂程式碼新增至標準 S3 GET 請求,以修改從 S3 擷取的請求物件,讓物件符合請求用戶端或應用程式的需求。具體而言,您將學習如何透過 S3 Object Lambda 將存放在 S3 中的原始物件中的所有文字轉換為大寫。
注意
本教學課程使用 Python 程式碼來轉換資料,如需使用 other AWS SDKs 的範例,請參閱 AWS SDK 程式碼範例程式庫中的使用 S3 Object Lambda 轉換應用程式的資料。
主題
必要條件
開始本教學課程之前,您必須擁有 AWS 帳戶 ,以具有正確許可的 AWS Identity and Access Management (IAM) 使用者身分登入 。您還必須安裝 Python 3.8 版或更新版本。
在您的 AWS 帳戶 (主控台) 中建立具有許可的 IAM 使用者
您可以為教學課程建立 IAM 使用者。若要完成本教學課程,您的 IAM 使用者必須連接下列 IAM 政策,才能存取相關 AWS 資源並執行特定動作。如需如何建立 IAM 使用者的詳細資訊,請參閱 IAM 使用者指南中的建立 Word 使用者 (主控台)。 IAM
您的 IAM 使用者需要下列政策:
-
AmazonS3FullAccess
– 授予所有 Amazon S3 動作的許可,包括建立和使用 Object Lambda 存取點的許可。 -
AWSLambda_FullAccess
– 授予所有 Lambda 動作的許可。 -
IAMFullAccess
– 授予所有 IAM 動作的許可。 -
IAMAccessAnalyzerReadOnlyAccess
– 准許讀取 IAM Access Analyzer 提供的所有存取資訊。 -
CloudWatchLogsFullAccess
– 授予 CloudWatch Logs 的完整存取權。
注意
為了簡化,本教學課程會建立和使用 IAM 使用者。完成本教學課程後,請記得 刪除 IAM 使用者。針對生產用途,建議您遵循 IAM 使用者指南中的 Word 安全最佳實務。 IAM 其中一項最佳實務是,要求人類使用者搭配身分提供者使用聯合功能,以便使用暫時性憑證存取 AWS 。另一個最佳實務是要求工作負載使用具有 IAM 角色的臨時憑證來存取 AWS。若要了解如何使用 AWS IAM Identity Center 建立具有臨時憑證的使用者,請參閱 AWS IAM Identity Center 使用者指南中的入門。
本教學課程也使用完整存取的 AWS 受管政策。為供生產使用,我們建議您改為僅授予使用案例所需的最低許可,以符合安全最佳實務。
在您的本機機器上安裝 Python 3.8 或更新版本
使用以下程序在您的本機機器上安裝 Python 3.8 或更新版本。如需安裝說明的詳細資訊,請參閱《Python 入門指南》中的下載 Python
-
開啟您的本機終端機或 shell 並執行以下命令,以確定是否已經安裝 Python,如果是,那安裝的是哪個版本。
python --version
-
如果您沒有 Python 3.8 或更新版本,請下載使用您的本機機器的 Python 3.8 的官方安裝程式
。 -
按兩下下載的檔案來執行安裝程式,然後依照步驟完成安裝。
對於 Windows 使用者,請在安裝精靈中選擇將 Python 3.X 新增至 PATH,然後再選擇立即安裝。
-
透過關閉並重新開啟終端機來重新啟動。
-
執行以下命令,以驗證已正確安裝 Python 3.8 或更新版本。
若為 macOS 使用者,請執行此命令:
python3 --version
若為 Windows 使用者,請執行此命令:
python --version
-
執行下列命令,以來驗證已安裝 pip3 套件管理工具。如果您在命令回應中看到 pip 版本編號和 python 3.8 或更新版本,則意味著已成功安裝 pip3 套件管理工具。
pip --version
步驟 1:建立 S3 儲存貯體
建立儲存貯體來存放您計劃要轉換的原始資料。
建立儲存貯體
登入 AWS Management Console 並在 Word 開啟 Amazon S3 主控台。 https://console.aws.amazon.com/s3/
-
在左側導覽窗格中,選擇 Buckets (儲存貯體)。
-
選擇 Create bucket (建立儲存貯體)。
Create bucket (建立儲存貯體) 頁面隨即開啟。
-
針對 Bucket name (儲存貯體名稱),輸入儲存貯體的名稱 (例如
tutorial-bucket
)。如需有關在 Amazon S3 中的命名儲存貯體的詳細資訊,請參閱 一般用途儲存貯體命名規則。
-
針對區域,選擇您要儲存貯體所在的 AWS 區域 。
如需有關儲存貯體區域的詳細資訊,請參閱 儲存貯體概觀 。
-
針對 Block Public Access settings for this bucket (此儲存貯體的封鎖公開存取設定),將保留預設設定 (已啟用封鎖所有公開存取)。
除非您需要針對使用案例關閉一或多個設定,否則建議您將所有封鎖公開存取設定保持啟用狀態。如需封鎖公開存取的詳細資訊,請參閱 封鎖對 Amazon S3 儲存體的公開存取權。
-
對於其他設定,請保留預設值。
(選用) 如果您想要為您的特定使用案例設定其他儲存貯體設定,請參閱 建立儲存貯體。
-
選擇建立儲存貯體。
步驟 2:將檔案上傳至 S3 儲存貯體
上傳文字檔案至 S3 儲存貯體。此文字檔案包含您將在本教學課程稍後部分轉換為大寫的原始資料。
例如,您可以上傳 tutorial.txt
檔案,其中包含以下文字:
Amazon S3 Object Lambda Tutorial: You can add your own code to process data retrieved from S3 before returning it to an application.
上傳檔案至儲存貯體
登入 AWS Management Console 並在 Word 開啟 Amazon S3 主控台。 https://console.aws.amazon.com/s3/
-
在左側導覽窗格中,選擇 Buckets (儲存貯體)。
-
在 Buckets (儲存貯體) 清單中,選擇您在步驟 1 中建立的且要將檔案上傳至的儲存貯體的名稱 (例如,
tutorial-bucket
)。 -
在儲存貯體的物件索引標籤上,選擇上傳。
-
在 Upload (上傳) 頁面上的 Files and folders (檔案和資料夾) 下,選擇 Add files (新增檔案)。
-
選擇要上傳的檔案,然後選擇 Open (開啟)。舉例而言,您可以上傳之前提及的
tutorial.txt
檔案範例。 -
選擇上傳。
步驟 3:建立 S3 存取點
若要使用 S3 Object Lambda 存取點來存取和轉換原始資料,您必須建立 S3 存取點,並將其與您在步驟 1 中建立的 S3 儲存貯體建立關聯。存取點必須與您要轉換 AWS 區域 的物件位於相同位置。
在本教學課程稍後的部分,您將使用此存取點做為您 Object Lambda 存取點的支援存取點。
建立存取點
登入 AWS Management Console 並在 Word 開啟 Amazon S3 主控台。 https://console.aws.amazon.com/s3/
-
在左側導覽窗格中,選擇 Access Points (存取點)。
-
在 Access Points (存取點) 頁面上,選擇 Create access point (建立存取點)。
-
在 Access point name (存取點名稱) 欄位中,輸入存取點的名稱 (例如,
tutorial-access-point
)。如需存取點命名的詳細資訊,請參閱「命名 Amazon S3 存取點的規則」。
-
在 Bucket name (儲存貯體名稱) 欄位,輸入您在步驟 1 中建立的儲存貯體的名稱 (例如,
tutorial-bucket
)。S3 將存取點連接至此儲存貯體。(選用) 您可以選擇 Browse S3 (瀏覽 S3) 來瀏覽並搜尋您帳戶中的儲存貯體。如果您選擇 Browse S3 (瀏覽 S3),請先選擇所需的儲存貯體,然後選擇 Choose path (選擇路徑),系統即會在 Bucket name (儲存貯體名稱) 欄位中填入該儲存貯體的名稱。
-
針對 Network origin (網路來源),選擇 Internet (網際網路)。
如需存取點網路來源的詳細資訊,請參閱「建立受限於 Virtual Private Cloud 的存取點」。
-
依預設,存取點的所有封鎖公開存取設定都會開啟。我們建議您將封鎖所有公開存取保持啟用的狀態。
如需詳細資訊,請參閱管理存取點的公開存取。
-
對於所有其他存取點設定,保留預設設定。
(選用) 您可以修改存取點設定,以支援您的使用案例。在本教學課程中,我們建議您保留預設設定。
(選用) 如果您需要管理存取點的存取,您可以指定存取點政策。如需詳細資訊,請參閱存取點政策範例。
-
選擇 Create access point (建立新的存取點)。
步驟 4:建立 Lambda 函數
若要轉換原始資料,請建立一個 Lambda 函數,以與您的 S3 Object Lambda 存取點搭配使用。
子步驟
使用虛擬環境撰寫 Lambda 函數程式碼並建立部署套件
-
在本機機器上,為虛擬環境建立資料夾名稱為
object-lambda
的資料夾,以便用於本教學課程的稍後部分。 -
在
object-lambda
資料夾中,建立具有 Lambda 函數的檔案,而該函數會將原始物件中的所有文字變更為大寫。例如,您可以使用以 Python 撰寫的下列函數。將此函數儲存在名為transform.py
的檔案中。import boto3 import requests from botocore.config import Config # This function capitalizes all text in the original object def lambda_handler(event, context): object_context = event["getObjectContext"] # Get the presigned URL to fetch the requested original object # from S3 s3_url = object_context["inputS3Url"] # Extract the route and request token from the input context request_route = object_context["outputRoute"] request_token = object_context["outputToken"] # Get the original S3 object using the presigned URL response = requests.get(s3_url) original_object = response.content.decode("utf-8") # Transform all text in the original object to uppercase # You can replace it with your custom code based on your use case transformed_object = original_object.upper() # Write object back to S3 Object Lambda s3 = boto3.client('s3', config=Config(signature_version='s3v4')) # The WriteGetObjectResponse API sends the transformed data # back to S3 Object Lambda and then to the user s3.write_get_object_response( Body=transformed_object, RequestRoute=request_route, RequestToken=request_token) # Exit the Lambda function: return the status code return {'status_code': 200}
注意
上述範例 Lambda 函數將整個請求的文件載入到記憶體中,然後予以轉換並將其傳回給用戶端。或者,您可以從 S3 串流對象,以避免將整個文件載入到記憶體中。處理大型物件時,此方法非常有用。如需使用 Object Lambda 存取點串流回應的詳細資訊,請參閱 使用 Lambda 中的 GetObject 請求 中的串流範例。
當您撰寫與 S3 Object Lambda 存取點搭配使用的 Lambda 函數時,函數會以 S3 Object Lambda 提供給 Lambda 函數的輸入事件內容為基礎。事件內容提供了從 S3 Object Lambda 傳遞給 Lambda 事件中提出之請求的相關資訊。它會包含您用來建立 Lambda 函數的參數。
用來建立前述 Lambda 函數的欄位如下所示:
getObjectContext
的欄位意指連線至 Amazon S3 和 S3 Object Lambda 的輸入和輸出詳細資訊。其欄位如下:-
inputS3Url
– Lambda 函數可用來從支援存取點下載原始物件的預先簽章 URL。透過使用預先簽章的 URL,Lambda 函數不需要具有 Amazon S3 讀取許可,即可擷取原始物件,而且只能存取每次調用時處理的物件。 -
outputRoute
– 當 Lambda 函數呼叫以WriteGetObjectResponse
傳回轉換的物件時,新增至 S3 Object Lambda URL 的路由權杖。 -
outputToken
– 當傳回轉換的物件時,S3 Object Lambda 用來將WriteGetObjectResponse
呼叫與原始呼叫者比對的字符。
如需事件內容中的所有欄位的詳細資訊,請參閱 事件內容格式和用量 和 撰寫 S3 Object Lambda 存取點的 Lambda 函數。
-
-
在本機終端機中,輸入下列命令來安裝
virtualenv
套件:python -m pip install virtualenv
-
在您的本機終端機中,開啟您之前建立的
object-lambda
資料夾,然後輸入下列命令以建立並初始化稱為venv
的虛擬環境。python -m virtualenv venv
-
如要啟用虛擬環境,請輸入下列命令來從環境的檔案局中執行
activate
檔案:若為 macOS 使用者,請執行此命令:
source venv/bin/activate
若為 Windows 使用者,請執行此命令:
.\venv\Scripts\activate
現在,您的命令提示字元會變更,以顯示 (venv),表示虛擬環境作用中。
-
若要安裝所需的程式庫,請在
venv
虛擬環境中逐行執行下列命令。這些命令會安裝
lambda_handler
Lambda 函數相依性的更新版本。這些相依性是 AWS SDK for Python (Boto3) 和請求模組。pip3 install boto3
pip3 install requests
-
若要停用虛擬環境,請執行下列命令:
deactivate
-
若要在
object-lambda
目錄根中將含有已安裝程式庫的部署套件建立為名為lambda.zip
的.zip
檔案,請在本機終端機中逐行執行以下命令。提示
下列命令可能需要調整,才能在您的特定環境中運作。例如,程式庫可能會出現在
site-packages
或dist-packages
中,並且第一個資料夾可能是lib
或lib64
。此外,python
資料夾可能會使用不同的 Python 版本命名。若要尋找特定套件,使用pip show
命令。若為 macOS 使用者,請執行這些命令:
cd venv/lib/python3.8/site-packages
zip -r ../../../../lambda.zip .
若為 Windows 使用者,請執行這些命令:
cd .\venv\Lib\site-packages\
powershell Compress-Archive * ../../../lambda.zip
最後一個命令會將部署套件儲存至
object-lambda
目錄的根目錄。 -
將函數程式碼檔案
transform.py
新增至部署套件的根目錄。若為 macOS 使用者,請執行這些命令:
cd ../../../../
zip -g lambda.zip transform.py
若為 Windows 使用者,請執行這些命令:
cd ..\..\..\
powershell Compress-Archive -update transform.py lambda.zip
完成此步驟後,您應具有下列目錄結構:
lambda.zip$ │ transform.py │ __pycache__ | boto3/ │ certifi/ │ pip/ │ requests/ ...
使用執行角色建立 Lambda 函數 (主控台)
登入 AWS Management Console 並在 https://console.aws.amazon.com/lambda/
開啟 AWS Lambda 主控台。 -
在左側導覽窗格中,選擇 Functions (函數)。
-
選擇建立函數。
-
選擇 Author from scratch (從頭開始撰寫)。
-
在基本資訊下,請執行下列動作:
-
針對 函數名稱 ,請輸入
tutorial-object-lambda-function
。 -
針對 Runtime (執行時間),選擇 Python 3.8 或更新版本。
-
-
展開 Change default execution role (變更預設執行角色) 區段。在 Execution role (執行角色) 下,選擇 Create a new role with basic Lambda permissions (建立具備基本 Lambda 許可的新角色)。
在本教學課程稍後的步驟 5 中,您將 AmazonS3ObjectLambdaExecutionRolePolicy 連接至此 Lambda 函數的執行角色。
-
將其餘設定保持為預設值。
-
選擇建立函數。
使用 .zip 檔案封存部署 Lambda 函數程式碼,並設定 Lambda 函數 (主控台)
-
在 AWS Lambda 主控台的 https://console.aws.amazon.com/lambda/
中,選擇左側導覽窗格中的函數。 -
選擇您之前建立的 Lambda 函數 (例如,
tutorial-object-lambda-function
)。 -
在 Lambda 函數的詳細資訊頁面上,選擇 Code (程式碼) 標籤。在 Code Source (程式碼來源) 區段中,選擇 Upload from (上傳來源),然後選擇 .zip file (.zip 檔案)。
-
選擇 Upload (上傳) 以選取您的本機
.zip
檔案。 -
選擇您之前建立的
lambda.zip
檔案,然後選擇 Open (開啟)。 -
選擇 Save (儲存)。
-
在 Runtime settings (執行時間設定) 區段中,選擇 Edit (編輯)。
-
在 Edit runtime settings (編輯執行時間設定) 頁面上,確認 Runtime (執行時間) 已設定為 Python 3.8 或更新版本。
-
若要告知 Lambda 執行時間要叫用 Lambda 函數程式碼中的處理常式方法,請針對 Handler (處理常式) 輸入
transform.lambda_handler
。當您以 Python 設定函式時,處理常式的設定值就是檔案名稱,以及已匯出的處理常式模組名稱,並且以點分隔。例如,
transform.lambda_handler
會呼叫transform.py
檔案中定義的lambda_handler
方法。 -
選擇 Save (儲存)。
-
(選用) 在 Lambda 函數的詳細資訊頁面上,選擇 Configuration (組態) 標籤。在左側導覽窗格中,選擇 General configuration (一般組態),然後選擇 Edit (編輯)。在 Timeout (逾時) 欄位中,輸入
1
分0
秒。將其餘設定設定為預設值,然後選擇 Save (儲存)。Timeout (逾時) 是 Lambda 在停用函數前允許函數執行叫用的時間。預設為 3 秒。S3 Object Lambda 使用的 Lambda 函數的持續時間上限為 60 秒。定價是根據設定的記憶體數量和程式碼執行的時間量而定。
步驟 5:為 Lambda 函數的執行角色設定 IAM 政策
若要讓您的 Lambda 函數提供自訂資料和回應標頭給GetObject
來電者,您的 Lambda 函數的執行角色必須具有 IAM 許可才能呼叫 WriteGetObjectResponse
API。
將 IAM 政策連接至 Lambda 函數角色
-
在 AWS Lambda 主控台的 https://console.aws.amazon.com/lambda/
中,選擇左側導覽窗格中的函數。 -
選擇您在步驟 4 中建立的函數 (例如,
tutorial-object-lambda-function
)。 -
在 Lambda 函數的詳細資訊頁面上,選擇 Configuration (組態) 標籤,然後在左側導覽窗格選擇Permissions (許可)。
-
在 Execution role (執行角色),選擇 Role name (角色名稱)。IAM 主控台隨即開啟。
-
在 Lambda 函數執行角色的 IAM 主控台摘要頁面上,選擇許可索引標籤。然後,從 Add Permissions (新增許可) 功能表中選擇 Attach policies (附加政策)。
-
在 Attach permissions (連接許可) 頁面的搜尋方塊中,輸入
AmazonS3ObjectLambdaExecutionRolePolicy
,以篩選政策清單。選取 AmazonS3ObjectLambdaExecutionRolePolicy 政策名稱旁的核取方塊。 -
選擇連接政策。
步驟 6:建立 S3 Object Lambda 存取點
S3 Object Lambda Access Point 提供直接從 S3 GET 請求叫用 Lambda 函數的彈性,讓函數可以處理從 S3 存取點擷取的資料。建立和設定 S3 Object Lambda Access Point 時,您必須指定要叫用的 Lambda 函數,並以 JSON 格式提供事件內容做為 Lambda 要使用的自訂參數。
建立 S3 Object Lambda 存取點
登入 AWS Management Console 並在 Word 開啟 Amazon S3 主控台。 https://console.aws.amazon.com/s3/
-
在左側的導覽窗格中,選擇 Object Lambda Access Points (Object Lambda 存取點)。
-
在 Object Lambda Access Points (Object Lambda 存取點) 頁面上,選擇 Create Object Lambda access point (建立 Object Lambda 存取點)。
-
對於 Object Lambda 存取點名稱,請輸入您要用於 Object Lambda 存取點的名稱 (例如,
tutorial-object-lambda-accesspoint
)。 -
針對 Supporting Access Point (支援存取點),輸入或瀏覽您在步驟 3 中建立的標準存取點 (例如,
tutorial-access-point
),然後選擇 Choose supporting Access Point (選擇支援存取點)。 -
對於 S3 APIs,若要從 S3 儲存貯體擷取物件,以便 Lambda 函數處理,請選取 GetObject。
-
針對 Invoke Lambda function (叫用 Lambda 函數),您可以為本教學課程選擇以下兩個選項中的任意一個。
-
針對 Lambda 函數版本,選擇 $LATEST (您在步驟 4 中建立的最新版本 Lambda 函數)。
-
(選用) 如果您需要 Lambda 函數識別和處理具有範圍和零件號碼標頭的 GET 請求,請選取 Lambda 函數支援使用範圍的請求,而 Lambda 函數支援使用零件號碼的請求。否則,請清除這兩個核取方塊。
如需如何藉助 S3 Object Lambda 使用範圍或組件編號的詳細資訊,請參閱「使用 Range 以及 partNumber 標頭」。
-
(選用) 在承載下 - 選用,新增 JSON 文字,為您的 Lambda 函數提供額外資訊。
承載是選用的 JSON 文字,您可以提供給 Lambda 函數,作為來自特定 S3 Object Lambda 存取點的所有調用的輸入。若要針對叫用相同 Lambda 函數的不同 Object Lambda 存取點自訂行為,您可以使用不同參數設定承載,藉此擴充 Lambda 函數的靈活性。
如需承載的詳細資訊,請參閱「事件內容格式和用量」。
-
(選用) 對於 請求指標 - 選用,請選擇停用或啟用,將 Amazon S3 監控新增至您的 Object Lambda 存取點。請求指標會以標準 Amazon CloudWatch 費率計費。如需詳細資訊,請參閱 CloudWatch 定價
。 -
在 Object Lambda Access Point policy - optional (Object Lambda 存取點政策 - 選用) 下,請保留預設設定。
(選用) 您可以設定資源政策。此資源政策授予
GetObject
API 使用指定 Object Lambda 存取點的許可。 -
將其餘設定保持為預設值,並選擇 Create Object Lambda Access Point (建立 Object Lambda 存取點)。
步驟 7:檢視轉換後的資料
現在,S3 Object Lambda 已經準備好為您的使用案例轉換資料。在本教學課程中,S3 Object Lambda 會將物件中的所有文字轉換為大寫。
在 S3 Object Lambda 存取點中檢視轉換後的資料
當您請求透過 S3 Object Lambda 存取點擷取檔案時,您會GetObject
API呼叫 S3 Object Lambda。S3 Object Lambda 調用 Lambda 函數來轉換您的資料,然後將轉換的資料傳回為標準 S3 GetObject
API 呼叫的回應。
-
登入 AWS Management Console 並在 Word 開啟 Amazon S3 主控台。 https://console.aws.amazon.com/s3/
-
在左側的導覽窗格中,選擇 Object Lambda Access Points (Object Lambda 存取點)。
-
在 Object Lambda 存取點頁面上,選擇您在步驟 6 中建立的 S3 Object Lambda 存取點 (例如,
tutorial-object-lambda-accesspoint
)。 -
在您的 S3 Object Lambda 存取點的物件標籤上,選取與您在 步驟 2. 中上傳至 S3 儲存貯體的檔案同名的檔案 (例如,
tutorial.txt
)。此檔案應包含所有轉換的資料。
-
若要檢視轉換的資料,選擇 Open (開啟) 或 Download (下載)。
執行 Python 指令碼,以列印原始資料和轉換的資料
您可以將 S3 Object Lambda 與您現有的應用程式搭配使用。若要這麼做,請更新您的應用程式組態,以使用您在步驟 6 中建立的新 S3 Object Lambda Access Point ARN,從 S3 擷取資料。
下列範例 Python 指令碼會同時列印來自 S3 儲存貯體的原始資料,以及來自 S3 Object Lambda 存取點的轉換資料。
-
登入 AWS Management Console 並在 Word 開啟 Amazon S3 主控台。 https://console.aws.amazon.com/s3/
-
在左側的導覽窗格中,選擇 Object Lambda Access Points (Object Lambda 存取點)。
-
在 Object Lambda 存取點頁面上,選擇您在步驟 6 中建立的 S3 Object Lambda 存取點左側的選項按鈕 (例如,
tutorial-object-lambda-accesspoint
)。 -
請選擇 CopyARN (複製)。
-
儲存 ARN 以供稍後使用。
-
在本機機器上編寫 Python 指令碼,以列印來自 S3 儲存貯體的原始資料 (例如,
tutorial.txt
) 和來自 S3 Object Lambda 存取點的轉換後的資料 (例如,tutorial.txt
)。您可使用下列範例指令碼。import boto3 from botocore.config import Config s3 = boto3.client('s3', config=Config(signature_version='s3v4')) def getObject(bucket, key): objectBody = s3.get_object(Bucket = bucket, Key = key) print(objectBody["Body"].read().decode("utf-8")) print("\n") print('Original object from the S3 bucket:') # Replace the two input parameters of getObject() below with # the S3 bucket name that you created in Step 1 and # the name of the file that you uploaded to the S3 bucket in Step 2 getObject("
tutorial-bucket
", "tutorial.txt
") print('Object transformed by S3 Object Lambda:') # Replace the two input parameters of getObject() below with # the ARN of your S3 Object Lambda Access Point that you saved earlier and # the name of the file with the transformed data (which in this case is # the same as the name of the file that you uploaded to the S3 bucket # in Step 2) getObject("arn:aws:s3-object-lambda:us-west-2:111122223333:accesspoint/tutorial-object-lambda-accesspoint
", "tutorial.txt
") -
在您本機機器上使用自訂名稱將您的 Python 指令碼 (例如,
tutorial_print.py
) 儲存至您在步驟 4 中建立的資料夾中 (例如,object-lambda
)。 -
在本機終端機中,從您在步驟 4 中建立的目錄的根中執行下列命令 (例如,
object-lambda
)。python3 tutorial_print.py
您應該透過終端機查看原始資料和轉換的資料 (所有文字均為大寫)。例如,您應該會看到類似下列文字的內容。
Original object from the S3 bucket: Amazon S3 Object Lambda Tutorial: You can add your own code to process data retrieved from S3 before returning it to an application. Object transformed by S3 Object Lambda: AMAZON S3 OBJECT LAMBDA TUTORIAL: YOU CAN ADD YOUR OWN CODE TO PROCESS DATA RETRIEVED FROM S3 BEFORE RETURNING IT TO AN APPLICATION.
步驟 8:清除
如果透過 S3 Object Lambda 轉換的資料僅供學習練習之用,請先刪除已配置的 AWS 資源,如此即不會再產生費用。
子步驟
刪除 Object Lambda 存取點
登入 AWS Management Console 並在 Word 開啟 Amazon S3 主控台。 https://console.aws.amazon.com/s3/
-
在左側的導覽窗格中,選擇 Object Lambda Access Points (Object Lambda 存取點)。
-
在 Object Lambda 存取點頁面上,選擇您在步驟 6 中建立的 S3 Object Lambda 存取點左側的選項按鈕 (例如,
tutorial-object-lambda-accesspoint
)。 -
選擇 刪除 。
-
在出現的文字欄位中,輸入存取點名稱,以確認您要刪除 Object Lambda 存取點,然後選擇刪除。
刪除 S3 存取點
登入 AWS Management Console 並在 Word 開啟 Amazon S3 主控台。 https://console.aws.amazon.com/s3/
-
在左側導覽窗格中,選擇 Access Points (存取點)。
-
導覽至您在步驟 3 中建立的存取點 (例如,
tutorial-access-point
),然後選擇存取點名稱旁的選項按鈕。 -
選擇 刪除 。
-
在出現的文字欄位中,輸入存取點名稱,以確認您要刪除此存取點,然後選擇 Delete (刪除)。
為您的 Lambda 函數刪除執行角色
-
登入 AWS Management Console 並在 https://console.aws.amazon.com/lambda/
開啟 AWS Lambda 主控台。 -
在左側導覽窗格中,選擇 Functions (函數)。
-
選擇您在步驟 4 中建立的函數 (例如,
tutorial-object-lambda-function
)。 -
在 Lambda 函數的詳細資訊頁面上,選擇 Configuration (組態) 標籤,然後在左側導覽窗格選擇Permissions (許可)。
-
在 Execution role (執行角色),選擇 Role name (角色名稱)。IAM 主控台隨即開啟。
-
在 Lambda 函數執行角色的 IAM 主控台摘要頁面上,選擇刪除角色。
-
在 Delete role (刪除角色) 對話方塊中,選擇 Yes, delete (是,刪除)。
刪除 Lambda 函數
-
在 AWS Lambda 主控台的 https://console.aws.amazon.com/lambda/
中,選擇左側導覽窗格中的函數。 -
選取您在步驟 4 中建立的函數名稱的左側的核取方塊 (例如,
tutorial-object-lambda-function
)。 -
選擇動作,然後選擇刪除。
-
在 Delete function (刪除函數) 對話方塊中,選擇 Delete (刪除)。
刪除 CloudWatch 日誌群組
在 CloudWatch 開啟 https://console.aws.amazon.com/cloudwatch/
主控台。 -
在左側導覽窗格中,選擇 Log groups (日誌群組)。
-
尋找您在步驟 4 中建立的且名稱以 Lambda 函數結尾的日誌群組 (例如,
tutorial-object-lambda-function
)。 -
選取日誌群組名稱左側的核取方塊。
-
選擇 Actions (動作),然後選擇 Delete log group(s) (刪除日誌群組)。
-
在 刪除日誌群組 對話方塊中,選擇 刪除 。
刪除 S3 來源儲存貯體中的原始檔案
登入 AWS Management Console 並在 Word 開啟 Amazon S3 主控台。 https://console.aws.amazon.com/s3/
-
在左側導覽窗格中,選擇 Buckets (儲存貯體)。
-
在 Bucket name (儲存貯體名稱) 清單中,選擇您在步驟 2 中將原始檔案上傳到的儲存貯體的名稱 (例如,
tutorial-bucket
)。 -
選取要刪除之物件名稱左側的核取方塊 (例如,
tutorial.txt
)。 -
選擇 刪除 。
-
在 Delete objects (刪除物件) 頁面上的 Permanently delete objects? (永久刪除物件?) 區段中,在文字方塊中輸入
permanently delete
,以確認您要刪除此物件。 -
選擇 Delete objects (刪除物件)。
刪除 S3 來源儲存貯體
登入 AWS Management Console 並在 Word 開啟 Amazon S3 主控台。 https://console.aws.amazon.com/s3/
-
在左側導覽窗格中,選擇 Buckets (儲存貯體)。
-
在 Buckets (儲存貯體) 清單中,選擇您在步驟 1 中建立的儲存貯體名稱旁的選項按鈕 (例如,
tutorial-bucket
)。 -
選擇 刪除 。
-
在 Delete bucket (刪除儲存貯體) 頁面上,在文字欄位中輸入儲存貯體名稱以確認您要刪除該儲存貯體,然後選擇 Delete bucket (刪除儲存貯體)。
刪除 IAM 使用者
登入 AWS Management Console 並在 IAM 開啟 https://console.aws.amazon.com/iam/
主控台。 -
在左側導覽窗格中,選擇 Users (使用者),然後選取您要刪除之使用者名稱旁的核取方塊。
-
在頁面頂端,選擇 Delete (刪除)。
-
在刪除中
user name
? 對話方塊,在文字輸入欄位中輸入使用者名稱,以確認刪除使用者。選擇 刪除 。
後續步驟
完成本教學課程後,您可以自訂使用案例的 Lambda 函數,以修改標準 S3 GET 請求傳回的資料。
以下是 S3 Object Lambda 的常用使用案例清單:
-
遮罩敏感資料以確保安全與合規。
如需詳細資訊,請參閱教學課程:使用 S3 Object Lambda 和 Amazon Comprehend 偵測和編輯 PII 資料。
-
篩選某些資料列,以傳遞特定資訊。
-
使用來自其他服務或資料庫的資訊增強資料。
-
跨資料格式轉換,例如將 XML 轉換為 JSON 以實現應用程式相容性。
-
在下載檔案時壓縮或解壓縮檔案。
-
調整圖像大小和為其浮水印。
如需詳細資訊,請參閱教學課程:使用 S3 Object Lambda 在擷取影像時動態加上浮水印
。 -
實作自訂授權規則以存取資料。
如需 S3 Object Lambda 的詳細資訊,請參閱 使用 S3 Object Lambda 轉換物件。