2015-05-09 44 views
0

我一直在使用AWS Java SDK創建策略文檔(而不是直接創建策略JSON)。我已經能夠創建具有關鍵字前綴要求的基本策略,但我無法弄清楚如何構建文件大小要求。我已經看到了這個來通過在樣品JSON數組:AWS S3 Java SDK:創建內容長度範圍的策略

['content-length-range', 0, 1024] 

但我不能似乎能夠做到這一點編程,與Java SDK。瀏覽類和文檔似乎也沒有給出好的提示。

目前是否有人這樣做?代碼是什麼樣的?

回答

0

看起來像什麼,我想做的事不能做(條件鍵不存在的話)。有一種稱爲瀏覽器上傳策略的不同類型的策略可以具有這種類型的條件。下面的鏈接:

Amazon S3. Maximum object size

2

您可以使用NumericCondition類將所需的條件添加到您的s3 policy

例如,你可以使用這樣的策略:

Policy policy = new Policy().withStatements(
     new Statement(Effect.Allow) 
     .withActions(S3Actions.PutObject) 
     .withResources(new Resource("arn:aws:s3:::foo_bucket")) 
     .withConditions(
      new NumericCondition(NumericComparisonType.NumericLessThanEquals, "s3:content-length-range", "1024"), 
      new NumericCondition(NumericComparisonType.NumericGreaterThan, "s3:content-length-range", "0") 
     ) 
    ); 

請注意,您需要前綴s3:鑰匙(內容長度範圍)構造一個有效策略。上述

從代碼產生的政策是這樣的,在JSON:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Sid": "1", 
     "Effect": "Allow", 
     "Action": [ 
     "s3:PutObject" 
     ], 
     "Resource": [ 
     "arn:aws:s3:::foo_bucket" 
     ], 
     "Condition": { 
     "NumericGreaterThan": { 
      "s3:content-length-range": [ 
      "0" 
      ] 
     }, 
     "NumericLessThanEquals": { 
      "s3:content-length-range": [ 
      "1024" 
      ] 
     } 
     } 
    } 
    ] 
} 
+0

這不適合我 - 看起來就像它根本不支持。 – Ben

+0

什麼不行?詳情請。 –

+0

看到我在我的答案中鏈接到的問題。顯然有兩種不同類型的S3政策。有定期的「桶策略」,但隨後有一個「瀏覽器上傳策略」。據我所知,只有瀏覽器上傳策略文檔允許您限制內容長度。 – Ben