我有以下策略声明,需要将
INTELLIGENT_TIERING
存储类密钥应用于存储桶 foo
:
{
"Sid": "EnforceIntelligentTiering",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::foo/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-storage-class": "INTELLIGENT_TIERING"
}
}
}
如果我尝试将文件复制到此存储桶,且该文件小于
INTELLIGENT_TIERING
存储类的大小阈值 (128 kB),是否会抛出错误以阻止复制此文件?还是会应用标准等级?
如果出现错误,我该如何修改此策略,使其仅应用于大于阈值的文件,以避免此错误?
如果您尝试按原样将小于 INTELLIGENT_TIERING 存储类阈值 (128 kB) 的文件复制到 S3 存储桶,则会抛出错误,导致文件无法复制。这是因为该策略明确拒绝任何 PutObject 操作,除非存储类别设置为 INTELLIGENT_TIERING。但是,小于 128 kB 的文件不符合 INTELLIGENT_TIERING 的条件,这会导致冲突。
如何修改策略以仅适用于大于阈值的文件: 为了避免此错误,您可以修改策略以仅将条件应用于大于 128 kB 的文件。这可以通过添加一个检查 s3:content-length:
的条件来完成{
"Sid": "EnforceIntelligentTiering",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::foo/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-storage-class": "INTELLIGENT_TIERING"
},
"NumericGreaterThanEquals": {
"s3:content-length": 131072
}
}
}