任何人都可以确认这在 C# 中适用于他们吗?我正在使用 ses v2 并尝试获取联系人列表。我在获取个人联系人方面没有任何问题,而且我的 IAM 用户设置确实具有 SES:ListContacts 权限。这些键适用于 sendmail 和 getcontact,但不适用于 listcontacts。当我通过 AWS CLI 执行此操作时,ListContacts 使用相同的用户和凭证。
var client = new AmazonSimpleEmailServiceV2Client("ID", "SECRET_KEY");
/* works
var cRequest = new GetContactRequest();
cRequest.ContactListName = "fmContacts";
cRequest.EmailAddress = "[email protected]";
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);
Amazon.SimpleEmailV2.AmazonSimpleEmailServiceV2Exception:“我们计算的请求签名与您提供的签名不匹配。检查您的 AWS 秘密访问密钥和签名方法。有关详细信息,请参阅服务文档。'
ListContacts
多个 AWS 开发工具包(包括适用于 .NET 的 AWS 开发工具包)存在已知问题。 SDK 团队已将其传递给 SES 团队。
ListContacts 被建模为 GET 请求,该请求还具有
Filter
参数的请求正文,这与 .NET 的 HTTP 客户端不能很好地配合。这就是为什么它在某些 SDK 中有效但在其他 SDK 中无效的原因。
之前的一些报道: