能否在Cognito认证后触发器Lambda中绑定IoT策略至用户identityId?
能否在Cognito认证后触发器Lambda中为登录用户绑定IoT策略?
背景
- 需求:用户登录时,按特定规则生成IoT策略并绑定到该Cognito用户的
identityId - 当前实现:移动端通过POST请求将用户
identityId发送至独立Lambda完成绑定,功能正常 - 尝试现状:想改用Cognito认证后触发器实现,但遇到两个明确限制:
- 认证后触发器Lambda无法获取令牌,无法通过
cognito-idp接口获取用户ID - 触发器的
event/context中无法直接获取用户的identityId
- 认证后触发器Lambda无法获取令牌,无法通过
问题
是否可以在Cognito认证后触发器Lambda中完成上述IoT策略绑定操作?
回答
不行,没法直接在Cognito认证后触发器Lambda里完成IoT策略绑定。核心原因是这个触发器拿不到绑定策略必需的用户identityId:
- 认证后触发器的触发时机是用户完成身份认证,但还未生成身份池凭证(即
identityId还未创建或关联到用户会话),所以event和context里根本没有这个值。 - 你提到的无法获取令牌的问题也堵死了反向查询的路径——没有令牌就无法调用Cognito相关接口去关联用户身份与
identityId。
如果想在Cognito的触发流程内完成该操作,可以考虑换用Cognito身份池的Post Authentication触发器:这个触发器是在用户生成identityId之后触发的,event中会包含该ID,你可以直接在这个触发器里调用IoT服务接口生成并绑定策略。
当然,继续使用你当前的独立Lambda方案也完全可行,毕竟已经验证过功能正常,逻辑也更灵活。
内容的提问来源于stack exchange,提问作者Vaduva Mihaita Bogdan
相关产品推荐
相关产品推荐

