minio-7.1.2使用setBucketPolicy总是不成功
最近在做对象服务器使用了minio,由于业务要求可直接通过ip+桶名+文件名的方式访问文件,因此想使用setBucketPolicy设置桶策略。在官方文档中 example如下:
// Assume policyJson contains below JSON string;
// {
// "Statement": [
// {
// "Action": [
// "s3:GetBucketLocation",
// "s3:ListBucket"
// ],
// "Effect": "Allow",
// "Principal": "*",
// "Resource": "arn:aws:s3:::my-bucketname"
// },
// {
// "Action": "s3:GetObject",
// "Effect": "Allow",
// "Principal": "*",
// "Resource": "arn:aws:s3:::my-bucketname/myobject*"
// }
// ],
// "Version": "2012-10-17"
// }
//
minioClient.setBucketPolicy(
SetBucketPolicyArgs.builder().bucket("my-bucketname").config(policyJson).build());
但是例子中没有对各个字段的数据格式做说明,其实其中许多字段需要以数组形式。为了得到正确的数据格式,我使用了getBucketPolicy 获取到了提前在web端设置的桶策略。具体格式如下:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": {
"AWS": ["*"]
},
"Action": ["s3:GetBucketLocation", "s3:ListBucket", "s3:ListBucketMultipartUploads"],
"Resource": ["arn:aws:s3:::mybucket"]
}, {
"Effect": "Allow",
"Principal": {
"AWS": ["*"]
},
"Action": ["s3:AbortMultipartUpload", "s3:DeleteObject", "s3:GetObject", "s3:ListMultipartUploadParts", "s3:PutObject"],
"Resource": ["arn:aws:s3:::mybucket/*"]
}]
}
在此我设置了读写策略,具体策略对应的参数及其含义本人也不了解,尚在学习中。读者可根据自己需要设置的策略在测试环境根据我上面的操作获取到对应的策略参数及格式。
最后:本人菜鸟一枚,这篇博客仅仅记录自己在开发中遇到的一些坑坑洼洼,希望能给同是菜鸟的朋友以参考,大神勿喷