使用 處理 DynamoDB 事件 AWS SAM - AWS Serverless Application Model

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

使用 處理 DynamoDB 事件 AWS SAM

透過此範例應用程式,您可以建置在概觀和 Quick Start 指南中學到的內容,並安裝另一個範例應用程式。此應用程式包含由 DynamoDB 資料表事件來源調用的 Lambda 函數。Lambda 函數非常簡單,它會記錄透過事件來源訊息傳入的資料。

本練習說明如何模擬在叫用 Lambda 函數時傳遞給 Lambda 函數的事件來源訊息。

開始之前

請確定您已在 中完成必要的設定安裝 AWS SAMCLI

步驟 1:初始化應用程式

在本節中,您會下載應用程式套件,其中包含 AWS SAM 範本和應用程式程式碼。

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

    sam init \ --location gh:aws-samples/cookiecutter-aws-sam-dynamodb-python \ --no-input

    請注意,在上述命令gh:中, 會擴展至 GitHub url https://github.com/

  2. 檢閱命令所建立目錄的內容 (dynamodb_event_reader/):

    • template.yaml – 定義讀取 DynamoDB 應用程式所需的兩個 AWS 資源:Lambda 函數和 DynamoDB 資料表。範本也會定義兩個資源之間的對應。

    • read_dynamodb_event/ 目錄 – 包含 DynamoDB 應用程式碼。

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

針對本機測試,請使用 AWS SAMCLI產生範例 DynamoDB 事件並叫用 Lambda 函數:

sam local generate-event dynamodb update | sam local invoke --event - ReadDynamoDBEvent

generate-event 命令會建立測試事件來源訊息,類似於當所有元件部署到 AWS 雲端時所建立的訊息。此事件來源訊息會輸送至 Lambda 函數 ReadDynamoDBEvent。

根據 中的原始程式碼,確認預期訊息已列印至 主控台app.py

步驟 3:封裝應用程式

在本機測試應用程式後,您可以使用 AWS SAMCLI來建立部署套件,用來將應用程式部署至 AWS 雲端。

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

    aws s3 mb s3://bucketname
  2. 在命令提示中執行下列 package CLI 命令來建立部署套件。

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

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

步驟 4:部署應用程式

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

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

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

    在 命令中, --capabilities 參數允許 AWS CloudFormation 建立 IAM 角色。

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

在 AWS 雲端中測試無伺服器應用程式
  1. 開啟 DynamoDB 主控台。

  2. 將記錄插入您剛建立的資料表。

  3. 前往資料表的指標索引標籤,然後選擇檢視所有 CloudWatch 指標。在 CloudWatch 主控台中,選擇日誌來檢視日誌輸出。

後續步驟

若要繼續了解 AWS SAM,請參閱下列資源:

  • AWS SAM 範例應用程式 – AWS SAM GitHub 儲存庫包含其他範例應用程式,供您下載和實驗。

  • Serverless Land – 將無伺服器模式、程式碼範例和學習資源集合在一起的網站,專門用於 AWS SAM 應用程式。