

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

# 為自我管理的 Apache Kafka 事件來源建立 Lambda 事件來源映射
<a name="kafka-esm-create"></a>

若要建立事件來源映射，可以使用 Lambda 主控台、[AWS Command Line Interface (CLI)](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) 或 [AWS SDK](https://aws.amazon.com/getting-started/tools-sdks/)。

下列主控台步驟會將自我管理的 Apache Kafka 叢集新增為 Lambda 函式的觸發程序。在此之下，此操作會建立事件來源映射資源。

## 先決條件
<a name="kafka-esm-prereqs"></a>
+ 自我管理 Apache Kafka 叢集。Lambda 支援 Apache Kafka 版本 0.10.1.0 及更高版本。
+ 具有許可的[執行角色](lambda-intro-execution-role.md)，可存取自我管理的 Kafka 叢集使用 AWS 的資源。

## 新增自我管理 Kafka 叢集 (主控台)
<a name="kafka-esm-console"></a>

按照下列步驟，將您的 Apache Kafka 叢集和 Kafka 主題新增為 Lambda 函數的觸發條件。

**將 Apache Kafka 觸發條件新增至您的 Lambda 函數 (主控台)**

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

1. 選擇 Lambda 函數的名稱。

1. 在**函數概觀**下，選擇**新增觸發條件**。

1. 在 **Trigger configuration (觸發條件)** 下，執行下列動作：

   1. 選擇 **Apache Kafka** 觸發條件類型。

   1. 對於 **Bootstrap 伺服器**，輸入叢集中 Kafka 代理程式的主機和連接埠對地址，然後選擇 **新增**。針對叢集中的每個 Kafka 代理程式重複此操作。

   1. 對於 **Topic name (主題名稱)**，輸入用於在叢集中存儲記錄之 Kafka 主題的名稱。

   1. 如果您設定佈建模式，請輸入**最小值事件輪詢器**的值、**最大值事件輪詢器**的值，以及 PollerGroupName 的選用值，以指定相同事件來源 VPC 內多個 ESMs 的分組。

   1. (選用) 對於 **批次大小**，輸入單一批次中接收的最大記錄數。

   1. 對於 **Batch window** (批次時段)，輸入 Lambda 調用函數之前收集記錄所花費的最長秒數。

   1. (選用) 對於**取用者群組 ID** ，輸入要加入的 Kafka 取用者群組 ID。

   1. (選用) 在**開始位置**欄位中，選擇**最新**，可從最新記錄開始讀取串流；選擇**水平修剪**，可從最早的可用記錄開始；選擇**在時間戳記**，可指定開始讀取的時間戳記。

   1. (選用) 若為 **VPC**，請為您的 Kafka 叢集選擇 Amazon VPC。然後，選擇 **VPC 子網路** 和 **VPC 安全群組** 。

      如果只有您的 VPC 內的使用者會存取代理程式，則必須要有此設定。

      

   1. (選用) 對於 **身分驗證** ，選擇 **新增** ，然後執行下列動作：

      1. 選擇您叢集中 Kafka 代理程式的存取或身分驗證協定。
         + 如果您的 Kafka 代理程式使用 SASL/PLAIN 身分驗證，請選擇 **BASIC\$1AUTH**。
         + 如果您的代理程式使用 SASL/SCRAM 身分驗證，請選擇其中一種 **SASL\$1SCRAM** 通訊協定。
         + 如果您要設定 mTLS 身分驗證，請選擇 **CLIENT\$1CERTIFICATE\$1TLS\$1AUTH** 通訊協定。

      1. 若為 SASL/SCRAM 或 mTLS 身分驗證，請選擇包含 Kafka 叢集憑證的 Secrets Manager 機密金鑰。

   1. (選用) 若為 **加密** ，如果您的 Kafka 代理程式使用私有憑證授權機構簽署的憑證，請選擇包含 Kafka 代理程式用於 TLS 加密的根憑證授權機構憑證的 Secrets Manager 機密。

      此設定適用於 SASL/SCRAM 或 SASL/PLAIN 的 TLS 加密，也適用於 mTLS 身分驗證。

   1. 若要建立處於停用狀態的觸發條件以進行測試 (建議做法)，請取消勾選 **啟用觸發條件** 。或者，若要立即啟用觸發條件，請選取 **啟用觸發條件**。

1. 若要建立觸發條件，請選擇 **新增** 。

## 新增自我管理 Kafka 叢集 (AWS CLI)
<a name="kafka-esm-cli"></a>

使用下列範例 AWS CLI 命令來建立和檢視 Lambda 函數的自我管理 Apache Kafka 觸發條件。

### 使用 SASL/SCRAM
<a name="kafka-esm-cli-create"></a>

如果 Kafka 使用者透過網際網路存取您的 Kafka 代理程式，請指定針對 SASL/SCRAM 身分驗證建立的 Secrets Manager 機密。下列範例使用 [create-event-source-mapping](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-event-source-mapping.html) AWS CLI 命令，將名為 的 Lambda 函數映射`my-kafka-function`至名為 的 Kafka 主題`AWSKafkaTopic`。

```
aws lambda create-event-source-mapping \ 
  --topics AWSKafkaTopic \
  --source-access-configuration Type=SASL_SCRAM_512_AUTH,URI=arn:aws:secretsmanager:us-east-1:111122223333:secret:MyBrokerSecretName \
  --function-name arn:aws:lambda:us-east-1:111122223333:function:my-kafka-function \
  --self-managed-event-source '{"Endpoints":{"KAFKA_BOOTSTRAP_SERVERS":["abc3.xyz.com:9092", "abc2.xyz.com:9092"]}}'
```

### 使用 VPC
<a name="kafka-esm-cli-create-vpc"></a>

如果只有您 VPC 內的 Kafka 使用者可存取您的 Kafka 代理程式，則必須指定您的 VPC、子網路和 VPC 安全群組。下列範例使用 [create-event-source-mapping](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-event-source-mapping.html) AWS CLI 命令，將名為 的 Lambda 函數映射`my-kafka-function`至名為 的 Kafka 主題`AWSKafkaTopic`。

```
aws lambda create-event-source-mapping \ 
  --topics AWSKafkaTopic \
  --source-access-configuration '[{"Type": "VPC_SUBNET", "URI": "subnet:subnet-0011001100"}, {"Type": "VPC_SUBNET", "URI": "subnet:subnet-0022002200"}, {"Type": "VPC_SECURITY_GROUP", "URI": "security_group:sg-0123456789"}]' \
  --function-name arn:aws:lambda:us-east-1:111122223333:function:my-kafka-function \
  --self-managed-event-source '{"Endpoints":{"KAFKA_BOOTSTRAP_SERVERS":["abc3.xyz.com:9092", "abc2.xyz.com:9092"]}}'
```

### 使用 檢視狀態 AWS CLI
<a name="kafka-esm-cli-view"></a>

下列範例使用 [get-event-source-mapping](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/get-event-source-mapping.html) AWS CLI 命令來描述您建立的事件來源映射狀態。

```
aws lambda get-event-source-mapping
              --uuid dh38738e-992b-343a-1077-3478934hjkfd7
```