首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Amazon.S3 nuget包的Scaleway提供的S3

通过Amazon.S3 nuget包的Scaleway提供的S3
EN

Stack Overflow用户
提问于 2019-07-04 22:00:46
回答 2查看 740关注 0票数 1

我想使用Scaleway对象存储(S3标准) (https://www.scaleway.com/en/object-storage/)的Scaleway nuget包。

但我得到了这样的错误:“‘授权标头格式错误;区域'us-east-1’错误;应为'fr-par'”“

我需要更改我的区域,但是如何更改呢?谢谢

代码语言:javascript
复制
    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);
            }
        }
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-17 18:07:45

存储团队成员@ Scaleway。

感谢您使用我们的服务,

不幸的是,C#中的AWS不允许您自定义请求区域和端点,只有一个是可能的。

目前,我们建议您暂时使用MinIO开发工具包(请参阅此处:https://github.com/minio/minio-dotnet)

尽管如此,

我们知道这种情况,并正在研究解决方案。

示例

首先安装sdk

代码语言:javascript
复制
dotnet add package Minio --version 3.1.4

然后代码

代码语言:javascript
复制
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);
            }
        }
    }
}
票数 3
EN

Stack Overflow用户

发布于 2021-09-06 05:36:50

如果您的存储桶区域是'fr-par',则可以使用引用欧盟西部(巴黎)端点的EUWest3端点。

代码语言:javascript
复制
var config = new AmazonS3Config
{
    RegionEndpoint = RegionEndpoint.EUWest3,
    ServiceURL = "https://s3.fr-par.scw.cloud/"
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56889602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档