根据documentation,ClientMetadata 旨在让您通过 API 操作将自定义数据传递给“自定义消息”lambda 函数。如果您不传递任何自定义数据,则该字段将不会出现在 lambda 输入中。
以下 API 操作允许传递 ClientMetadata:
- AdminResetUserPassword
- AdminRespondToAuthChallenge
- AdminUpdateUserAttributes
- 忘记密码
- GetUserAttributeVerificationCode
- 重新发送确认码
- 注册
- 更新用户属性
使用示例,使用ClientMetadata调用SignUp操作:
var params = {
ClientId: '3n4b5urk1ft4fl3mg5e62d9ado'
Password: 'PASSWORD'
Username: 'jane@example.com'
ClientMetadata: {
'tempPassword': 'PASSWORD',
'applicationUrl': 'example.com'
},
UserAttributes: [
{
Name: 'email',
Value: 'jane@example.com'
},
{
Name: 'name',
Value: 'Jane'
}
]
};
cognitoidentityserviceprovider.signUp(params, (err, data) => {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
然后 lambda 将在CustomMessage_SignUp triggerSource 内接收此类数据:
exports.handler = async (event) => {
// CustomMessage_SignUp : Custom message – To send the confirmation code post sign-up.
if (event.triggerSource === 'CustomMessage_SignUp') {
let tempPassword = event.request.clientMetadata.tempPassword; // 'PASSWORD'
let applicationUrl = event.request.clientMetadata.applicationUrl; // 'example.com'
...
}
}