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?
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?
Respostas:
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"}'
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.
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
for b in $(aws s3 ls | awk '{ print $NF }'); do printf "$b "; aws s3 ls s3://$b --recursive --human-readable --summarize | tail -1; done
Para descobrir o tamanho do intervalo S3 usando o Console AWS:
Espero que isto ajude.
ls
soluções baseadas em -não fazem isso.
s3cmd pode mostrar isso executando s3cmd du
, opcionalmente, passando o nome do intervalo como um argumento.
O AWS CLI agora oferece suporte ao --query
parâmetro que leva um JMESPath expressões .
Isso significa que você pode somar os valores de tamanho dados list-objects
usando 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[])]"
In function sum(), invalid type for value: None, expected one of: ['array-number'], received: "null"
Caso contrário, a consulta funciona muito bem!
No linux box que tem python
(com o pip
instalador), grep
e 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 .awssecret
arquivo 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"}'
aws
parte lista o intervalo (ou, opcionalmente, uma 'subpasta')grep
parte 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
awk
basta adicionar à total
3ª coluna da saída resultante (o tamanho em KB) e exibi-lo no finalOBSERVAÇÃO, este comando funciona para o intervalo ou 'pasta' atual, não recursivamente
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.
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';
?>
echo ($totalSize / 1024 / 1024 / 1024) . ' GB';
está bem no final do código-fonte.
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.
Obter tamanhos de baldes grandes por meio da API (aws cli ou s4cmd) é muito lento. Aqui está meu HowTo explicando como analisar o Relatório de uso do S3 usando bash one liner:
cat report.csv | awk -F, '{printf "%.2f GB %s %s \n", $7/(1024**3 )/24, $4, $2}' | sort -n
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.
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.
A resposta de Mini John funcionou totalmente para mim! Incrível ... tinha que adicionar
--region eu-west-1
da Europa embora
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
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.
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.
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.