簡體   English   中英

用於密碼重置的 AWS SNS 或 SES

[英]AWS SNS or SES for password reset

伙計們。 我的任務是創建 AWS lambda 端點以重置用戶密碼。 我必須向用戶 email 發送一個新密碼。我已經閱讀了很多關於 SNS 和 SES 的內容,目前不知道哪種服務更適合我的目的。 很高興收到您的建議!

這是我的 lambda 代碼

        const requestData = AdminResetPasswordDto.from(event.body);
        const errors = await AdminResetPasswordDto.validate(requestData);
        if (errors) {
            return new BadRequestError({ message: "errors.invalid-request-params", errors })
        }

        const repo = new UsersRepo();
        
        const entity = await repo.getOneByEmail(requestData.email);
        if (!entity) {
            return new BadRequestError({ message: 'errors.user-not-exists' })
        }

        // const newPass = generatePassword();
        // sending newPass to user via SNS
        // use SNS or SES ???
        // https://docs.aws.amazon.com/sns/latest/dg/sns-email-notifications.html

        const user = UserDto.fromEntity(entity);
        const result = await repo.updateUserPassword(user.userId, user.userRole, newPass);
        if (!result) {
            return new BadRequestError({ message: 'errors.password-not-updated' })
        }

        return new ResponseSuccessNoBody();

SNS 用於“技術”通知; 可以通過電子郵件發送,但數量有限。 首先,此時您需要創建專用訂閱並提供目標郵件地址。 其次,您無法真正“設計”您的消息,它只是一堆文本。 對於在運行時確定收件人並且希望控制消息布局的消息,您應該使用 SES go。

SES旨在高效、安全地發送大量電子郵件。 一旦您確認您是電子郵件地址的所有者,您就可以通過 SES 向任何其他電子郵件地址發送電子郵件,而無需收件人的同意。 SES負責確保電子郵件送達所需的工程。

SNS是一種渠道發布者/訂閱者服務。 為了從SNS接收電子郵件,最終用戶必須首先通過電子郵件訂閱並批准該訂閱,然后亞馬遜才能從訂閱的頻道向該最終用戶發送電子郵件。 最終用戶可以通過電子郵件、短信、網絡掛鈎和其他獨立於發布者的用戶方式進行訂閱。

在實際層面上,我們使用SES向用戶發送有關其內容的電子郵件,並使用SNS在服務器 go 出現故障或出現問題時向我們的開發人員發送通知(通過短信和電子郵件)。

簡而言之,

社交網站

  • email 條消息

  • 短信

  • 推送通知到移動設備

  • 服務/應用程序之間的消息

  • 客戶必須訂閱,才能收到上述通知

SES

  • email 條消息

  • 無需訂閱

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM