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

使用Boto3调用AWS SES SendEmail时遇SignatureDoesNotMatch错误求助

解决AWS SES Boto3签名不匹配错误

排查与修复步骤

  • 确认AWS密钥有效性
    核对AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY,确保无拼写错误、空格或特殊字符。建议直接在AWS控制台IAM用户页重新生成密钥,替换现有配置。
  • 强制使用V4签名
    Boto3默认采用V4签名,但部分场景可能出现配置异常,可显式指定签名版本:
    import boto3
    from botocore.config import Config
    
    ses_config = Config(signature_version='s3v4')
    ses_client = boto3.client('ses', config=ses_config, region_name='us-east-1')
    
  • 匹配SES服务区域
    SES仅在特定区域可用,确保客户端指定的region_name与你的SES邮箱验证区域一致(如us-east-1、eu-west-1),区域不匹配会直接导致签名验证失败。
  • 检查密钥配置来源
    如果你用环境变量或~/.aws/credentials文件配置密钥,确认未被其他程序或配置覆盖。调试时可临时打印当前密钥(仅用于排查,生产环境禁止):
    import boto3
    session = boto3.Session()
    creds = session.get_credentials()
    print(creds.access_key)
    
  • 验证IAM权限
    确保IAM用户拥有ses:SendEmail权限,示例策略:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "ses:SendEmail",
                "Resource": "*"
            }
        ]
    }
    
  • 排除网络干扰
    若使用代理访问AWS,确认代理未篡改请求头。可尝试在AWS EC2实例中直接测试,排除网络层面问题。

注意:禁止在代码中硬编码AWS密钥,优先使用IAM角色、环境变量或官方配置文件管理密钥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 16:12:30