如何使用AWS SDK for .NET操作Minio Server

aws-sdk-dotnet是.NET Framework的官方AWS开发工具包。在本文中,我们将学习如何使用aws-sdk-dotnet来操作Minio Server。

1. 前提条件

这里下载并安装Minio Server。

如果在本地运行Minio Server,必须要设置MINIO_REGION环境变量。

安装Visual Studio 2015, Visual Studio 2017或者Visual Studio Code。从这里查找Visual Studio的安装版本。

2. 安装

aws-sdk-dotnetNuget包。此软件包仅包含使用AWS S3所必需的库。Nuget包的安装可以使用"Manage Nuget Packages…" UI,或者使用Nuget管理控制台,输入Install-Package AWSSDK.S3。安装程序将自动下载与你的项目兼容的.NET平台的库。.NET Frameworks 3.5、 4.5 以及 .NET Core 1.1都有这个包。

老版本(version 2)的包在这里,不过不建议使用,因为它会下载所有的AWS SDK库,而不是只下载S3模块。

3. 示例

下面示例的代码应该直接复制,而不是用自动生成的Program.cs文件里的代码。在Visual Studio IDE中创建一个控制台项目,并用下面的代码替换生成的Program.cs。更新ServiceURL,accessKeysecretKey成你的Minio Server的配置。

下面的示例采用aws-sdk-dotnet以列举的方式打印出Minio Server里所有的存储桶和第一个存储桶里的所有对象。

  1. usingAmazon.S3;
  2. usingSystem;
  3. usingSystem.Threading.Tasks;
  4. usingAmazon;
  5. classProgram
  6. {
  7. privateconststring accessKey ="PLACE YOUR ACCESS KEY HERE";
  8. privateconststring secretKey ="PLACE YOUR SECRET KEY HERE";// 不要把你的秘钥硬编码到你的代码中。
  9. staticvoidMain(string[] args)
  10. {
  11. Task.Run(MainAsync).GetAwaiter().GetResult();
  12. }
  13. privatestatic async TaskMainAsync()
  14. {
  15. var config =newAmazonS3Config
  16. {
  17. RegionEndpoint=RegionEndpoint.USEast1,// 必须在设置ServiceURL前进行设置,并且需要和`MINIO_REGION`环境变量一致。
  18. ServiceURL="http://localhost:9000",// 替换成你自己的Minio Server的URL
  19. ForcePathStyle=true// 必须设为true
  20. })
  21. var amazonS3Client =newAmazonS3Client(accessKey, secretKey, config);
  22. // 如果你想调试与S3存储的通信的话,可以把下一行代码取消注释,并且实现 private void OnAmazonS3Exception(object sender, Amazon.Runtime.ExceptionEventArgs e)
  23. // amazonS3Client.ExceptionEvent += OnAmazonS3Exception;
  24. var listBucketResponse = await amazonS3Client.ListBucketsAsync();
  25. foreach(var bucket in listBucketResponse.Buckets)
  26. {
  27. Console.Out.WriteLine("bucket '"+ bucket.BucketName+"' created at "+ bucket.CreationDate);
  28. }
  29. if(listBucketResponse.Buckets.Count>0)
  30. {
  31. var bucketName = listBucketResponse.Buckets[0].BucketName;
  32. var listObjectsResponse = await amazonS3Client.ListObjectsAsync(bucketName);
  33. foreach(var obj in listObjectsResponse.S3Objects)
  34. {
  35. Console.Out.WriteLine("key = '"+ obj.Key+"' | size = "+ obj.Size+" | tags = '"+ obj.ETag+"' | modified = "+ obj.LastModified);
  36. }
  37. }
  38. }
  39. }

5. 了解更多

原文: https://docs.minio.io/cn/how-to-use-aws-sdk-for-net-with-minio-server.html