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

.NET Core中AWS SDK调用SES账户级抑制列表失败求助

解决SES ListSuppressedDestinationsAsync超时问题

针对你遇到的TaskCanceledException(本质是请求超时),可以从以下几个方向排查修复:

1. 检查AWS SES客户端的核心配置

AWS SDK的默认超时可能不足以适配你的网络环境,或者客户端未正确指定SES服务所在区域:

修复客户端配置示例:

// 在依赖注入配置阶段,显式设置区域和超时参数
services.AddAWSService<IAmazonSimpleEmailServiceV2>(options =>
{
    options.Region = RegionEndpoint.USEast1; // 替换为你的SES实际部署区域
    options.ConfigureHttpClient(client =>
    {
        client.Timeout = TimeSpan.FromSeconds(30); // 延长超时时间,默认超时可能偏短
    });
});

2. 确认IAM权限是否足够

你的AWS凭证必须拥有ses:ListSuppressedDestinations权限,否则可能因权限验证流程延迟导致超时。检查对应IAM策略是否包含:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ses:ListSuppressedDestinations",
            "Resource": "*"
        }
    ]
}

3. 为请求添加CancellationToken并完善分页逻辑

原代码未传递取消令牌,且SES抑制列表可能存在多页数据,建议补充令牌并处理分页:

优化后的GetSuppressionList方法:

public async Task<List<SuppressedDestination>> GetSuppressionList(CancellationToken cancellationToken = default)
{
    var allDestinations = new List<SuppressedDestination>();
    var request = new ListSuppressedDestinationsRequest
    {
        PageSize = 10
    };

    try
    {
        do
        {
            var response = await _client.ListSuppressedDestinationsAsync(request, cancellationToken);
            allDestinations.AddRange(response.SuppressedDestinations);
            request.NextToken = response.NextToken;
        } while (!string.IsNullOrEmpty(request.NextToken));
    }
    catch (AmazonServiceException ex)
    {
        Console.WriteLine($"AWS服务错误: {ex.Message}, 错误代码: {ex.ErrorCode}");
        throw; // 不要吞掉异常,交由上层处理
    }
    catch (TaskCanceledException ex)
    {
        if (ex.InnerException is TimeoutException)
        {
            Console.WriteLine("请求超时,请检查网络或延长超时时间");
        }
        throw;
    }

    return allDestinations;
}

4. 排查网络和防火墙限制

  • 确认你的服务器/开发环境能正常访问AWS SES服务端点(例如email.us-east-1.amazonaws.com)
  • 检查是否有代理、防火墙或安全组阻止了443端口的出站请求到AWS SES服务

5. 验证AWS SDK版本兼容性

确保你使用的AWSSDK.SimpleEmailV2版本与.NET Core版本兼容,建议更新到最新稳定版:

dotnet add package AWSSDK.SimpleEmailV2 --version 3.7.100.XX # 替换为当前最新版本号

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:55:23