Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

220
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!