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

如何通过C# AWS SDK无凭证访问公开Amazon S3存储桶下载文件

匿名访问公开S3存储桶的C#实现方案

要实现无凭证访问公开S3存储桶,核心是在初始化S3客户端时显式指定使用匿名凭证,无需提供AWS账号的Access Key等认证信息。


实现步骤

1. 安装依赖包

在Visual Studio中安装AWS S3官方SDK:

  • 方式1:通过NuGet包管理器搜索安装AWSSDK.S3
  • 方式2:在包管理控制台执行命令:Install-Package AWSSDK.S3

2. 初始化匿名S3客户端

直接使用AnonymousAWSCredentials创建无凭证的S3客户端,注意客户端区域需要和目标存储桶的实际所在区域匹配,本次目标数据集存储桶位于us-east-1区域:

using Amazon.S3;
using Amazon;
using Amazon.Runtime;

// 显式声明使用匿名凭证
var anonymousCredentials = new AnonymousAWSCredentials();
// 初始化S3客户端,指定桶所在区域
var s3Client = new AmazonS3Client(anonymousCredentials, RegionEndpoint.USEast1);

3. 公开桶操作示例

列出存储桶内对象

using Amazon.S3.Model;

string targetBucketName = "noaa-gfs-bdp-pds";
try
{
    var listRequest = new ListObjectsV2Request
    {
        BucketName = targetBucketName,
        // 可选配置:按前缀过滤对象,比如筛选指定日期的GFS数据
        Prefix = "gfs.20240520/00/"
    };

    ListObjectsV2Response listResponse;
    do
    {
        listResponse = await s3Client.ListObjectsV2Async(listRequest);
        foreach (var s3Obj in listResponse.S3Objects)
        {
            Console.WriteLine($"对象键:{s3Obj.Key},文件大小:{s3Obj.Size}字节");
        }
        listRequest.ContinuationToken = listResponse.NextContinuationToken;
    } while (listResponse.IsTruncated);
}
catch (AmazonS3Exception ex)
{
    Console.WriteLine($"操作异常:{ex.Message}");
}

下载指定对象到本地

var downloadRequest = new GetObjectRequest
{
    BucketName = targetBucketName,
    Key = "gfs.20240520/00/atmos/gfs.t00z.pgrb2.0p25.f000"
};

using (var response = await s3Client.GetObjectAsync(downloadRequest))
using (var localFileStream = File.Create(@"C:\本地存储路径\gfs数据集.grb2"))
{
    await response.ResponseStream.CopyToAsync(localFileStream);
}

注意事项

  • 仅支持访问配置了公开匿名读权限的存储桶,否则会返回403拒绝访问错误
  • 客户端指定的区域必须和存储桶实际所在区域完全一致,否则会出现访问异常
  • 匿名访问仅能执行存储桶公开策略允许的操作,通常仅支持读操作,无法执行写入、删除、修改配置等操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:27:07