我有以下策略声明,要求将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) 的文件复制到此存储桶,是否会引发错误并阻止复制此文件?还是将应用标准层?
如果出现错误,我该如何修改此策略以使其仅适用于大于阈值的文件,以避免此错误?
我将您的政策应用于我的一个存储桶,然后上传了一个小文件。它上传得很好:
但是,“S3 智能分层的工作原理 - Amazon Simple Storage Service”页面指出:
如果您尝试按照原样将小于 INTELLIGENT_TIERING 存储类阈值 (128 kB) 的文件复制到 S3 存储桶,则会抛出错误,从而阻止复制文件。这是因为除非存储类设置为 INTELLIGENT_TIERING,否则策略会明确拒绝任何 PutObject 操作。但是,小于 128 kB 的文件不符合 INTELLIGENT_TIERING 的条件,这会导致冲突。
如何修改策略以仅适用于大于阈值的文件:为了避免此错误,您可以修改策略以仅将条件应用于大于 128 kB 的文件。这可以通过添加检查 s3:content-length 的条件来实现: