2015-05-09 6 views
0

Я использую SDK 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. Существует обычная «Политика Bucket», но тогда есть «Политика загрузки браузера». Насколько я могу судить, только документ политики загрузки браузера позволяет ограничить длину контента. – Ben

Смежные вопросы