

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

# 使用 Lambda 處理 DynamoDB 記錄
<a name="services-dynamodb-eventsourcemapping"></a>

建立事件來源映射，指示 Lambda 從您的串流傳送記錄至 Lambda 函數。您可以建立多個事件來源映射，來使用多個 Lambda 函數處理相同資料，或使用單一函數處理來自多個串流的項目。

您可以設定事件來源映射，以處理來自不同 AWS 帳戶中的串流的記錄。如需詳細資訊，請參閱 [建立跨帳戶事件來源映射](#services-dynamodb-eventsourcemapping-cross-account)。

若要將函數設定為從 DynamoDB Streams 讀取，請將 [AWSLambdaDynamoDBExecutionRole](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaDynamoDBExecutionRole.html) AWS 受管政策連接至您的執行角色，然後建立 **DynamoDB** 觸發。

**若要新增許可並建立觸發條件**

1. 開啟 Lambda 主控台中的 [函數頁面](https://console.aws.amazon.com/lambda/home#/functions)。

1. 選擇函數的名稱。

1. 依序選擇 **Configuration** (組態) 索引標籤和 **Permissions** (許可)。

1. 在**角色名稱**下面，選擇執行角色連結。此連結會在 IAM 主控台中開啟該角色。  
![\[\]](http://docs.aws.amazon.com/zh_tw/lambda/latest/dg/images/execution-role.png)

1. 選擇**新增許可**，然後選擇**連接政策**。  
![\[\]](http://docs.aws.amazon.com/zh_tw/lambda/latest/dg/images/attach-policies.png)

1. 在搜尋欄位中輸入 `AWSLambdaDynamoDBExecutionRole`。將此政策新增至您的執行角色。這是 AWS 受管政策，其中包含函數從 DynamoDB 串流讀取所需的許可。如需此政策的詳細資訊，請參閱《AWS 受管政策參考》**中的 [AWSLambdaDynamoDBExecutionRole](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaDynamoDBExecutionRole.html)。

1. 在 Lambda 主控台中返回您的 Lambda 函數。在**函數概觀**下，選擇**新增觸發條件**。  
![\[\]](http://docs.aws.amazon.com/zh_tw/lambda/latest/dg/images/add-trigger.png)

1. 選擇觸發條件類型。

1. 設定需要的選項，然後選擇**新增**。

Lambda 支援 DynamoDB 事件來源的下列選項：

**事件來源選項**
+ **DynamoDB 資料表** - 從中讀取記錄的 DynamoDB 資料表。
+ **批次大小** – 每個批次中要傳送至函數的記錄數量，最高為 10,000。Lambda 會將批次中所有記錄以單一呼叫傳送至函數，前提是事件的總大小不超過同步調用的[酬載限制](gettingstarted-limits.md) (6 MB)。
+ **批次間隔** - 指定調用函數前收集記錄的最長時間 (秒)。
+ **開始位置** - 只處理新記錄，或所有現有的記錄。
  + **最新** - 處理已新增到串流的記錄。
  + **水平修剪** - 處理所有在串流中的記錄。

  處理任何現有的記錄後，該函式已跟上進度並持續處理新的記錄。
+ **故障目的地** - 用於無法處理之記錄的標準 SQS 佇列或標準 SNS 主題。當 Lambda 捨棄太舊或已耗盡所有重試的一批記錄時，Lambda 會將該批次的詳細資料傳送至此佇列或主題。
+ **重試嘗試** - 當函數傳回錯誤時，Lambda 重試的次數上限。這不適用於服務錯誤或調節，其中批次並沒有到達函數。
+ **記錄最大存留期** - Lambda 傳送至函數之記錄的最大存留期。
+ **在錯誤時分割批次** - 當函數傳回錯誤時，先將批次分割為兩個，再進行重試。您原始的批次大小設定仍會維持不變。
+ **每個碎片的並行批次** - 同時處理來自同一個碎片的多個批次。
+ **已啟用** - 設定為 true 可啟用事件來源映射。設定為 false 以停止處理記錄。Lambda 會追蹤上次處理的進度，並在重新啟用映射時從該時間點恢復處理。

**注意**  
對於由 DynamoDB 觸發條件中的 Lambda 調用的 GetRecords API 呼叫，您不需要付費。

若要稍後管理事件來源的組態，請選擇設計工具中的觸發。

## 建立跨帳戶事件來源映射
<a name="services-dynamodb-eventsourcemapping-cross-account"></a>

Amazon DynamoDB 現在支援以[資源為基礎的政策](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-resource-based.html)。使用此功能，您可以在另一個帳戶中 AWS 帳戶 使用 Lambda 函數處理來自 DynamoDB 串流的資料。

若要使用不同 DynamoDB 串流為您的 Lambda 函數建立事件來源映射 AWS 帳戶，您必須使用資源型政策來設定串流，以授予 Lambda 函數讀取記錄的許可。若要了解如何設定串流以進行跨帳戶存取，請參閱《*Amazon DynamoDB 開發人員指南*》中的[使用跨帳戶 Lambda 函數共用存取權](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-cross-account-access.html#rbac-analyze-cross-account-lambda-access)。

使用為 Lambda 函數提供必要許可的資源型政策設定串流後，請使用跨帳戶串流 ARN 建立事件來源映射。您可以在跨帳戶 DynamoDB 主控台的資料表**匯出和串流**索引標籤下找到串流 ARN。

使用 Lambda 主控台時，請將串流 ARN 直接貼到事件來源映射建立頁面的 DynamoDB 資料表輸入欄位。

 **注意：**不支援跨區域觸發。