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

C#中AWS SES v2 ListContactsAsync调用签名不匹配问题求助

问题:C#调用AWS SES v2 ListContactsAsync接口签名验证失败

问题描述

  • 使用AWS SES v2版本的C# SDK,GetContactAsync等接口调用正常,IAM用户已配置SES:ListContacts权限,同一凭证通过AWS CLI调用ListContacts可正常执行,但调用ListContactsAsync时失败。
  • 报错信息:

    Amazon.SimpleEmailV2.AmazonSimpleEmailServiceV2Exception: '我们计算的请求签名与您提供的签名不匹配。请检查您的AWS秘密访问密钥和签名方法。有关详细信息,请查阅服务文档。'

问题代码

var client = new AmazonSimpleEmailServiceV2Client("ID", "SECRET_KEY");

/* works
var cRequest = new GetContactRequest();
cRequest.ContactListName = "fmContacts";
cRequest.EmailAddress = "me@example.com";
GetContactResponse response = await client.GetContactAsync(cRequest);

Console.Write(response.EmailAddress);
*/

// fails with 
var cRequest = new ListContactsRequest();
cRequest.ContactListName = "fmContacts";

ListContactsResponse response = await client.ListContactsAsync(cRequest);

Console.Write(response.Contacts);

解决方法

1. 升级AWS SES v2 SDK版本

旧版本SDK可能存在签名算法兼容bug,建议升级到最新稳定版:

Install-Package AWSSDK.SimpleEmailV2 -Version <最新稳定版本号>

2. 显式指定服务区域

实例化客户端时未指定区域,会导致签名计算使用的区域与SES服务实际区域不匹配,修改客户端初始化代码:

// 替换为你的SES服务所在区域,比如RegionEndpoint.USWest2
var client = new AmazonSimpleEmailServiceV2Client("ID", "SECRET_KEY", RegionEndpoint.USWest2);

3. 显式设置分页参数

部分场景下,SDK默认的空分页参数会导致签名计算异常,尝试添加分页参数:

var cRequest = new ListContactsRequest();
cRequest.ContactListName = "fmContacts";
cRequest.PageSize = 10; // 显式设置分页大小,触发标准请求格式

4. 使用默认凭证链加载凭证

硬编码密钥容易出现格式错误,改用SDK默认的凭证加载方式(优先读取环境变量、本地凭证文件或IAM角色):

var client = new AmazonSimpleEmailServiceV2Client(RegionEndpoint.<你的SES区域>);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 05:42:43