Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

221
Vistas
AWS S3: cómo obtener todos los archivos que son de clase de almacenamiento GLACIER

Mi objetivo es convertir todos los archivos que actualmente son de clase de almacenamiento GLACIER a ESTÁNDAR usando aws cli s3api . Para hacer esto, primero necesito obtener una lista de todos estos archivos, luego ejecutar un comando de restore y, finalmente, un comando de copy para cambiarlos todos a ESTÁNDAR.

El problema es que la cantidad de archivos es demasiado grande (~ 5 millones), lo que finalmente da como resultado un error de core dump segmentation fault si el elemento máximo supera los 600k a 700k. Si no proporciono el parámetro --max-item , obtendría el mismo error. Así que no pude obtener más archivos por debajo del umbral de 700k. Aquí está el comando que usé:

 aws s3api list-objects --bucket my-bucket --query 'Contents[?StorageClass==`GLACIER`]' --max-item 700000 > glacier.txt

¿Hay algún trabajo alrededor?

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Así que descubrí la opción --starting-token del comando list-objects . Entonces escribí un script para escanear todos los elementos en un lote de 100k objetos. Este script generará un archivo que contiene la clave S3 de todos los objetos GLACIER.

 #!/bin/bash BUCKET="s3-bucket-name" PREFIX="foldername" PROFILE="awscliprofile" MAX_ITEM=100000 var=0 NEXT_TOKEN=0 while true; do var=$((var+1)) echo "Iteration #$var - Next token: $NEXT_TOKEN" aws s3api list-objects \ --bucket $BUCKET \ --prefix $PREFIX \ --profile $PROFILE \ --max-item $MAX_ITEM \ --starting-token $NEXT_TOKEN > temp awk '/GLACIER/{getline; print}' temp >> glacier.txt NEXT_TOKEN=$(cat temp | grep NextToken | awk '{print $2}' | sed 's/\("\|",\)//g') if [ ${#NEXT_TOKEN} -le 5 ]; then echo "No more files..." echo "Next token: $NEXT_TOKEN" break rm temp fi rm temp done echo "Exiting."

Después de eso, puedo usar restore-object y, finalmente copy-object para cambiar la clase de almacenamiento de todos estos archivos a ESTÁNDAR. Ver más guiones aquí . Espero que esto ayude a cualquiera que necesite lograr lo mismo.

about 4 years ago · Santiago Trujillo Denunciar

0

aquí hay una solución de línea

 aws s3api list-objects --bucket *bucket-name*| grep "StorageClass" > nonglacier.txt

entonces puedes grep clase de almacenamiento usando

 cat nonglacier.txt | grep GLACIER | wc -l

también se puede resumir como

 aws s3api list-objects --bucket <bucket-name>| grep "StorageClass" | grep GLACIER | wc -l
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda