此错误通常是由于缺少Lambda函数所需的IAM权限或Lambda函数代码错误引起的。要解决此问题,请尝试以下步骤:
检查Lambda角色是否具有所需的IAM权限。您可以通过为Lambda角色分配所需的IAM策略来完成此操作。例如,您可以将其与执行DefineAuthChallenge调用所需的Amazon Cognito ID池角色相同的IAM策略相结合。
检查Lambda函数代码是否包含任何错误。您可以使用AWS Lambda控制台或AWS CLI调试Lambda函数。如果代码有错误,请修复它们并重新部署函数。
下面是一个Lambda函数代码示例,它在用户进行身份验证时使用DefineAuthChallenge调用:
exports.handler = async (event) => { const { request } = event;
if (request.session && request.session.length >= 3) { request.session.splice(0, request.session.length); return request; }
if (request.challengeName === 'CUSTOM_CHALLENGE') { request.response.publicChallengeParameters = {}; request.response.privateChallengeParameters = {}; request.response.privateChallengeParameters.answer = '1234'; request.response.challengeMetadata = 'Please provide the answer.'; }
return request; };
请注意,在此示例中,我们从request.session中删除了任何会话,如果会话中的值等于或超过3。对于“CUSTOM_CHALLENGE”类型的挑战,我们设置了必要的参数,并返回了请求对象。确保代码在设置返回对象之前按预期进行验证。