Tenho a seguinte declaração de política que exigiria que a INTELLIGENT_TIERING
chave de classe de armazenamento fosse aplicada ao bucket foo
:
{
"Sid": "EnforceIntelligentTiering",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::foo/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-storage-class": "INTELLIGENT_TIERING"
}
}
}
Se eu tentar copiar um arquivo para esse bucket que seja menor que o limite de tamanho para a INTELLIGENT_TIERING
classe de armazenamento (128 kB), será gerado um erro que impede que esse arquivo seja copiado? Ou o nível padrão será aplicado?
Em caso de erro, como posso modificar essa política para que ela seja aplicada somente em arquivos maiores que o limite, para evitar esse erro?
Apliquei sua política a um dos meus buckets e carreguei um pequeno arquivo. Ele carregou perfeitamente:
No entanto, a página Como funciona o S3 Intelligent-Tiering - Amazon Simple Storage Service diz:
Se você tentar copiar um arquivo menor que o limite para a classe de armazenamento INTELLIGENT_TIERING (128 kB) para o bucket S3 com a política como está, um erro será lançado, impedindo que o arquivo seja copiado. Isso ocorre porque a política nega explicitamente qualquer ação PutObject, a menos que a classe de armazenamento esteja definida como INTELLIGENT_TIERING. No entanto, arquivos menores que 128 kB não são elegíveis para INTELLIGENT_TIERING, o que leva a um conflito.
Como modificar a política para aplicar somente a arquivos maiores que o limite: Para evitar esse erro, você pode modificar a política para aplicar a condição somente a arquivos maiores que 128 kB. Isso pode ser feito adicionando uma condição que verifica o s3:content-length: