為自我管理的 Apache Kafka 事件來源建立 Lambda 事件來源映射
若要建立事件來源映射,可以使用 Lambda 主控台、AWS Command Line Interface (CLI) 或 AWS SDK
下列主控台步驟會將自我管理的 Apache Kafka 叢集新增為 Lambda 函式的觸發程序。在此之下,此操作會建立事件來源映射資源。
必要條件
-
自我管理 Apache Kafka 叢集。Lambda 支援 Apache Kafka 版本 0.10.1.0 及更高版本。
-
具有存取自我管理 Kafka 叢集所用 AWS 資源許可的執行角色。
新增自我管理 Kafka 叢集 (主控台)
按照下列步驟,將您的 Apache Kafka 叢集和 Kafka 主題新增為 Lambda 函數的觸發條件。
將 Apache Kafka 觸發條件新增至您的 Lambda 函數 (主控台)
-
開啟 Lambda 主控台中的 函數頁面
。 -
選擇 Lambda 函數的名稱。
-
在函數概觀下,選擇新增觸發條件。
-
在 Trigger configuration (觸發條件) 下,執行下列動作:
-
選擇 Apache Kafka 觸發條件類型。
-
對於 Bootstrap 伺服器,輸入叢集中 Kafka 代理程式的主機和連接埠對地址,然後選擇 新增。針對叢集中的每個 Kafka 代理程式重複此操作。
-
對於 Topic name (主題名稱),輸入用於在叢集中存儲記錄之 Kafka 主題的名稱。
-
(選用) 對於 批次大小,輸入單一批次中接收的最大記錄數。
-
對於 Batch window (批次時段),輸入 Lambda 調用函數之前收集記錄所花費的最長秒數。
-
(選用) 對於取用者群組 ID ,輸入要加入的 Kafka 取用者群組 ID。
-
(選用) 在開始位置欄位中,選擇最新,可從最新記錄開始讀取串流;選擇水平修剪,可從最早的可用記錄開始;選擇在時間戳記,可指定開始讀取的時間戳記。
-
(選用) 若為 VPC,請為您的 Kafka 叢集選擇 Amazon VPC。然後,選擇 VPC 子網路 和 VPC 安全群組 。
如果只有您的 VPC 內的使用者會存取代理程式,則必須要有此設定。
-
(選用) 對於 身分驗證 ,選擇 新增 ,然後執行下列動作:
-
選擇您叢集中 Kafka 代理程式的存取或身分驗證協定。
-
如果您的 Kafka 代理程式使用 SASL/PLAIN 身分驗證,請選擇 BASIC_AUTH。
-
如果您的代理程式使用 SASL/SCRAM 身分驗證,請選擇其中一種 SASL_SCRAM 通訊協定。
-
如果您要設定 mTLS 身分驗證,請選擇 CLIENT_CERTIFICATE_TLS_AUTH 通訊協定。
-
-
若為 SASL/SCRAM 或 mTLS 身分驗證,請選擇包含 Kafka 叢集憑證的 Secrets Manager 機密金鑰。
-
-
(選用) 若為 加密 ,如果您的 Kafka 代理程式使用私有憑證授權機構簽署的憑證,請選擇包含 Kafka 代理程式用於 TLS 加密的根憑證授權機構憑證的 Secrets Manager 機密。
此設定適用於 SASL/SCRAM 或 SASL/PLAIN 的 TLS 加密,也適用於 mTLS 身分驗證。
-
若要建立處於停用狀態的觸發條件以進行測試 (建議做法),請取消勾選 啟用觸發條件 。或者,若要立即啟用觸發條件,請選取 啟用觸發條件。
-
-
若要建立觸發條件,請選擇 新增 。
新增自我管理 Kafka 叢集 (AWS CLI)
使用下列範例 AWS CLI 命令,建立和檢視 Lambda 函數的自我管理 Apache Kafka 觸發條件。
使用 SASL/SCRAM
如果 Kafka 使用者透過網際網路存取您的 Kafka 代理程式,請指定針對 SASL/SCRAM 身分驗證建立的 Secrets Manager 機密。以下範例使用 create-event-source-mappingmy-kafka-function 的 Lambda 函數映射到名為 AWSKafkaTopic 的 Kafka 主題。
aws lambda create-event-source-mapping \ --topicsAWSKafkaTopic\ --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
如果只有您 VPC 內的 Kafka 使用者可存取您的 Kafka 代理程式,則必須指定您的 VPC、子網路和 VPC 安全群組。以下範例使用 create-event-source-mappingmy-kafka-function 的 Lambda 函數映射到名為 AWSKafkaTopic 的 Kafka 主題。
aws lambda create-event-source-mapping \ --topicsAWSKafkaTopic\ --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 檢視狀態
以下範例使用 get-event-source-mapping
aws lambda get-event-source-mapping --uuiddh38738e-992b-343a-1077-3478934hjkfd7