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

使用NestJS调用AWS SES发邮件时遇InvalidClientTokenId错误求助

排查AWS SES发送邮件时的InvalidClientTokenId错误

问题背景

调用AWS SES发送邮件时触发以下错误:

InvalidClientTokenId: The security token included in the request is invalid

同时代码存在一个潜在问题:模板文件为EJS格式(welcome.ejs),但代码中使用Handlebars.compile编译,会导致模板变量无法正确渲染。

可能的原因及解决办法

1. 凭证本身无效或配置错误

  • 排查点:
    • 核对accessKeyId和secretAccessKey是否完全匹配AWS控制台IAM用户的安全凭证,注意不要包含多余空格、换行符,密钥区分大小写。
    • 检查IAM用户的访问密钥是否已激活、未被删除或过期(在IAM控制台→用户→安全凭证→访问密钥中查看状态)。
  • 解决办法:
    • 重新生成并复制正确的访问密钥,替换代码中的占位符。
    • 确保密钥状态为"活跃",若已过期则生成新密钥。

2. IAM用户缺少SES权限

  • 排查点:
    • 该IAM用户是否被授予发送邮件的权限(ses:SendEmail或ses:SendRawEmail)。
  • 解决办法:
    • 在IAM控制台为用户附加AmazonSESFullAccess政策(适合测试环境),或创建自定义政策仅授予必要权限:
      {
        "Version": "2012-10-17",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": ["ses:SendEmail", "ses:SendRawEmail"],
            "Resource": "*"
          }
        ]
      }
      

3. AWS区域不匹配或SES未在该区域启用

  • 排查点:
    • 代码中指定区域为eu-west-1,确认AWS SES是否已在该区域启用(新账户默认仅在us-east-1启用,需手动开通其他区域)。
    • 确保IAM用户的权限政策允许在eu-west-1区域访问SES服务。
  • 解决办法:
    • 在AWS SES控制台的区域选择器中切换到eu-west-1,确认服务已启用;若未启用,按照提示完成开通流程。
    • 若不需要eu-west-1,可将代码中的区域改为已启用SES的区域(如us-east-1)。

4. AWS SDK优先加载了其他凭证来源

  • 排查点:
    • AWS SDK按优先级加载凭证:环境变量 > 共享配置文件(~/.aws/credentials) > IAM角色 > 代码硬编码。如果环境变量或配置文件中存在无效凭证,会覆盖代码中的设置。
  • 解决办法:
    • 移除代码中的硬编码凭证,改用环境变量加载,更安全且避免冲突:
      const config = {
        accessKeyId: process.env.AWS_ACCESS_KEY_ID,
        secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
        region: process.env.AWS_REGION || 'eu-west-1',
      };
      
    • 检查系统环境变量或~/.aws/credentials文件中的凭证是否正确,若有无效项可暂时移除或修改。

5. 模板编译错误(潜在问题)

  • 排查点:
    • 模板使用EJS语法(<%= variable %>),但代码用Handlebars编译,会导致模板变量无法解析,邮件内容显示原始标签。
  • 解决办法:
    • 安装EJS依赖:npm install ejs
    • 修改代码中的编译逻辑为EJS:
      import ejs from 'ejs';
      
      // ...
      
      const emailTemplate = ejs.compile(emailTemplateSource);
      const html = emailTemplate(data);
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 19:30:30