配置 Lambda 执行角色权限 - AWS Lambda

配置 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 身份验证)。这样,您的函数就可以通过用户名和密码来连接到 Kafka。

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

  • 如果您想加密筛选条件,则请访问您的 AWS KMS 客户托管式密钥。这有助于对您的消息筛选规则进行保密。

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

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

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

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

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

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

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

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

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

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