使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

Kafka Lambda触发器(EventSourceMapping)-密钥中的凭据未刷新

0

【以下的问题经过翻译处理】 你好,我正在使用Kafka触发器(Cloudformation EventSourceMapping)将自定义Kafka集群集成到AWS Lambda中。

如果我重置Kafka集群的密码并随后更新在EventSourceMapping中使用的密钥,则EventSourceMapping不会重新获取/刷新该密钥。

相反,EventSourceMapping仍在尝试使用旧的密钥版本(使用旧密码),这会导致错误:

Last processing result: PROBLEM: SASL authentication failed.

由于这个问题,没有事件被传递到lambda函数。

由于我将密钥的ARN传递给EventSourceMapping,并授予Lambda获取此密钥的权限,我期望EventSourceMapping会定期自动刷新/重新获取密钥。

然而,我需要做的是删除EventSourceMapping(触发器)并再次创建它(具有相同的配置)。这是不可接受的,因为我们的Kafka集群会使用多个Lambda集成,在密码(和上述密钥)更改后删除/重新创建Lambda集成是非常低效的。

1 回答
0

【以下的回答经过翻译处理】 你好,

我了解到你正在使用Lambda的Kafka Event Source Mapping。你通过将新的凭证密钥与Kafka集群关联,对现有Kafka集群的密码进行了重置。在此之后,你更新了Lambda Event Source Mapping中的凭证密钥。然而,Lambda事件源似乎仍在使用先前的凭证密钥,并且没有自动重新获取/刷新新的凭证密钥,导致SASL身份验证失败错误。如果我有任何误解,请纠正我。

我在我的AWS账户中尝试复制此操作,我创建了一个新的凭证密钥,将新的凭证密钥与Kafka集群关联。进一步地,我将Kafka客户端的用户名/密码更新为与新的凭证密钥中的值匹配。最后,我更新了Lambda事件源映射以使用新的凭证密钥ARN。下面是我用来更新事件源的CLI命令:

$ aws lambda update-event-source-mapping --uuid <Event Source Mapping ID> --function-name <Function_Name> --source-access-configurations "Type"="SASL_SCRAM_512_AUTH","URI"="<New_Secret_ARN"

更新后,我能够成功使用新的凭证密钥凭证进行身份验证,并将Kafka事件传递到Lambda。不需要删除并重新创建Lambda事件源。

为了进一步解决你的具体问题,请说明你是否正在使用CloudFormation来部署所有更改和更新。假设你正在使用CloudFormation更新Lambda与新的凭证密钥,你是否在控制台或CLI(list-event-source-mappings)中看到了新的凭证密钥ARN反映出来。在Lambda日志中是否看到了“Last processing result: PROBLEM: SASL authentication failed.”的错误。如果可能,请使用AWS CLI运行Lambda事件

profile picture
专家
已回答 1 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则