Eu tenho várias contas da AWS e preciso listar todos os buckets do S3 por conta e exibir o tamanho total de cada um deles.
Atualmente, só posso ver o tamanho do armazenamento de um único bucket S3 com:
aws s3 ls s3://mybucket --recursive --human-readable --summarize
Respostas:
Resolução 1
Então eu resolvi isso com o seguinte script. Originalmente, postei a pergunta para o caso de haver uma maneira mais fácil da qual eu não estava ciente.
Resolução 2
Usando painéis no CloudWatch no console da AWS.
Você pode simplesmente especificar todos os buckets S3 e adicionar as estatísticas de números para mostrar as métricas de tamanho de armazenamento.
Isso não lhe custará muitas chamadas de API e pode ser significativamente mais rápido, dependendo do tamanho dos buckets s3 (leva algum tempo para obter o tamanho em buckets muito grandes).
Veredito
Criar o painel ( resolução 2 ) em cada conta da AWS foi a opção mais eficiente para mim, pois é muito mais rápido fazer login e capturar as métricas manualmente de cada conta da AWS do que aguardar o término das chamadas da API de scripts. :(
fonte
| awk END'{print}'
?[@]
in"${buckets[@]}"
?Você precisará escrever um script que analise e consulte esses dados porque, até onde eu saiba, não há uma ferramenta ou função CLI que faça isso. Felizmente, você pode reunir todas essas informações com a CLI.
Liste e analise todas as contas em sua organização.
Para cada conta, liste e analise todos os blocos.
Por fim, obtenha o tamanho de cada bloco em cada conta. Você pode usar o mesmo comando cli de antes, mas lembre-se de listar o tamanho individual de cada item no balde. Você também pode usar este comando cli para obter o tamanho do balde.
fonte
Você terá que escrever um script para fazer isso, a menos que haja uma ferramenta que eu não consiga encontrar.
Se você estiver trabalhando com várias contas do aws, precisará alternar entre as contas para obter os tamanhos de bucket.
Para obter todos os buckets e seu tamanho total, você pode usar ' aws s3api '. Com
list-buckets
você, você pode obter todos os blocos em uma conta e, em seguida, poderá listar seus tamanhos e tentar a próxima conta.fonte
Nenhuma delas mostra o tamanho do bucket se o Versioning estiver ativado e grandes quantidades de dados foram "excluídas". No console da GUI do S3, a guia Métricas mostra o que você está sendo cobrado.
Raspou o seguinte comando de um script encontrado em /server/84815/how-can-i-get-the-size-of-an-amazon-s3-bucket . Funciona bem no Windows. Substituto
yourregion
eyourbucketname
:aws cloudwatch get-metric-statistics --namespace AWS/S3 --start-time 2019-05-09T00:01:00Z --end-time 2019-05-11T23:59:00Z --period 86400 --statistics Average --region yourregion --metric-name BucketSizeBytes --dimensions Name=BucketName,Value=yourbucketname Name=StorageType,Value=StandardStorage
Isso fornece o tamanho médio em bytes nos dias delimitados pelos horários de início e término. O resultado pode chocá-lo se o seu bucket estiver com o Versioning ativado (ativo) e você achar que "excluiu" grandes quantidades de dados.
Para limpar os buckets habilitados para controle de versão, você deve definir uma regra do LifeCycle. Você pode optar por excluir permanentemente as versões anteriores. Você pode omitir as caixas de seleção na etapa Transições.
fonte