通过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"按钮.
创建一个存储桶对应的策略配置
-
菜单栏 Administrator > Polices, 右侧"Create Policy"按钮.
-
键入策略名称, 复制以下策略配置,保存
{ "Version": "2012-10-17", "Statement": [ { "Sid": "sts-cs-dev", "Effect": "Allow", "Action": [ "s3:*" ], "Resource": [ "arn:aws:s3:::cs-dev/*" ] } ] }
创建一个sts用户, 此用户将是我们在程序中使用的主账户
- 菜单栏 Administrator > Identify > Users, 右侧"Create User"按钮.
- 键入用户名称和密码, 选择刚才创建的策略配置,保存
在开发中, 使用刚才创建的用户名称作为AccessKeyId
, 用户密码作为AccessKeySecret
标签:minio,S3,aws,s3,使用,arn,Minio From: https://www.cnblogs.com/coolewang/p/18311401/use-minio-via-s3-w5ghv