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

如何使用.NET Core AWS SDK获取S3存储桶容量与SES月度发件量指标

基于.NET Core AWS SDK实现S3、SES指标查询方案

一、获取指定S3存储桶总占用容量

推荐直接通过CloudWatch指标查询,比遍历桶内所有对象累加的方式性能高很多,对应指标为BucketSizeBytes,该指标默认每日更新一次,如需近实时数据可额外兼容遍历对象的实现逻辑。

依赖安装

需先安装对应NuGet包:

Install-Package AWSSDK.CloudWatch
Install-Package AWSSDK.S3 # 仅用于桶存在性校验,非必需

代码示例

using Amazon.CloudWatch;
using Amazon.CloudWatch.Model;

public async Task<long> GetS3BucketTotalSizeAsync(string bucketName, RegionEndpoint region)
{
    var cwClient = new AmazonCloudWatchClient(region);
    var startTime = DateTime.UtcNow.AddDays(-1); // 指标每日更新,取最近24小时数据即可
    var endTime = DateTime.UtcNow;

    var request = new GetMetricStatisticsRequest
    {
        Namespace = "AWS/S3",
        MetricName = "BucketSizeBytes",
        Dimensions = new List<Dimension>
        {
            new Dimension { Name = "BucketName", Value = bucketName }
        },
        Period = 86400, // 单位秒,单日统计周期
        StartTimeUtc = startTime,
        EndTimeUtc = endTime,
        Statistics = new List<string> { "Sum" },
        Unit = StandardUnit.Bytes
    };

    var response = await cwClient.GetMetricStatisticsAsync(request);
    // 累加所有存储类型的容量总和
    return response.Datapoints.Any() ? (long)response.Datapoints.Sum(p => p.Sum) : 0;
}

权限要求:AWS凭证需拥有cloudwatch:GetMetricStatistics权限。

二、查询SES服务月度邮件发送总量

SES的邮件发送量指标存储在CloudWatch中,对应指标为Send,统计类型选Sum即可得到指定时间范围内的总发送量。

代码示例

using Amazon.CloudWatch;
using Amazon.CloudWatch.Model;

public async Task<long> GetSesMonthlySendCountAsync(RegionEndpoint region)
{
    var cwClient = new AmazonCloudWatchClient(region);
    // 时间范围取当月1号0点到当前UTC时间
    var startTime = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, 1, 0, 0, 0, DateTimeKind.Utc);
    var endTime = DateTime.UtcNow;

    var request = new GetMetricStatisticsRequest
    {
        Namespace = "AWS/SES",
        MetricName = "Send",
        Period = 86400, // 按天统计后累加
        StartTimeUtc = startTime,
        EndTimeUtc = endTime,
        Statistics = new List<string> { "Sum" }
        // 不指定Identity维度即查询整个账号的发送总量,如需查询单个发件地址的量可新增Identity维度
    };

    var response = await cwClient.GetMetricStatisticsAsync(request);
    return response.Datapoints.Any() ? (long)response.Datapoints.Sum(p => p.Sum) : 0;
}

注意:如果你的SES使用的是多区域部署,需要分别查询每个区域的指标后做汇总。


内容的提问来源于stack exchange,提问作者Carlos Jimenez Bermudez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:54:04