AWS S3: como faço para ver quanto espaço em disco está usando


113

Eu tenho uma conta AWS. Estou usando o S3 para armazenar backups de servidores diferentes. A questão é: há alguma informação no console da AWS sobre quanto espaço em disco está em uso na minha nuvem S3?


1
Você tem que pegar todos os objetos e então somar todos os tamanhos dos arquivos. Você não pode fazer isso em uma única operação.
— Layke

É estranho que não haja uma solução real para esse problema. Examinar todos os itens e calcular não é uma solução se você tem 10s de milhões de arquivos! Na IU s3 da AWS, você pode ver facilmente o uso em Gerenciamento -> Métricas. Por que não há uma maneira de obter isso na linha de comando?
— Sarang

Respostas:


117

Yippe - uma atualização para AWS CLI permite que você ls recursivamente por meio de buckets ...

aws s3 ls s3://<bucketname> --recursive  | grep -v -E "(Bucket: |Prefix: |LastWriteTime|^$|--)" | awk 'BEGIN {total=0}{total+=$3}END{print total/1024/1024" MB"}'

print total / 1024/1024/1024 * .03 dá uma boa estimativa para o uso de $ se você estiver abaixo de 1 TB. @cudds awesomeness - muito obrigado !!!
— chrislovecnm

4
Você não precisa da parte grep se for um único balde.
— jpbochi,

7
O AWS Cloudwatch agora tem uma métrica para o tamanho do intervalo e o número de objetos que é atualizada diariamente. Estava na hora! aws.amazon.com/blogs/aws/…
— cudds

3
Exemplo aws cloudwatch get-metric-statistics --namespace AWS/S3 --start-time 2015-07-15T10:00:00 --end-time 2015-07-31T01:00:00 --period 86400 --statistics Average --region eu-west-1 --metric-name BucketSizeBytes --dimensions Name=BucketName,Value=toukakoukan.com Name=StorageType,Value=StandardStorage Importante: Você deve especificar StorageType e BucketName no argumento dimensões, caso contrário, você não obterá resultados.
— Sam Martin

@SamMartin o que StorageType precisa ser? Além disso, esta resposta leva muito tempo para calcular para intervalos maiores que 100 GB
— Vivek Katial

104

Não tenho certeza de quando isso foi adicionado ao AWSCLI, visto que a pergunta original foi há 3 anos, mas a ferramenta de linha de comando fornece um bom resumo executando:

aws s3 ls s3://mybucket --recursive --human-readable --summarize

4
A sua e a de Christopher são de longe as melhores respostas.
— Michael Ahlers

2
Solução muito mais simples do que a resposta aceita. Obrigado!
— Adrian Macneil

1
isso não mostra o tamanho real com as versões. Existe uma maneira de verificar o tamanho total do balde s3 com todas as versões?
— Shanika Ediriweera

1
Imprima o tamanho total de cada um de seus baldes:for b in $(aws s3 ls | awk '{ print $NF }'); do printf "$b "; aws s3 ls s3://$b --recursive --human-readable --summarize | tail -1; done
— Matt White

69

Para descobrir o tamanho do intervalo S3 usando o Console AWS:

  1. Clique no nome do bucket S3
  2. Selecione a guia "Gerenciamento"
  3. Clique no botão de navegação "Métricas"
  4. Por padrão, você deve ver a métrica de armazenamento do intervalo

Espero que isto ajude.


3
Isso funciona mais rápido caso seu intervalo tenha TB de dados. As respostas aceitas levam muito tempo para calcular todos os objetos nessa escala.
— sokras 01 de

Observe também que isso irá capturar uploads incompletos suspensos, enquanto as lssoluções baseadas em -não fazem isso.
— David Moles de

a maneira mais rápida de fazer isso é esta resposta
— Mohammad Zekrallah

36

s3cmd pode mostrar isso executando s3cmd du, opcionalmente, passando o nome do intervalo como um argumento.


1
Para sua informação - eu tentei isso e a versão aws cli em cudds responde. Ambos funcionam bem, mas o s3cmd foi significativamente mais lento nos casos que experimentei desde a versão 1.5.0-rc1.
— DougW

@DougW: Obrigado, informação útil. O AWS CLI 1.0.0 foi lançado em setembro de 2013 , então não existia no momento em que escrevi minha resposta.
— markusk

s3cmd não suporta hashing AWS4, portanto não funcionará com nenhuma nova região, incluindo a região da UE "eu-central-1"
— Koen.

@Koen .: Obrigado, não tinha conhecimento disso. Parece que o mantenedor do s3cmd está pensando em adicionar suporte para AWS4: github.com/s3tools/s3cmd/issues/402
— markusk

@Koen .: s3cmd agora suporta hashing AWS4 a partir de 1.5.0, que foi lançado em 12/01/2015. Consulte s3tools.org/news .
— markusk

28

O AWS CLI agora oferece suporte ao --queryparâmetro que leva um JMESPath expressões .

Isso significa que você pode somar os valores de tamanho dados list-objectsusando sum(Contents[].Size)e contar comolength(Contents[]) .

Isso pode ser executado usando o AWS CLI oficial conforme abaixo e foi introduzido em fevereiro de 2014

 aws s3api list-objects --bucket BUCKETNAME --output json --query "[sum(Contents[].Size), length(Contents[])]"

Eu tive que usar aspas duplas em torno da string de consulta na linha de comando do Windows. Mas funciona como um campeão.
— Travis Steel

Cuidado: se o balde estiver vazio, o comando falhará com o seguinte erro: In function sum(), invalid type for value: None, expected one of: ['array-number'], received: "null"Caso contrário, a consulta funciona muito bem!
— mechatroner

7

No linux box que tem python(com o pipinstalador), grepe awk, instale AWS CLI (ferramentas de linha de comando para EC2, S3 e muitos outros serviços)

sudo pip install awscli

em seguida, crie um .awssecretarquivo em sua pasta de início com o conteúdo abaixo (ajuste a chave, o segredo e a região conforme necessário):

[default]
aws_access_key_id=<YOUR_KEY_HERE>
aws_secret_access_key=<YOUR_SECRET_KEY_HERE>
region=<AWS_REGION>

Torne este arquivo de leitura e gravação apenas para o seu usuário:

sudo chmod 600 .awssecret

e exporte para o seu ambiente

 export AWS_CONFIG_FILE=/home/<your_name>/.awssecret

em seguida, execute no terminal (este é um comando de linha única, separado por \para facilitar a leitura aqui):

aws s3 ls s3://<bucket_name>/foo/bar | \
grep -v -E "(Bucket: |Prefix: |LastWriteTime|^$|--)" | \
awk 'BEGIN {total=0}{total+=$3}END{print total/1024/1024" MB"}'
  • a awsparte lista o intervalo (ou, opcionalmente, uma 'subpasta')
  • a grepparte remove (usando -v) as linhas que correspondem à Expressão regular (usando -E). ^$é para linha em branco, --é para linhas separadoras na saída deaws s3 ls
  • o último awkbasta adicionar à total3ª coluna da saída resultante (o tamanho em KB) e exibi-lo no final

OBSERVAÇÃO, este comando funciona para o intervalo ou 'pasta' atual, não recursivamente


7

O Cloud watch também permite que você crie métricas para seu bucket S3. Ele mostra as métricas por tamanho e contagem de objetos. Serviços> Ferramentas de gerenciamento> Cloud watch. Escolha a região onde está o seu bucket S3 e as métricas de tamanho e contagem de objeto estariam entre as métricas disponíveis.


6

Consulte /server/84815/how-can-i-get-the-size-of-an-amazon-s3-bucket

Respondido por Vic ...

<?php
if (!class_exists('S3')) require_once 'S3.php';

// Instantiate the class
$s3 = new S3('accessKeyId', 'secretAccessKey');
S3::$useSSL = false;

// List your buckets:
echo "S3::listBuckets(): ";
echo '<pre>' . print_r($s3->listBuckets(), 1). '</pre>';

$totalSize = 0;
$objects = $s3->getBucket('name-of-your-bucket');
foreach ($objects as $name => $val) {
    // If you want to get the size of a particular directory, you can do
    // only that.
    // if (strpos($name, 'directory/sub-directory') !== false)
    $totalSize += $val['size'];
}

echo ($totalSize / 1024 / 1024 / 1024) . ' GB';
?>

Você sabe se o gigabyte neste caso é 1024 3 ou 1000 3? Estou tendo dificuldade em encontrar uma declaração S3 definitiva.
— dfrankow de

@dfrankow A linha echo ($totalSize / 1024 / 1024 / 1024) . ' GB';está bem no final do código-fonte.
— MJD

@MJD Não me lembro o que meu pensamento estava aqui. Ele estava perguntando sobre o uso de s3cmd ou S3 da palavra "gigabyte", não sobre esse código PHP.
— dfrankow

5

Além da resposta de Christopher.

Se você precisar contar o tamanho total do intervalo com versão, use:

aws s3api list-object-versions --bucket BUCKETNAME --output json --query "[sum(Versions[].Size)]"

Ele conta as versões mais recentes e arquivadas.



1

O console da AWS não mostrará isso, mas você pode usar o Bucket Explorer ou o Cloudberry Explorer para obter o tamanho total de um bucket. Ambos têm versões gratuitas disponíveis.

Observação: esses produtos ainda precisam obter o tamanho de cada objeto individual, por isso pode demorar muito para baldes com muitos objetos.


No entanto, só consigo ver um trialware. Essa oferta foi removida?
— Trefex

1

Com base na resposta de @cudds:

function s3size()
{
    for path in $*; do
        size=$(aws s3 ls "s3://$path" --recursive | grep -v -E "(Bucket: |Prefix: |LastWriteTime|^$|--)" | awk 'BEGIN {total=0}{total+=$3}END{printf "%.2fGb\n", (total/1024/1024/1024)}')
        echo "[s3://$path]=[$size]"
    done
}

...

$ s3size bucket-a bucket-b/dir
[s3://bucket-a]=[24.04Gb]
[s3://bucket-b/dir]=[26.69Gb]

Além disso, o Cyberduck permite convenientemente o cálculo do tamanho de um balde ou pasta.


1

A resposta de Mini John funcionou totalmente para mim! Incrível ... tinha que adicionar

--region eu-west-1 

da Europa embora


1

Esta é uma pergunta antiga, mas como estava procurando a resposta, encontrei-a. Algumas das respostas me fizeram lembrar que uso o S3 Browser para gerenciar dados. Você pode clicar em um balde e propriedades de hit e mostra o total. Bem simples. Eu recomendo fortemente o navegador: https://s3browser.com/default.aspx?v=6-1-1&fam=x64


0

Bem, você também pode fazer isso por meio de um cliente S3 se preferir uma interface de usuário amigável.

Eu uso o CrossFTP , que é gratuito e multiplataforma, e aí você pode clicar com o botão direito no diretório da pasta -> selecionar "Propriedades ..." -> clicar no botão "Calcular" ao lado de Tamanho e voila.


0

s3admin é um aplicativo de código aberto (IU) que permite navegar nos baldes, calcular o tamanho total e mostrar os arquivos maiores / menores. Ele é personalizado para ter uma visão geral rápida de seus Buckets e seu uso.


0

Você perguntou: informações no console da AWS sobre quanto espaço em disco está usando na minha nuvem S3 ?

Vou ao Painel de Faturamento e verifico o uso do S3 na fatura atual .

Eles fornecem a informação - MTD - em Gb para 6 casas decimais, IOW, para o nível de Kb.

Ele é dividido por região, mas adicioná-los (supondo que você use mais de uma região) é bastante fácil.

BTW: você pode precisar de permissões específicas do IAM para obter as informações de faturamento.


-2

Eu uso o Cloud Turtle para obter o tamanho de baldes individuais. Se o tamanho do balde exceder> 100 Gb, levará algum tempo para exibir o tamanho. Cloud Turtle é um freeware.


8
Tenha cuidado com este software. Ele instala extensões extras do Chrome e parece ser bastante spam.
— styks
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.