我想使用Scaleway对象存储(S3标准) (https://www.scaleway.com/en/object-storage/)的Scaleway nuget包。
但我得到了这样的错误:“‘授权标头格式错误;区域'us-east-1’错误;应为'fr-par'”“
我需要更改我的区域,但是如何更改呢?谢谢
public static async Task UploadFile(FileStream file, string bucket = "default")
{
var config = new AmazonS3Config { ServiceURL = endPoint };
using (var client = new AmazonS3Client(keyId, secretAccessKey, config))
{
using (var newMemoryStream = new MemoryStream())
{
var uploadRequest = new TransferUtilityUploadRequest
{
InputStream = file,
Key = file.Name,
BucketName = bucket,
CannedACL = S3CannedACL.PublicRead
};
var fileTransferUtility = new TransferUtility(client);
await fileTransferUtility.UploadAsync(uploadRequest);
}
}
}发布于 2019-09-17 18:07:45
存储团队成员@ Scaleway。
感谢您使用我们的服务,
不幸的是,C#中的AWS不允许您自定义请求区域和端点,只有一个是可能的。
目前,我们建议您暂时使用MinIO开发工具包(请参阅此处:https://github.com/minio/minio-dotnet)
尽管如此,
我们知道这种情况,并正在研究解决方案。
示例
首先安装sdk
dotnet add package Minio --version 3.1.4然后代码
using System;
using System.IO;
using Minio;
using Minio.Exceptions;
using Minio.DataModel;
using System.Threading.Tasks;
namespace FileUploader
{
class FileUpload
{
static void Main(string[] args)
{
try
{
var minio = new MinioClient(
"s3.fr-par.scw.cloud",
"SCWXXXXXXXXXXX",
"xxxxx-xxxx-xxx-xxxxx-xxxx",
"fr-par"
).WithSSL();
string [] fileEntries = Directory.GetFiles("/app");
foreach(string fileName in fileEntries) {
FileUpload.Run(minio, fileName).Wait();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
// File uploader task.
private async static Task Run(MinioClient minio, string file)
{
try
{
await minio.PutObjectAsync("my-bucket", Path.GetFileName(file), file, "");
Console.WriteLine("Successfully uploaded " + file );
}
catch (MinioException e)
{
Console.WriteLine("File Upload Error: {0}", e.Message);
}
}
}
}发布于 2021-09-06 05:36:50
如果您的存储桶区域是'fr-par',则可以使用引用欧盟西部(巴黎)端点的EUWest3端点。
var config = new AmazonS3Config
{
RegionEndpoint = RegionEndpoint.EUWest3,
ServiceURL = "https://s3.fr-par.scw.cloud/"
}https://stackoverflow.com/questions/56889602
复制相似问题