0


开源minio-AWS-S3存储的部署及go操作详细

介绍

MinIO是一个开源的分布式对象存储服务,它允许用户在私有云或公有云环境中构建自己的对象存储基础设施。MinIO旨在提供高性能、高可用性的对象存储,并且与Amazon S3兼容,这意味着可以使用S3客户端工具和库直接与MinIO交互,而无需更改现有的应用程序代码。

以下是一些关键的MinIO特性和信息:

  1. 分布式架构: MinIO设计为具有分布式架构,允许用户将多个MinIO实例组合成一个集群,提供高可用性和可扩展性。每个MinIO实例可以运行在独立的硬件节点上,通过负载均衡器或DNS轮询等方式进行负载均衡。
  2. S3兼容性: MinIO与Amazon S3的API兼容,这意味着现有的S3客户端工具和库可以直接用于与MinIO进行交互。这种兼容性使得迁移现有S3应用程序到MinIO变得相对简单。
  3. 开源: MinIO是开源的,它的源代码可以在GitHub上获得。这使得用户能够审查和修改源代码以满足他们特定的需求,并且可以在社区的支持下获得帮助。
  4. 轻量级: MinIO设计为轻量级和高性能。它专注于提供快速的对象存储服务,而不引入过多的复杂性。
  5. 安全性: MinIO支持SSL/TLS加密,以确保在数据传输过程中的安全性。此外,它还提供身份验证和访问控制功能,以保护存储在MinIO中的数据。
  6. 版本控制: MinIO支持对象版本控制,允许用户存储和检索不同版本的对象。这对于处理数据的变更和回滚操作非常有用。
  7. 事件通知: MinIO支持事件通知,可以在对象被创建、删除或更新时触发通知。这为构建自动化工作流和应用程序提供了便利。
  8. 易于部署: MinIO提供了容器化的部署选项,可以轻松地在容器环境中部署,例如使用Docker。

总的来说,MinIO是一个灵活、高性能、可扩展且S3兼容的对象存储解决方案,适用于构建私有云、混合云或公有云环境中的存储基础设施。

部署

  1. yum remove docker docker-common container-selinux docker-selinux docker-engine
  2. yum install -y yum-utils
  3. yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  4. yum install -y docker-ce
  5. docker run -d \
  6. -p 9000:9000 \
  7. -p 9001:9001 \
  8. -e "MINIO_ROOT_USER=LIUYUNSHENG" \
  9. -e "MINIO_ROOT_PASSWORD=LIUYUNSHENGKEY" \
  10. minio/minio server /data --console-address "0.0.0.0:9001"

go相关操作代码

  1. package main
  2. import (
  3. "context"
  4. "fmt"
  5. "log"
  6. "os"
  7. "path"
  8. "github.com/aws/aws-sdk-go-v2/aws"
  9. "github.com/aws/aws-sdk-go-v2/config"
  10. "github.com/aws/aws-sdk-go-v2/credentials"
  11. "github.com/aws/aws-sdk-go-v2/service/s3"
  12. )
  13. func main() {
  14. cfg, err := config.LoadDefaultConfig(context.TODO(),
  15. config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider("LIUYUNSHENG", "LIUYUNSHENGKEY", "")),
  16. config.WithEndpointResolverWithOptions(aws.EndpointResolverWithOptionsFunc(func(service, region string, options ...interface{}) (aws.Endpoint, error) {
  17. return aws.Endpoint{
  18. URL: "http://127.0.0.1:9000",
  19. }, nil
  20. })),
  21. config.WithRegion("cn-north-1"),
  22. )
  23. if err != nil {
  24. return
  25. }
  26. client := s3.NewFromConfig(cfg, func(o *s3.Options) {
  27. o.UsePathStyle = true //https://s3.amazonaws.com/BUCKET/KEY
  28. })
  29. // 打印所有的桶
  30. result, err := client.ListBuckets(context.TODO(), &s3.ListBucketsInput{})
  31. if err != nil {
  32. return
  33. }
  34. for _, bucket := range result.Buckets {
  35. fmt.Println(*bucket.Name)
  36. }
  37. // 创建桶
  38. bucketName := "liuysh-bucket"
  39. client.CreateBucket(context.TODO(), &s3.CreateBucketInput{Bucket: &bucketName})
  40. // 上传文件
  41. fileName := "/var/lib/pgsql/pgsql/go/go1.21.5.linux-amd64.tar.gz"
  42. file, err := os.Open(fileName)
  43. fileBase := path.Base(fileName)
  44. if err != nil {
  45. fmt.Printf("Couldn't open file %v to upload. Here's why: %v\n", fileName, err)
  46. } else {
  47. defer file.Close()
  48. _, err = client.PutObject(context.TODO(), &s3.PutObjectInput{
  49. Bucket: aws.String(bucketName),
  50. Key: aws.String(fileBase),
  51. Body: file,
  52. })
  53. if err != nil {
  54. log.Printf("Couldn't upload file %v to %v:%v. Here's why: %v\n",
  55. fileName, bucketName, file.Name(), err)
  56. }
  57. }
  58. }
标签: 开源 aws golang

本文转载自: https://blog.csdn.net/liuyunshengsir/article/details/135251318
版权归原作者 liuyunshengsir 所有, 如有侵权,请联系我们删除。

“开源minio-AWS-S3存储的部署及go操作详细”的评论:

还没有评论