将 Lambda 与 Amazon MSK 结合使用 - Amazon Lambda
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

将 Lambda 与 Amazon MSK 结合使用

Amazon Managed Streaming for Apache Kafka (Amazon MSK) 是一项完全托管服务,让您能够构建和运行使用 Apache Kafka 处理流数据的应用程序。Amazon MSK 提供控制层面操作,例如,用于创建、更新和删除集群的操作。它支持多个开源版本的 Kafka。

创建 Amazon MSK 集群时,会收到集群所需的托管和连接信息。其中包括 Kafka 集群主机名、主题名称、SASL/SCRAM 用户名和密码以及 bootstrap 服务器主机端口对。

要想支持 Amazon MSK 上的 Kafka 集群,您可能需要创建 Amazon Virtual Private Cloud (Amazon VPC) 网络组件。有关更多信息,请参阅 Amazon 计算博客上的 将 Amazon MSK 用作 Amazon Lambda 的事件源

管理 Amazon MSK 集群的访问权限和权限

Lambda 轮询 Apache Kafka 主题分区以获取新记录并同步调用 Lambda 函数。要更新集群使用的其他 Amazon 资源,您的 Lambda 函数以及您的 Amazon Identity and Access Management (IAM) 用户和角色必须具有执行这些操作的权限。

本页面介绍了如何向 Amazon MSK 集群的 Lambda 和其他用户授予权限。

所需的 Lambda 函数权限

要代表您读取 Amazon MSK 集群中的记录,Lambda 函数的 执行角色 必须拥有权限。您可以将 Amazon 托管策略 AWSLambdaMSKExecutionRole 添加到执行角色,也可以创建自定义策略并添加执行以下操作的权限:

向执行角色添加策略

请按照以下步骤使用 IAM 控制台将 Amazon 托管策略 AWSLambdaMSKExecutionRole 添加到执行角色。

添加 Amazon 托管策略

  1. 在 IAM 控制台中打开 Policies (策略)页

  2. 在搜索框中,输入策略名称 (AWSLambdaMSKExecutionRole)。

  3. 从列表中选择策略,然后依次选择 Policy actions (策略操作) Attach (附加)

  4. 从列表中选择您的执行角色,然后选择 Attach policy (附加策略)

使用 IAM 策略授予用户访问权限

默认情况下,IAM 用户和角色没有执行 Amazon MSK API 操作的权限。要向组织或账户中的用户授予访问权限,您可能需要一个基于身份的策略。有关更多信息,请参阅 Amazon Managed Streaming for Apache Kafka 开发人员指南 中的 Amazon Managed Streaming for Apache Kafka 基于身份的策略示例

使用 SASL/SCRAM 身份验证

Amazon MSK支持 Simple Authentication and Security Layer/Salted Challenge Response Authentication Mechanism (SASL/SCRAM) 身份验证。您可以使用 Amazon Secrets Manager 密钥来设置用户名和密码身份验证,从而实现对 Amazon MSK 集群访问权限的控制。有关更多信息,请参阅 Amazon Managed Streaming for Apache Kafka 开发人员指南 中的借助 Amazon Secrets Manager 来使用用户名和密码身份验证

将 Amazon MSK 集群添加为事件源

当 Apache Kafka 集群配置为事件源时,您可以使用 Lambda 函数处理集群中的记录。要创建事件源映射,您可以使用 Lambda 控制台、Amazon 开发工具包Amazon Command Line Interface (Amazon CLI) 将 Kafka 集群添加为 Lambda 函数触发器

本节介绍如何使用 Lambda 控制台或 Amazon CLI 将 Kafka 集群和主题添加为函数触发器。

先决条件

VPC 配置

要获取 Amazon MSK 代理中的 Apache Kafka 记录,Lambda 必须有权访问与 MSK 集群关联的 Amazon Virtual Private Cloud (Amazon VPC) 资源。要满足 Amazon VPC 访问要求,请执行以下操作之一:

您的 Amazon VPC 安全组必须(至少)使用以下规则进行配置:

  • 入站规则 – 允许指定为事件源的安全组的所有端口上的所有流量传输。

  • 出站规则 – 允许所有目标的所有端口上的所有流量传输。

注意

Amazon VPC 配置可通过 Amazon MSK API 发现,无需在 create-event-source-mapping 设置中配置。

使用 Lambda 控制台启动 Amazon MSK 集群

按照以下步骤将 Amazon MSK 集群和 Kafka 主题添加为 Lambda 函数的触发器。

将 MSK 触发器添加到 Lambda 函数(控制台)

  1. 打开 Lambda 控制台的“函数”页面

  2. 选择 Lambda 函数的名称。

  3. Function overview (函数概览) 下,选择 Add trigger (添加触发器)

  4. Trigger configuration (触发器配置)下,选择 MSK 触发器类型。

  5. 配置其余选项,然后选择 Add (添加)

使用 Amazon CLI 添加 Amazon MSK 集群

使用以下示例 Amazon CLI 命令为 Lambda 函数创建和查看 Amazon MSK 触发器。

使用 Amazon CLI 创建触发器

以下示例使用 create-event-source-mapping Amazon CLI 命令将名为 my-kafka-function 的 Lambda 函数映射到名为 AWSKafkaTopic 的 Kafka 主题。 将主题的起始位置设置为 latest

aws lambda create-event-source-mapping --event-source-arn arn:aws-cn:kafka:us-west-2:arn:aws-cn:kafka:us-west-2:111111111111:cluster/my-cluster/fc2f5bdf-fd1b-45ad-85dd-15b4a5a6247e-2 --topics AWSKafkaTopic --starting-position LATEST --function-name my-kafka-function

有关更多信息,请参阅 CreateEventSourceMapping API 参考文档。

使用 Amazon CLI 查看状态

以下示例使用 get-event-source-mapping Amazon CLI 命令描述您创建的事件源映射的状态。

aws lambda get-event-source-mapping --uuid 6d9bce8e-836b-442c-8070-74e77903c815