2017-03-06 126 views

回答

4

Minio客戶端提供的存儲桶策略是AWS S3提供的相同存儲桶策略的抽象版本。

客戶端根據桶和前綴的輸入字符串構造策略JSON。

意爲readonly - 匿名下載允許訪問包括能夠列出所需的前綴 只寫意味着對象 - 匿名上傳允許包括能夠列出所需的前綴不完整的上傳 讀 - 寫 - 匿名訪問上傳並下載所有對象。這也意味着完全的公衆訪問。 無 - 默認(無策略),這意味着所有的操作都需要通過所需的桶和前綴進行認證。

一堆文件應該位於某個特定的前綴下,可用於只讀訪問。比方說,你的前綴是「我的前綴/只讀/下載」,那麼,如果你正在使用

import java.io.IOException; 
import java.security.NoSuchAlgorithmException; 
import java.security.InvalidKeyException; 

import org.xmlpull.v1.XmlPullParserException; 

import io.minio.MinioClient; 
import io.minio.policy.PolicyType; 
import io.minio.errors.MinioException; 

public class SetBucketPolicy { 
    /** 
    * MinioClient.setBucketPolicy() example. 
    */ 
    public static void main(String[] args) 
    throws IOException, NoSuchAlgorithmException, InvalidKeyException, XmlPullParserException { 
    try { 
     /* play.minio.io for test and development. */ 
     MinioClient minioClient = new MinioClient("https://play.minio.io:9000", "Q3AM3UQ867SPQQA43P2F", 
               "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"); 

     /* Amazon S3: */ 
     // MinioClient minioClient = new MinioClient("https://s3.amazonaws.com", "YOUR-ACCESSKEYID", 
     //           "YOUR-SECRETACCESSKEY"); 

     minioClient.setBucketPolicy("my-bucketname", "my-prefix/read-only/downloads", PolicyType.READ_ONLY); 
    } catch (MinioException e) { 
     System.out.println("Error occurred: " + e); 
    } 
    } 
} 

一旦你的呼叫成功,所有的對象中「我的前綴/只讀/下載」是公開可讀即沒有訪問/祕密密鑰。

+0

感謝您的澄清。我怎樣才能讓一些文件保密?像沒有匿名(讀)訪問? – Daniel

+0

默認情況下,你的所有文件都是私人的,沒有特殊的電話使它們變成私人的。 – Harshavardhana

+2

只是要清楚(所以你可以從'curl'測試),你實際訪問一個文件的URL是'https://play.minio.io:9000/my-bucketname/ ',其中''在上面的例子是'my_prefix /只讀/下載',可能你已經創建了這個路徑。如果你在桶中只有一個'file.jpg'文件,你可以在上面的調用中使用前綴'',URL爲'https://play.minio.io:9000/my-bucketname/ file.jpg'我發現如果我無法制作一個特定的工作示例,那麼它就是這樣。 –

0

'公' 是有效的政策...

你可以改變這個政策: 安裝MC(minio客戶端),然後:

 
# list default hosts after install: 
mc config host ls 

# remove all hosts: mc config host rm {hostName} 
mc config host rm local 

# add your host: mc config host add {hostName} {url} {apiKey} {apiSecret} 
mc config host add local http://127.0.0.1:9000 ClientIdASSDSD ClientSecretASASASdsasdasdasdasd 

# create bucket: mc mb {host}/{bucket} 
mc mb local/mybucket 

# change bucket policy: mc policy {policy} {host}/{bucket} 
mc policy public local/mybucket