AWS S3 Java SDK:创建内容长度范围的策略
AWS S3 Java SDK: Creating a policy with content-length-range
我一直在使用 AWS Java SDK 创建策略文档(而不是直接创建策略 JSON)。我已经能够创建具有键前缀要求的基本策略,但我不知道如何构建文件大小要求。我在示例中看到它作为 JSON 数组出现:
['content-length-range', 0, 1024]
但我似乎无法使用 Java SDK 以编程方式执行此操作。浏览 类 和文档似乎也没有给出很好的提示。
目前有人这样做吗?代码是什么样的?
您可以使用 NumericCondition class for adding the desired conditions to your 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"
]
}
}
}
]
}
看来我想做的事情无法完成(条件键不存在)。不过,有一种不同类型的策略称为浏览器上传策略,它可以具有这种类型的条件。 Link 下面:
Amazon S3. Maximum object size
我一直在使用 AWS Java SDK 创建策略文档(而不是直接创建策略 JSON)。我已经能够创建具有键前缀要求的基本策略,但我不知道如何构建文件大小要求。我在示例中看到它作为 JSON 数组出现:
['content-length-range', 0, 1024]
但我似乎无法使用 Java SDK 以编程方式执行此操作。浏览 类 和文档似乎也没有给出很好的提示。
目前有人这样做吗?代码是什么样的?
您可以使用 NumericCondition class for adding the desired conditions to your 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"
]
}
}
}
]
}
看来我想做的事情无法完成(条件键不存在)。不过,有一种不同类型的策略称为浏览器上传策略,它可以具有这种类型的条件。 Link 下面:
Amazon S3. Maximum object size