AWS S3: ¿cómo veo cuánto espacio en disco se está usando?

113

Tengo una cuenta de AWS. Estoy usando S3 para almacenar copias de seguridad de diferentes servidores. La pregunta es ¿hay alguna información en la consola de AWS sobre cuánto espacio en disco está en uso en mi nube S3?

KennyPowers
fuente
1
Tienes que obtener todos los objetos y luego sumar todos los tamaños de los archivos. No puedes hacerlo en una sola operación.
Layke
Es extraño que no haya una solución real para este problema. Revisar todos los elementos y calcular no es una solución si tiene decenas de millones de archivos. En la interfaz de usuario s3 de AWS, puede ver fácilmente el uso en Administración -> Métricas. ¿Por qué no hay forma de obtener esto desde la línea de comandos?
Sarang

Respuestas:

117

Yippe: una actualización de AWS CLI le permite ls recursivamente a través 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"}'
cudds
fuente
print total / 1024/1024/1024 * .03 da una buena estimación del uso de $ si tienes menos de 1TB. @cudds genialidad - ¡muchas gracias!
chrislovecnm
4
No necesita la parte grep si tiene un solo cubo.
jpbochi
7
AWS Cloudwatch ahora tiene una métrica para el tamaño del depósito y la cantidad de objetos que se actualiza diariamente. ¡Ya era hora! aws.amazon.com/blogs/aws/…
cudds
3
Ejemplo 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: debe especificar StorageType y BucketName en el argumento de dimensiones; de lo contrario, no obtendrá resultados.
Sam Martin
@SamMartin, ¿qué debe ser StorageType? Además, esta respuesta lleva mucho tiempo computar para cubos de más de 100 GB
Vivek Katial
104

No estoy seguro de cuándo se agregó esto a la AWSCLI dado que la pregunta original fue hace 3 años, pero la herramienta de línea de comandos ofrece un buen resumen ejecutando:

aws s3 ls s3://mybucket --recursive --human-readable --summarize
thaavik
fuente
4
La tuya y la de Christopher son, con mucho, las mejores respuestas.
Michael Ahlers
2
Solución mucho más simple que la respuesta aceptada. ¡Gracias!
Adrian Macneil
1
esto no muestra el tamaño real con las versiones. ¿Hay alguna forma de verificar el tamaño total del cubo s3 con todas las versiones?
Shanika Ediriweera
1
Imprima el tamaño total de cada uno de sus cubos: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 averiguar el tamaño del bucket de S3 con la consola de AWS:

  1. Haga clic en el nombre del depósito de S3
  2. Seleccione la pestaña "Gestión"
  3. Haga clic en el botón de navegación "Métricas"
  4. De forma predeterminada, debería ver la métrica de almacenamiento del depósito

Espero que esto ayude.

endriju
fuente
3
Esto funciona más rápido en caso de que su depósito tenga TB de datos. Las respuestas aceptadas toman mucho tiempo para calcular todos los objetos en esa escala.
sokras
Tenga en cuenta también que esto capturará cargas colgantes incompletas, con las lssoluciones basadas en no.
David Moles
La forma más rápida de hacerlo es esta respuesta
Mohammad Zekrallah
36

s3cmd puede mostrarle esto ejecutando s3cmd du, opcionalmente pasando el nombre del depósito como argumento.

Markusk
fuente
1
Para su información, probé esto y la versión aws cli en cudds responde. Ambos funcionan bien, pero s3cmd fue significativamente más lento en los casos que probé a partir de la versión 1.5.0-rc1.
DougW
@DougW: Gracias, información útil. AWS CLI 1.0.0 se lanzó en septiembre de 2013 , por lo que no existía en el momento en que escribí mi respuesta.
Markusk
s3cmd no admite el hash de AWS4, por lo que no funcionará con ninguna región nueva, incluida la región de la UE "eu-central-1"
Koen.
@Koen .: Gracias, no estaba al tanto de esto. Parece que el mantenedor de s3cmd está buscando agregar soporte para AWS4: github.com/s3tools/s3cmd/issues/402
markusk
@Koen .: s3cmd ahora admite el hash AWS4 a partir de la 1.5.0, que se publicó el 12 de enero de 2015. Consulte s3tools.org/news .
Markusk
28

La AWS CLI ahora admite el --queryparámetro que toma expresiones JMESPath .

Esto significa que puede sumar los valores de tamaño dados list-objectsusando sum(Contents[].Size)y contar como length(Contents[]).

Esto se puede ejecutar utilizando la AWS CLI oficial como se muestra a continuación y se presentó en febrero de 2014

 aws s3api list-objects --bucket BUCKETNAME --output json --query "[sum(Contents[].Size), length(Contents[])]"
Christopher Hackett
fuente
Tuve que usar comillas dobles alrededor de la cadena de consulta en la línea de comando de Windows. Aunque funciona como un campeón.
Travis Steel
Cuidado: si el depósito está vacío, el comando fallará con el siguiente error: de lo In function sum(), invalid type for value: None, expected one of: ['array-number'], received: "null"contrario, la consulta funciona muy bien.
mecatronero
7

En linux box que tienen python(con pipinstalador) grepe awkinstalan AWS CLI (herramientas de línea de comandos para EC2, S3 y muchos otros servicios)

sudo pip install awscli

luego cree un .awssecretarchivo en su carpeta de inicio con el contenido que se muestra a continuación (ajuste la clave, el secreto y la región según sea necesario):

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

Haga que este archivo sea de lectura y escritura solo para su usuario:

sudo chmod 600 .awssecret

y exportarlo a su entorno

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

luego ejecute en la terminal (este es un comando de una sola línea, separado por \para una fácil lectura aquí):

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"}'
  • la awsparte enumera el cubo (u opcionalmente una 'subcarpeta')
  • la grepparte elimina (usando -v) las líneas que coinciden con la expresión regular (usando -E). ^$es para la línea en blanco, --es para las líneas de separación en la salida deaws s3 ls
  • el último awksimplemente agregue a totalla tercera columna de la salida resultante (el tamaño en KB) y luego muéstrelo al final

NOTA: este comando funciona para el depósito o la 'carpeta' actual, no de forma recursiva

JScoobyCed
fuente
7

Cloud Watch también le permite crear métricas para su bucket de S3. Le muestra métricas por tamaño y recuento de objetos. Servicios> Herramientas de gestión> Vigilancia en la nube. Elija la región donde está su bucket de S3 y las métricas de tamaño y recuento de objetos se encontrarían entre las métricas disponibles.

Rowelee
fuente
6

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

Contestado 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';
?>
JonLovett
fuente
¿Sabe si gigabyte en este caso es 1024 3 o 1000 3? Me está costando encontrar una declaración S3 definitiva.
dfrankow
@dfrankow La línea echo ($totalSize / 1024 / 1024 / 1024) . ' GB';está justo al final del código fuente.
MJD
@MJD No recuerdo cuál fue mi pensamiento aquí. Preguntaba sobre el uso de s3cmd o S3 de la palabra "gigabyte", no este código PHP.
dfrankow
5

Además de la respuesta de Christopher.

Si necesita contar el tamaño total del uso del depósito versionado:

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

Cuenta tanto las versiones más recientes como las archivadas.

ruletkin
fuente
1

La consola de AWS no le mostrará esto, pero puede usar Bucket Explorer o Cloudberry Explorer para obtener el tamaño total de un bucket. Ambos tienen versiones gratuitas disponibles.

Nota: estos productos todavía tienen que obtener el tamaño de cada objeto individual, por lo que podría llevar mucho tiempo para cubos con muchos objetos.

Geoff Appleford
fuente
Sin embargo, solo puedo ver un software de prueba. ¿Se ha eliminado esa oferta?
Trefex
1

Basado en la respuesta 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]

Además, Cyberduck permite convenientemente calcular el tamaño de un cubo o una carpeta.

Evgeny Goldin
fuente
1

¡La respuesta de Mini John funcionó totalmente para mí! Impresionante ... tenía que agregar

--region eu-west-1 

de Europa aunque

pitxon_net
fuente
1

Esta es una pregunta antigua, pero como estaba buscando la respuesta, la encontré. Algunas de las respuestas me hicieron recordar que uso S3 Browser para administrar datos. Puede hacer clic en un cubo y presionar propiedades y le muestra el total. Bastante simple. Recomiendo encarecidamente el navegador: https://s3browser.com/default.aspx?v=6-1-1&fam=x64

usuario7191982
fuente
0

Bueno, también puede hacerlo a través de un cliente S3 si prefiere una interfaz de usuario amigable para los humanos.

Yo uso CrossFTP , que es gratuito y multiplataforma, y ​​allí puedes hacer clic derecho en el directorio de la carpeta -> seleccionar "Propiedades ..." -> hacer clic en el botón "Calcular" al lado de Tamaño y listo.

Yiannis Tsimalis
fuente
0

s3admin es una aplicación de código abierto (UI) que le permite navegar por depósitos, calcular el tamaño total, mostrar archivos más grandes / más pequeños. Está diseñado para tener una descripción general rápida de sus cubos y su uso.

maksion
fuente
0

Usted preguntó: ¿ información en la consola de AWS sobre cuánto espacio en disco se está usando en mi nube S3 ?

Voy al Panel de facturación y verifico el uso de S3 en la factura actual .

Te dan la información - MTD - en Gb a 6 decimales, IOW, al nivel de Kb.

Está desglosado por región, pero sumarlos (asumiendo que usa más de una región) es bastante fácil.

Por cierto: es posible que necesite permisos de IAM específicos para acceder a la información de facturación.

Danny Schoemann
fuente
-2

Utilizo Cloud Turtle para obtener el tamaño de cubos individuales. Si el tamaño del depósito supera los 100 Gb, se necesitará un tiempo para mostrar el tamaño. Cloud Turtle es un programa gratuito.

Sangram Anand
fuente
8
Tenga cuidado con este software. Instala extensiones adicionales de Chrome y parece ser bastante spam.
styks