在AWS Cognito中何处定义短信服务的Entity ID与Template ID
向印度用户发送AWS Cognito验证短信的Entity ID与Template ID配置方法
前提准备(在AWS SNS中完成)
- 获取Entity ID:进入SNS控制台的「短信偏好设置」,针对印度(IN)地区提交实体信息审核,审核通过后获取专属的Entity ID。
- 创建并获取Template ID:在SNS控制台的「短信模板」中,创建符合印度TRAI规范的验证类短信模板(需包含验证码占位符),提交审核通过后得到Template ID。
在AWS Cognito中配置参数(推荐方式)
由于Cognito默认发送短信不会自动携带印度合规所需的Entity ID和Template ID,需通过自定义消息Lambda触发器实现合规发送:
- 创建Lambda函数,示例代码(Node.js)如下:
const AWS = require('aws-sdk'); const sns = new AWS.SNS({ region: '你的AWS区域' }); exports.handler = async (event) => { // 覆盖注册、重发验证码、找回密码等场景的短信发送逻辑 const validTriggers = ['CustomMessage_SignUp', 'CustomMessage_ResendCode', 'CustomMessage_ForgotPassword']; if (validTriggers.includes(event.triggerSource)) { const publishParams = { PhoneNumber: event.request.userAttributes.phone_number, Message: event.request.codeParameter, MessageAttributes: { 'AWS.SNS.SMS.EntityId': { DataType: 'String', StringValue: '你的Entity ID' }, 'AWS.SNS.SMS.TemplateId': { DataType: 'String', StringValue: '你的Template ID' } } }; await sns.publish(publishParams).promise(); // 告知Cognito无需发送默认短信 event.response.smsMessage = ''; } return event; };
- 为该Lambda函数配置SNS发送短信的权限。
- 进入Cognito用户池的「触发器」配置页,将该Lambda关联到「自定义消息」触发器上。
注意事项
- 确保Lambda中发送的验证码格式与SNS审核通过的模板完全匹配,否则短信会被印度运营商拦截。
- Entity ID和Template ID仅适用于印度地区的短信发送,不可跨区域复用。
内容的提问来源于stack exchange,提问作者user1455192
相关产品推荐
相关产品推荐

