在 Lambda 中创建跨账户事件源映射
您可以使用多 VPC 私有连接将 Lambda 函数连接到不同 Amazon Web Services 账户 中的预置 MSK 集群。多 VPC 连接使用 Amazon PrivateLink,可将所有流量保持在 Amazon 网络内。
注意
您无法为无服务器 MSK 集群创建跨账户事件源映射。
要创建跨账户事件源映射,必须先为 MSK 集群配置多 VPC 连接。创建事件源映射时,请使用托管 VPC 连接 ARN 而非集群 ARN,如以下示例所示。CreateEventSourceMapping 操作也因 MSK 集群使用的身份验证类型而异。
例 — 为使用 IAM 身份验证的集群创建跨账户事件源映射
当集群使用基于 IAM 角色的身份验证时,您不需要 SourceAccessConfiguration 对象。示例:
aws lambda create-event-source-mapping \ --event-source-arn arn:aws:kafka:
us-east-1:111122223333
:vpc-connection/444455556666/my-cluster-name/51jn98b4-0a61-46cc-b0a6-61g9a3d797d5-7
\ --topics AWSKafkaTopic \ --starting-position LATEST \ --function-name my-kafka-function
例 — 为使用 SASL/SCRAM 身份验证的集群创建跨账户事件源映射
如果集群使用 SASL/SCRAM 身份验证,则必须包含指定 SASL_SCRAM_512_AUTH
的 SourceAccessConfiguration 对象以及 Secrets Manager 密钥 ARN。
有两种方法可以通过 SASL/SCRAM 身份验证将密钥用于跨账户 Amazon MSK 事件源映射:
-
在 Lambda 函数账户中创建密钥并将其与集群密钥同步。创建轮换以使两个密钥保持同步。此选项允许您控制来自函数账户的密钥。
-
使用与 MSK 集群关联的密钥。此密钥必须可用于跨账户存取 Lambda 函数账户。有关更多信息,请参阅不同账户中用户对 Amazon Secrets Manager 密钥的访问权限。
aws lambda create-event-source-mapping \ --event-source-arn arn:aws:kafka:
us-east-1:111122223333
:vpc-connection/444455556666/my-cluster-name/51jn98b4-0a61-46cc-b0a6-61g9a3d797d5-7
\ --topics AWSKafkaTopic \ --starting-position LATEST \ --function-name my-kafka-function \ --source-access-configurations'[{"Type": "SASL_SCRAM_512_AUTH","URI": "arn:aws:secretsmanager:us-east-1:444455556666:secret:my-secret"}]'
例 — 为使用 mTLS 身份验证的集群创建跨账户事件源映射
如果集群使用 mTLS 身份验证,则必须包含指定 CLIENT_CERTIFICATE_TLS_AUTH
的 SourceAccessConfiguration 对象以及 Secrets Manager 密钥 ARN。密钥可以存储在集群账户或 Lambda 函数账户中。
aws lambda create-event-source-mapping \ --event-source-arn arn:aws:kafka:
us-east-1:111122223333
:vpc-connection/444455556666/my-cluster-name/51jn98b4-0a61-46cc-b0a6-61g9a3d797d5-7
\ --topics AWSKafkaTopic \ --starting-position LATEST \ --function-name my-kafka-function \ --source-access-configurations'[{"Type": "CLIENT_CERTIFICATE_TLS_AUTH","URI": "arn:aws:secretsmanager:us-east-1:444455556666:secret:my-secret"}]'