C# S3通过Amazon.S3 nuget包通过Scaleway
我想使用Amazon.S3 nuget包来使用Scaleway对象存储(S3标准)() 但我得到了这个错误:“‘授权标头格式不正确;区域‘us-east-1’错误;应为‘fr par’” 我需要改变我的区域,但如何改变? 谢谢C# S3通过Amazon.S3 nuget包通过Scaleway,c#,amazon-s3,.net-core,C#,Amazon S3,.net Core,我想使用Amazon.S3 nuget包来使用Scaleway对象存储(S3标准)() 但我得到了这个错误:“‘授权标头格式不正确;区域‘us-east-1’错误;应为‘fr par’” 我需要改变我的区域,但如何改变? 谢谢 这里是Scaleway的存储团队成员 感谢您使用我们的服务 不幸的是,C#中的AWS s3 SDK不允许您自定义请求区域和端点,只能自定义一个 目前,我们建议您暂时使用MinIO SDK(请参见此处:) 然而, 我们意识到这一情况,并正在寻求解决办法 例子 首先安装sdk
这里是Scaleway的存储团队成员 感谢您使用我们的服务 不幸的是,C#中的AWS s3 SDK不允许您自定义请求区域和端点,只能自定义一个 目前,我们建议您暂时使用MinIO SDK(请参见此处:) 然而, 我们意识到这一情况,并正在寻求解决办法 例子 首先安装sdk
dotnet添加包Minio——3.1.4版
然后是代码
使用系统;
使用System.IO;
使用Minio;
使用最小例外;
使用Minio.DataModel;
使用System.Threading.Tasks;
命名空间文件上载程序
{
类文件上载
{
静态void Main(字符串[]参数)
{
尝试
{
var minio=新的MinioClient(
“s3.fr部分scw.cloud”,
“SCWXXXXXXXXXX”,
“xxxxx-xxxx-xxxx-xxxxx-xxxxx”,
“fr par”
).WithSSL();
字符串[]fileEntries=Directory.GetFiles(“/app”);
foreach(文件项中的字符串文件名){
FileUpload.Run(minio,fileName.Wait();
}
}
捕获(例外情况除外)
{
控制台写入线(例如消息);
}
}
//文件上传任务。
专用异步静态任务运行(MinioClient minio,字符串文件)
{
尝试
{
等待minio.PutObjectAsync(“我的bucket”,Path.GetFileName(文件),file,”;
Console.WriteLine(“成功上传”+文件);
}
捕获(最小例外e)
{
WriteLine(“文件上载错误:{0}”,e.Message);
}
}
}
}
感谢您的解决方案。有些东西还在开发中?谢谢Hello@Glimm sdk是由AWS开发的,不是由Scaleway开发的是的,但Scaleway是否计划开发自己的sdk?:)我不再为斯威威工作了,但我不这么认为。。。愿景是符合S3协议。我认为应该对SDK进行修补,以接受其他S3服务。(就像在python中一样,go,…)ps:SDK中最近有一个关于这方面的问题,我来看看。多谢各位。
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);
}
}
}