我一直在使用AWS Java SDK来创建策略文档(而不是直接创建策略JSON)。我已经能够创建一个具有密钥前缀要求的基本策略,但我无法弄清楚如何构建文件大小要求。我在样本中看到这是一个JSON数组:
['content-length-range', 0, 1024]
但是我似乎无法使用Java SDK以编程方式执行此操作。浏览类和文档似乎也没有提供良好的提示。
目前有人这样做吗?代码是什么样的?
答案 0 :(得分: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")
)
);
请注意,您需要在密钥( content-length-range )前加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"
]
}
}
}
]
}
答案 1 :(得分:0)
看起来我想做的事情无法完成(条件密钥不存在)。有一种称为浏览器上载策略的不同类型的策略可以具有此类条件。链接如下: