Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

225
Visualizações
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?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

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.

over 4 years ago · Santiago Trujillo Relatório

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
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda