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

ASP.NET Core新手遇Amazon S3 endpoint错误:已设对应区域仍报错

解决AWS S3 "必须使用指定端点访问存储桶" 错误(ASP.NET Core 8)

我是ASP.NET Core新手,目前遇到错误:

Amazon.S3.AmazonS3Exception: The bucket you are attempting to access must be addressed using the specified endpoint.

使用环境:

  • .NET Core 8
  • AWSSDK.S3 版本3.7.305.3
  • AWSSDK.Extensions.NETCore.Setup 版本3.7.300

已配置与存储桶一致的区域(ap-southeast-1),但仍出现该错误。


现有代码

Program.cs

var awsOptions = builder.Configuration.GetAWSOptions();
awsOptions.DefaultClientConfig.RegionEndpoint = RegionEndpoint.APSoutheast1;
builder.Services.AddDefaultAWSOptions(awsOptions);
builder.Services.AddAWSService<IAmazonS3>();

appsettings.json

"AWS": {
    "Profile": "shiver",
    "Region": "ap-southeast-1"
},

控制器代码

[HttpPost]
[Route("upload")]
public async Task<IActionResult> UploadImageAsync([FromForm] IFormFile file)
{
   var bucketExists = await Amazon.S3.Util.AmazonS3Util.DoesS3BucketExistV2Async(_amazonS3, BucketName);
   if (!bucketExists) return new StatusCodeResult(StatusCodes.Status500InternalServerError);
   ValidateFileUpload(file);
    
   var request = new PutObjectRequest()
   {
      BucketName = BucketName,
      Key = GetFileName(file),
      InputStream = file.OpenReadStream(),
   };
    
   await _amazonS3.PutObjectAsync(request);
   return Ok();
}

解决方法

1. 启用路径样式访问

如果存储桶名称包含点(.)或不符合DNS规范,S3会要求使用路径样式访问而非虚拟主机样式。在Program.cs中添加配置:

var awsOptions = builder.Configuration.GetAWSOptions();
awsOptions.DefaultClientConfig.RegionEndpoint = RegionEndpoint.APSoutheast1;
awsOptions.DefaultClientConfig.ForcePathStyle = true; // 新增此行
builder.Services.AddDefaultAWSOptions(awsOptions);
builder.Services.AddAWSService<IAmazonS3>();

2. 确认存储桶实际区域

登录AWS控制台,检查目标存储桶的实际区域,确保和代码中配置的ap-southeast-1完全一致。避免出现创建存储桶时选错区域、配置文件区域代码拼写错误等问题。

3. 验证AWS凭证权限

检查本地AWS凭证文件(路径:~/.aws/credentials 或 C:\Users\<用户名>\.aws\credentials)中,shiver配置项的密钥是否正确,且该凭证拥有访问目标S3存储桶的权限(比如s3:PutObject、s3:ListBucket等)。

4. 显式指定端点URL(可选)

若上述方法无效,可直接指定对应区域的S3端点URL:

awsOptions.DefaultClientConfig.ServiceURL = "https://s3.ap-southeast-1.amazonaws.com";

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 10:52:13