TypeScript调用AWS SES报ses:SendEmail未授权错误,该如何解决?
AWS SES 发送邮件报错解决方案
1. 认证配置说明
是的,你需要配置AWS身份认证信息(Access Key ID、Secret Access Key),AWS SDK会自动读取这些信息完成身份校验,不需要硬编码到业务代码中。
本地开发环境可通过以下方式配置:
- 安装AWS CLI后执行
aws configure命令,按提示依次输入Access Key ID、Secret Access Key、默认区域(填写你代码中使用的us-east-1即可)、默认输出格式填写json即可。 - 配置完成后凭证会自动存储在本地
~/.aws/credentials文件,SDK运行时会自动读取。
如果你将代码部署在AWS云服务上(如Lambda、EC2、ECS等),直接给对应服务的IAM角色附加权限即可,不需要手动配置AK/SK,避免密钥泄露。
2. 权限缺失修复方案
你遇到的User is not authorized to perform ses:SendEmail on resource报错核心原因是当前使用的IAM身份(用户/角色)没有SES邮件发送权限,按以下步骤添加权限即可:
- 登录AWS控制台进入IAM服务页面
- 找到你当前使用的IAM用户/角色,进入权限管理页
- 点击添加权限→创建内联策略,切换到JSON视图后粘贴以下策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ses:SendEmail", "Resource": "*" } ] }
如果需要最小权限管控,可将Resource字段替换为你验证过的发件邮箱ARN。
3. 额外校验项
- 确认你的发件邮箱已在SES对应区域控制台完成验证,若你的SES还处于沙箱环境,收件邮箱也需要提前完成验证才能正常接收邮件
- 确认代码中填写的区域和SES邮箱验证的区域一致
- 禁止将AK/SK硬编码到代码中,避免密钥泄露风险
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

