开源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兼容的对象存储解决方案,适用于构建私有云、混合云或公有云环境中的存储基础设施。

部署

yum remove docker docker-common container-selinux docker-selinux docker-engine
yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum install -y docker-ce



docker run -d \
  -p 9000:9000 \
  -p 9001:9001 \
  -e "MINIO_ROOT_USER=LIUYUNSHENG" \
  -e "MINIO_ROOT_PASSWORD=LIUYUNSHENGKEY" \
  minio/minio server /data --console-address "0.0.0.0:9001"

go相关操作代码

package main

import (
	"context"
	"fmt"
	"log"
	"os"
	"path"

	"github.com/aws/aws-sdk-go-v2/aws"
	"github.com/aws/aws-sdk-go-v2/config"
	"github.com/aws/aws-sdk-go-v2/credentials"
	"github.com/aws/aws-sdk-go-v2/service/s3"
)

func main() {
	cfg, err := config.LoadDefaultConfig(context.TODO(),
		config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider("LIUYUNSHENG", "LIUYUNSHENGKEY", "")),
		config.WithEndpointResolverWithOptions(aws.EndpointResolverWithOptionsFunc(func(service, region string, options ...interface{}) (aws.Endpoint, error) {
			return aws.Endpoint{
				URL: "http://127.0.0.1:9000",
			}, nil
		})),
		config.WithRegion("cn-north-1"),
	)
	if err != nil {
		return
	}
	client := s3.NewFromConfig(cfg, func(o *s3.Options) {
		o.UsePathStyle = true //https://s3.amazonaws.com/BUCKET/KEY
	})

	// 打印所有的桶
	result, err := client.ListBuckets(context.TODO(), &s3.ListBucketsInput{})
	if err != nil {
		return
	}
	for _, bucket := range result.Buckets {
		fmt.Println(*bucket.Name)
	}
	// 创建桶
	bucketName := "liuysh-bucket"
	client.CreateBucket(context.TODO(), &s3.CreateBucketInput{Bucket: &bucketName})

	// 上传文件
	fileName := "/var/lib/pgsql/pgsql/go/go1.21.5.linux-amd64.tar.gz"
	file, err := os.Open(fileName)
	fileBase := path.Base(fileName)
	if err != nil {
		fmt.Printf("Couldn't open file %v to upload. Here's why: %v\n", fileName, err)
	} else {
		defer file.Close()
		_, err = client.PutObject(context.TODO(), &s3.PutObjectInput{
			Bucket: aws.String(bucketName),
			Key:    aws.String(fileBase),
			Body:   file,
		})
		if err != nil {
			log.Printf("Couldn't upload file %v to %v:%v. Here's why: %v\n",
				fileName, bucketName, file.Name(), err)
		}
	}

}

  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Java中部署MinIO,您需要按照以下步骤操作: 1. 首先,您需要在Java项目中添加MinIO的依赖项。您可以在Maven或Gradle配置文件中添加以下依赖项: Maven: ```xml <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>RELEASE.2021-03-25T23-39-59Z</version> </dependency> ``` Gradle: ``` implementation 'io.minio:minio:RELEASE.2021-03-25T23-39-59Z' ``` 2. 然后,您需要在Java代码中使用MinIO的API进行连接和操作。您可以使用以下示例代码来连接到MinIO服务器,并创建、读取和删除存储桶: ```java import io.minio.MinioClient; import io.minio.errors.MinioException; public class MinioExample { public static void main(String[] args) { try { // 创建一个MinIO客户端对象 MinioClient minioClient = new MinioClient("http://localhost:9000", "accessKey", "secretKey"); // 创建一个新的存储minioClient.makeBucket("mybucket"); // 上传文件到存储minioClient.putObject("mybucket", "myobject", "/path/to/file"); // 下载文件 minioClient.getObject("mybucket", "myobject", "/path/to/downloaded/file"); // 删除文件 minioClient.removeObject("mybucket", "myobject"); // 删除存储minioClient.removeBucket("mybucket"); } catch (MinioException e) { // 处理MinIO异常 e.printStackTrace(); } } } ``` 请注意,您需要将上述代码中的"accessKey"和"secretKey"替换为您自己的MinIO凭据,并将"http://localhost:9000"替换为您的MinIO服务器地址。 这是一个简单的MinIO Java示例,您可以根据您的需求进行扩展和定制。 这些步骤会帮助您在Java中部署和使用MinIO。根据您的具体需求,您可以进一步了解MinIO的API文档以及其他高级功能和配置选项。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [开源minio-AWS-S3存储部署及java操作](https://blog.csdn.net/liuyunshengsir/article/details/120266682)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [对象存储 minio windows服务端版本:2022-05-23T18-45-11Z](https://download.csdn.net/download/libie_lt/85456744)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liuyunshengsir

微信:lys20191020

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值