處理 Amazon S3 事件 AWS SAM - AWS Serverless Application Model

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

處理 Amazon S3 事件 AWS SAM

使用此示例應用程序,您可以基於您在前面示例中學到的內容,並安裝更複雜的應用程序。此應用程式包含由 Amazon S3 物件上傳事件來源叫用的 Lambda 函數組成。本練習說明如何透過 Lambda 函數存取 AWS 資源和進行 AWS 服務呼叫。

此範例無伺服器應用程式會處理 Amazon S3 中的物件建立事件。對於上傳到儲存貯體的每個映像,Amazon S3 會偵測物件建立的事件並叫用 Lambda 函數。Lambda 函數會叫用 Amazon Rekognition 來偵測影像中的文字。然後,它會將 Amazon Rekognition 傳回的結果儲存在 DynamoDB 表格中。

注意

在此範例應用程式中,執行步驟的順序與先前範例略有不同。原因是此範例需要建立 AWS 資源並設定IAM權限,然後才能在本機測試 Lambda 函數。我們將利用創 AWS CloudFormation 建資源並為您配置權限。否則,您需要手動執行此操作,然後才能在本機測試 Lambda 函數。

由於此範例較為複雜,因此在執行此範例之前,請確定您已熟悉先前的範例應用程式的安裝方式。

開始之前

請確定您已在中完成所需的設定安裝 AWS SAM CLI

步驟 1:初始化應用程序

在本節中,您將下載範例應用程式,該應用程式包含 AWS SAM 範本和應用程式程式碼。

初始化應用程式
  1. 在命令提示字元中執行下列 AWS SAMCLI命令。

    sam init \ --location https://github.com/aws-samples/cookiecutter-aws-sam-s3-rekognition-dynamodb-python \ --no-input
  2. 檢閱命令所建立目錄的內容 (aws_sam_ocr/):

    • template.yaml— 定義 Amazon S3 應用程式需要的三個 AWS 資源:Lambda 函數、一個 Amazon S3 儲存貯體和一個 DynamoDB 表。該模板還定義了這些資源之間的映射和權限。

    • src/目錄 — 包含 Amazon S3 應用程式程式碼。

    • SampleEvent.json— 範例事件來源,用於本機測試。

步驟 2:打 Package 應用程序

在本機測試此應用程式之前,您必須使用建立部署套件,以便將應用程式部署到 AWS 雲端。 AWS SAMCLI此部署會建立必要的 AWS 資源和權限,以便在本機測試應用程式。

若要建立 Lambda 部署套件
  1. 在要儲存封裝程式碼的位置建立一個 S3 儲存貯體。如果您想使用現有的 S3 儲存貯體,請跳過此步驟。

    aws s3 mb s3://bucketname
  2. 在命令提示字元中執行下列packageCLI命令,以建立部署套件。

    sam package \ --template-file template.yaml \ --output-template-file packaged.yaml \ --s3-bucket bucketname

    當您在下一個步驟中部署應用程式時packaged.yaml,請指定新的範本檔案。

步驟 3:部署應用程式

現在您已經建立了部署套件,您可以使用它將應用程式部署到 AWS 雲端。然後,您可以在 AWS 雲端中呼叫應用程式來測試應用程式。

將無伺服器應用程式部署到雲端 AWS
  • 在中 AWS SAMCLI,使用命deploy令部署您在範本中定義的所有資源。

    sam deploy \ --template-file packaged.yaml \ --stack-name aws-sam-ocr \ --capabilities CAPABILITY_IAM \ --region us-east-1

    在命令中,該--capabilities參數允許創 AWS CloudFormation 建一個IAM角色。

    AWS CloudFormation 會建立範本中定義的 AWS 資源。您可以在 AWS CloudFormation 主控台中存取這些資源的名稱。

在雲端測試無伺服器應用程式 AWS
  1. 將映像上傳到您為此範例應用程式建立的 Amazon S3 儲存貯體。

  2. 開啟 DynamoDB 主控台並尋找已建立的資料表。如需 Amazon Rekognition 傳回的結果,請參閱表格。

  3. 確認 DynamoDB 表格包含新記錄,其中包含在上傳的映像中找到的 Amazon Rekognition 文字。

步驟 4:在本機測試應用程式

您必須先擷取由建立的 AWS 資源名稱,才能在本機測試應用程式 AWS CloudFormation。

  • 從中擷取 Amazon S3 金鑰名稱和儲存貯體名稱 AWS CloudFormation。透過取代物件索引鍵、值區名稱和值區的值來修改SampleEvent.json檔案ARN。

  • 擷取 DynamoDB 料表名稱。此名稱用於以下sam local invoke命令。

使 AWS SAMCLI用產生 Amazon S3 事件範例並叫用 Lambda 函數:

TABLE_NAME=Table name obtained from AWS CloudFormation console sam local invoke --event SampleEvent.json

TABLE_NAME=部分會設定 DynamoDB 資料表名稱。此--event參數會指定包含要傳遞至 Lambda 函數之測試事件訊息的檔案。

您現在可以根據 Amazon Rekognition 傳回的結果,確認已建立預期的 DynamoDB 記錄。

後續步驟

該 AWS SAM GitHub 存儲庫包含其他示例應用程序供您下載和實驗。若要存取此儲存庫,請參閱AWS SAM 範例應用程式