You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在删除AWS Cognito用户池用户时触发Lambda函数?

实现AWS Cognito删除用户时触发Lambda的可行方案

由于Cognito用户池没有内置的用户删除操作触发器,你可以通过以下几种方式实现需求:

方案1:封装删除用户的API接口(实时触发首选)

不要直接调用Cognito原生的AdminDeleteUser或DeleteUser API,而是用API网关+Lambda封装删除逻辑:

  • 让前端或后端服务调用这个自定义API来执行用户删除操作
  • Lambda函数内先完成Cognito用户删除,再调用邮件发送逻辑(比如AWS SES)
  • 示例Python代码片段:
import boto3

cognito_idp = boto3.client('cognito-idp')
ses = boto3.client('ses')

def lambda_handler(event, context):
    # 从请求参数中获取用户池ID和目标用户名
    user_pool_id = event['userPoolId']
    username = event['username']
    
    # 执行Cognito用户删除
    cognito_idp.admin_delete_user(
        UserPoolId=user_pool_id,
        Username=username
    )
    
    # 获取用户邮箱
    user_details = cognito_idp.admin_get_user(
        UserPoolId=user_pool_id,
        Username=username
    )
    user_email = [attr['Value'] for attr in user_details['UserAttributes'] if attr['Name'] == 'email'][0]
    
    # 发送通知邮件
    ses.send_email(
        Source='verified-sender@yourdomain.com',
        Destination={'ToAddresses': [user_email]},
        Message={
            'Subject': {'Data': '您的账号已删除'},
            'Body': {'Text': {'Data': '您在我们平台的Cognito账号已被成功删除。'}}
        }
    )
    
    return {'statusCode': 200, 'body': '操作完成'}
  • 权限配置:给Lambda添加cognito-idp:AdminDeleteUser、cognito-idp:AdminGetUser和ses:SendEmail的权限;确保SES已验证发件人和收件人邮箱(或处于生产模式)

方案2:通过CloudTrail+EventBridge触发(无需修改现有删除流程)

利用CloudTrail记录Cognito的API操作,再通过EventBridge捕获删除事件触发Lambda:

  1. 确保AWS账号已开启CloudTrail,且记录包含Cognito Identity Provider的API调用
  2. 在EventBridge中创建规则:
    • 事件模式选择AWS API Call via CloudTrail
    • 指定服务为Cognito Identity Provider,操作匹配AdminDeleteUser和DeleteUser
  3. 将目标Lambda函数关联到该规则
  4. Lambda函数从EventBridge事件中提取用户池ID和用户名,调用AdminGetUser获取邮箱后发送邮件
  • 注意:CloudTrail事件存在几分钟延迟,适合对实时性要求不高的场景

方案3:Post Authentication触发器(仅适用于用户主动删除场景)

如果删除操作由用户自身发起(比如登录后删除账号),可以借助Post Authentication触发器结合业务逻辑判断执行删除和邮件发送,但该方案局限性大,仅作为备选。

内容的提问来源于stack exchange,提问作者Rlaks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 08:40:25