S3 não respeita namespaces hierárquicos. Cada depósito contém simplesmente uma série de mapeamentos de chave para objeto (junto com metadados associados, ACLs e assim por diante).
Mesmo que a chave do seu objeto possa conter uma '/', o S3 trata o caminho como uma string simples e coloca todos os objetos em um namespace simples.
Na minha experiência, as operações LIST demoram (linearmente) mais à medida que a contagem de objetos aumenta, mas isso é provavelmente um sintoma do aumento de I / O necessário nos servidores Amazon e na conexão com o cliente.
No entanto, os tempos de pesquisa não parecem aumentar com a contagem de objetos - é mais provavelmente algum tipo de implementação de hashtable O (1) em sua extremidade - então, ter muitos objetos no mesmo intervalo deve ter o mesmo desempenho que pequenos intervalos para uso normal (ou seja, não LISTs).
Quanto à ACL, as concessões podem ser definidas no intervalo e em cada objeto individual. Como não há hierarquia, são suas duas únicas opções. Obviamente, definir tantas concessões para todo o intervalo reduzirá enormemente as dores de cabeça do administrador se você tiver milhões de arquivos, mas lembre-se de que você só pode conceder permissões, não revogá-las; portanto, as concessões para todo o intervalo devem ser o subconjunto máximo da ACL para todos seu conteúdo.
Eu recomendo dividir em intervalos separados para:
- conteúdo totalmente diferente - ter baldes separados para imagens, som e outros dados torna a arquitetura mais sã
- ACLs significativamente diferentes - se você puder ter um bloco com cada objeto recebendo uma ACL específica, ou dois blocos com ACLs diferentes e nenhuma ACL específica de objeto, use os dois blocos.