配置 Lambda 执行角色权限 - Amazon Lambda
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

配置 Lambda 执行角色权限

要访问 Amazon MSK 集群,您的函数和事件源映射需要具有执行各种 Amazon MSK API 操作的权限。为函数的执行角色添加这些权限。如果您的用户需要访问权限,请将所需权限添加到用户或角色的身份策略中。

要涵盖所有必需权限,您可以将 AWSLambdaMSKExecutionRole 托管策略附加到您的执行角色。或者,您可以手动添加每个权限。

基本权限

您的 Lambda 函数执行角色必须具有以下所需权限才能在 CloudWatch Logs 中创建和存储日志。

集群访问权限

要使 Lambda 能够代表您访问您的 Amazon MSK 集群,您的 Lambda 函数执行角色必须具有以下权限。

您只需要添加 kafka:DescribeClusterkafka:DescribeClusterV2 中的一个。对于预置的 Amazon MSK 集群,任何一个权限均有效。对于无服务器 Amazon MSK 集群,必须使用 kafka:DescribeClusterV2

注意

Lambda 最终计划从 AWSLambdaMSKExecutionRole 托管策略中移除 kafka:DescribeCluster 权限。如果您使用此策略,请将任何使用 kafka:DescribeCluster 的应用程序迁移为使用 kafka:DescribeClusterV2

VPC 权限

如果您的 Amazon MSK 集群位于 VPC 的私有子网中,则您的 Lambda 函数必须具有额外的权限才能访问 Amazon VPC 资源。这些包括您的 VPC、子网、安全组和网络接口。您的函数的执行角色必须具有以下权限:

可选权限

您的 Lambda 函数还可能需要权限来:

  • 访问您的 SCRAM 密钥(如果使用 SASL/SCRAM 身份验证)。

  • 如果您使用 SASL/SCRAM 或 mTLS 身份验证,则请描述您的 Secrets Manager 密钥。

  • 如果您想加密筛选条件,则请访问您的 Amazon KMS 客户托管式密钥。

这些密钥对应以下所需权限:

此外,如果您想将失败调用的记录发送到失败时的目标,则需要根据目标类型获得以下权限:

常见身份验证和授权错误故障排除

如果缺少使用来自 Amazon MSK 集群的数据所需的任何权限,Lambda 会在 LastProcessingResult 下的事件源映射中显示以下错误消息。有关每种支持的身份验证方法的更多信息,请参阅配置集群身份验证方法

集群未能授权 Lambda

对于 SASL/SCRAM 或 mTLS,此错误表明提供的用户不具有以下所有必需的 Kafka 访问控制列表(ACL)权限:

  • DescribeConfigs 集群

  • 描述组

  • 读取组

  • 描述主题

  • 读取主题

对于 IAM 访问控制,此错误表明函数的执行角色缺少访问组或主题所需的一个或多个权限。查看此页面上所需权限的列表。

当您使用所需的 Kafka 集群权限创建 Kafka ACL 或 IAM policy 时,请将主题和组指定为资源。主题名称必须与事件源映射中的主题一致。组名称必须与事件源映射的 UUID 一致。

向执行角色添加所需的权限后,更改可能需要几分钟才会生效。

SASL 身份验证失败

对于 SASL/SCRAM,此错误表明提供的用户名和密码无效。

对于 IAM 访问控制,此错误表明执行角色缺少 MSK 集群的 kafka-cluster:Connect 权限。将此权限添加到该角色并将集群的 Amazon Resource Name(ARN)指定为资源。

您可能会看到此错误间歇性发生。在 TCP 连接数超过 Amazon MSK 服务限额后,集群将拒绝连接。Lambda 会退回并重试,直到连接成功为止。在 Lambda 连接到集群并轮询记录后,最后的处理结果将更改为 OK

服务器未能通过 Lambda 的身份验证

此错误表明 Amazon MSK Kafka 未能通过 Lambda 的身份验证。出现此错误的可能原因如下:

  • 您没有为 mTLS 身份验证提供客户端证书。

  • 您提供了客户端证书,但未将代理配置为使用 mTLS。

  • 代理不信任客户端证书。

提供的证书或私有密钥无效

此错误表明 Amazon MSK 使用者无法使用提供的证书或私有密钥。确保证书和密钥使用 PEM 格式,并且私有密钥加密使用 PBES1 算法。参阅 配置 mTLS 密钥 了解更多信息。