通过S3使用Minio

通过S3使用Minio

Minio是一种开源的对象存储系统,提供了简单易用的存储解决方案。由于minio使用了S3兼容的API, 所以可以直接通过aws s3的sdk进行接入。

以下, 是基于golang的代码示例, 只在于初始化aws配置时的参数略有区分, 其他操作和功能暂未发现差异, 此处不再单独列举。

// gen aws config for minio
func (m *Minio) config() *aws.Config {
	conf := &aws.Config{
		Credentials: credentials.NewStaticCredentials(m.Credentials.AccessKeyId, m.Credentials.AccessKeySecret, ""),
		Region:      aws.String(m.Region),
		S3ForcePathStyle: aws.Bool(true),
		Endpoint:         aws.String(m.Endpoint),
	}
	if m.Debug {
		conf.LogLevel = aws.LogLevel(aws.LogDebugWithHTTPBody)
	}
	return conf
}

注意以上代码, 和对接s3官方的区别在于:

  • 将minio的api地址, 设置为aws中的Endpoint​。
  • S3ForcePathStyle​需要设置为true​. 因为s3官方访问资源时, 会将region​作为子域名部分, 通过设置此项参数, 可以按照设定的Endpoint​来访问资源。
  • 关于arn, 可以直接使用arn:aws:s3:::{bucket}/*​, 例如arn:aws:s3:::cs-dev/*

在minio中创建用户

登录到minio管理后台后, 我们先创建一个存储桶

  • 菜单栏 Administrator > Buckets, 右侧"Create Bucket"按钮.

image

创建一个存储桶对应的策略配置

  • 菜单栏 Administrator > Polices, 右侧"Create Policy"按钮.

  • 键入策略名称, 复制以下策略配置,保存

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "sts-cs-dev",
                "Effect": "Allow",
                "Action": [
                    "s3:*"
                ],
                "Resource": [
                    "arn:aws:s3:::cs-dev/*"
                ]
            }
        ]
    }
    

image

创建一个sts用户, 此用户将是我们在程序中使用的主账户

  • 菜单栏 Administrator > Identify > Users, 右侧"Create User"按钮.
  • 键入用户名称和密码, 选择刚才创建的策略配置,保存

在开发中, 使用刚才创建的用户名称作为AccessKeyId​, 用户密码作为AccessKeySecret

image

posted @   笨鸡蛋9毛  阅读(368)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示