如何使用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. using Amazon.S3;
  2. using System;
  3. using System.Threading.Tasks;
  4. using Amazon;
  5. class Program
  6. {
  7. private const string accessKey = "PLACE YOUR ACCESS KEY HERE";
  8. private const string secretKey = "PLACE YOUR SECRET KEY HERE"; // 不要把你的秘钥硬编码到你的代码中。
  9. static void Main(string[] args)
  10. {
  11. Task.Run(MainAsync).GetAwaiter().GetResult();
  12. }
  13. private static async Task MainAsync()
  14. {
  15. var config = new AmazonS3Config
  16. {
  17. RegionEndpoint = RegionEndpoint.USEast1, // 必须在设置ServiceURL前进行设置,并且需要和`MINIO_REGION`环境变量一致。
  18. ServiceURL = "http://localhost:9000", // 替换成你自己的Minio Server的URL
  19. ForcePathStyle = true // 必须设为true
  20. })
  21. var amazonS3Client = new AmazonS3Client(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