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

为 Amazon MSK 事件源映射配置 Lambda 权限

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

AWSLambdaMSKExecutionRole 托管策略包含 Amazon MSK Lambda 事件源映射所需的最低权限。要简化权限流程,您可以执行以下操作:

  • AWSLambdaMSKExecutionRole 托管策略附加到您的执行角色。

  • 让 Lambda 控制台为您生成权限。当您在控制台中创建 Amazon MSK 事件源映射时,Lambda 会评估您的执行角色,并在发现任何权限缺失的情况时向您发出提醒。选择生成权限以自动更新您的执行角色。如果您手动创建或修改了执行角色的策略,或者这些策略被附加到多个角色上,则此方法将不起作用。请注意,在使用高级功能(例如失败时的目标Amazon Glue 架构注册表)时,您的执行角色可能仍需要额外的权限。

所需的权限

您的 Lambda 函数执行角色必须具备以下所需的 Amazon MSK 事件源映射权限。这些权限包含在 AWSLambdaMSKExecutionRole 托管策略中。

CloudWatch Logs 权限

以下权限使 Lambda 能够在 Amazon CloudWatch Logs 中创建和存储日志。

MSK 集群权限

以下权限使 Lambda 能够代表您访问 Amazon MSK 集群:

我们建议使用 kafka:DescribeClusterV2 而不是 kafka:DescribeCluster。v2 权限适用于预置集群和无服务器 Amazon MSK 集群。您的策略中只需其中一项权限即可。

VPC 权限

以下权限使 Lambda 能够在连接到您的 Amazon MSK 集群时创建和管理网络接口:

可选权限

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

  • 访问跨账户的 Amazon MSK 集群。要进行跨账户事件源映射,您在执行角色中需要 kafka:DescribeVpcConnection。创建跨账户事件源映射的 IAM 主体需要 kafka:ListVpcConnections

  • 访问您的 SCRAM 密钥(如果使用 SASL/SCRAM 身份验证)。这样,您的函数就可以通过用户名和密码来连接到 Kafka。

  • 如果您使用 SASL/SCRAM 或 mTLS 身份验证,则请描述您的 Secrets Manager 密钥。这样,您的函数就可以检索安全连接所需的凭证或证书。

  • 如果您的 Amazon Secrets Manager 密钥使用 Amazon KMS 客户托管密钥加密,请访问您的 Amazon KMS 客户托管密钥。

  • 如果您使用的是带身份验证的架构注册表,请访问您的架构注册表密钥:

    • 对于 Amazon Glue 架构注册表:您的函数需要 glue:GetRegistryglue:GetSchemaVersion 权限。这样,您的函数就可以查找和使用存储在 Amazon Glue 中的消息格式规则。

    • 对于带有 BASIC_AUTHCLIENT_CERTIFICATE_TLS_AUTHConfluent 架构注册表:您的函数需要访问密钥(包含身份验证凭证)的 secretsmanager:GetSecretValue 权限。这样,您的函数就可以检索访问 Confluent 架构注册表所需的用户名/密码或证书。

    • 对于私有 CA 证书:您的函数需要访问密钥(包含证书)的 secretsmanager:GetSecretValue 权限。这样,您的函数就可以验证使用自定义证书的架构注册表的身份。

  • 如果您对事件源映射使用 IAM 身份验证,则可以访问 Kafka 集群的使用者组,并从指定的主题中轮询消息。

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

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

  • 对于 Amazon SQS 目标:sqs:SendMessage - 让您可以向 Amazon SQS 队列发送消息

  • 对于 Amazon SNS 目标:sns:Publish - 让您可以向Amazon SNS 主题发布消息

  • 对于 Amazon S3 存储桶目标:s3:PutObjects3:ListBucket - 让您可以在 Amazon S3 存储桶中写入和列出对象

有关身份验证和授权错误的故障排除,请参阅Kafka 事件源映射错误的故障排除