将基于AWS SDK v2的SES工具TypeScript函数迁移至v3求助
AWS SDK v2 转 v3:SES 邮件工具手动迁移方案
以下是完成迁移后的完整代码,同时说明关键改动点:
迁移后代码
import { SESClient, SendEmailCommand } from "@aws-sdk/client-ses"; require('dotenv').config(); // 初始化SES v3客户端 const sesClient = new SESClient({ region: process.env.AWS_REGION, credentials: { accessKeyId: process.env.AWS_ACCESS_KEY_ID!, secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY! } }); interface EmailParams { Source: string; Destination: { ToAddresses: string[]; }; Message: { Subject: { Data: string }; Body: { Html: { Data: string } }; }; } const sendEmail = async (params: EmailParams): Promise<void> => { // 构造SendEmail命令 const sendEmailCommand = new SendEmailCommand(params); // 调用API,直接使用Promise异步逻辑 await sesClient.send(sendEmailCommand); }; export { sendEmail };
关键改动说明
- 移除v2依赖:删掉了
import AWS from 'aws-sdk'和全局配置AWS.config.update,v3不需要全局配置,客户端参数直接传入构造函数 - 客户端替换:用
SESClient替代v2的SES类,这是v3标准的客户端实例方式 - 命令模式调用:v3所有API调用都需要构造对应的Command对象(这里是
SendEmailCommand),再通过客户端的send()方法执行 - 简化异步逻辑:
client.send()本身返回Promise,不需要手动封装Promise回调,直接用await处理即可 - 类型处理:环境变量后的
!是TypeScript非空断言,确保类型安全,实际项目中可以添加环境变量存在性校验(比如判断变量是否为空,抛出错误)
内容的提问来源于stack exchange,提问作者mind3d
相关产品推荐
相关产品推荐

