Advertisement
thiagofaioli

AWS S3 0

Aug 13th, 2021 (edited)
389
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.08 KB | None | 0 0
  1. #!/usr/bin/env bash
  2. # SPDX-License-Identifier: BSD-3-Clause
  3.  
  4. ###
  5. # thiago t faioli - thiago.faioli@tcpip.net.br
  6. ###
  7. # Versao: 0
  8. # Data: 11 Agosto 2021
  9. #############################################
  10.  
  11. # ACL Buckets
  12. # script usando AWS CLI para determinar lista de objetos e aplicar ACL Publica de Leiturua
  13.  
  14. # Gerando lista de todos os Buckets
  15. BUCKETS_LISTA=(`aws s3api list-buckets --output text | grep BUCKETS | cut -f3`)
  16.  
  17. for BUCKET_NOME in "${BUCKETS_LISTA[@]}"; do
  18.  
  19.     #  Com o output em modo texto, consigo expor atributos mais simples para parsear ...
  20.     #  O atributo utilizado com referencia é grupo AWS padrao 'Todos (acesso público)
  21.     # "http://acs.amazonaws.com/groups/global/AllUsers"...
  22.     ACL_PUBLICA="http://acs.amazonaws.com/groups/global/AllUsers"
  23.  
  24.     BUCKET_DIR="/usr/local/ope/aws0/${BUCKET_NOME}"
  25.     DATA="$(date +%F-%H%M%S)"
  26.     MENSSAGEM0="${BUCKET_DIR}/${DATA}-mensagem0.log"
  27.  
  28.     if [ -d "${BUCKET_DIR}" ]
  29.         then
  30.             echo "Diretório ${BUCKET_DIR} existe" > /dev/null 2>&1
  31.         else
  32.             mkdir -p ${BUCKET_DIR}
  33.             chmod 0754 ${BUCKET_DIR}
  34.     fi
  35.  
  36.     # Gerando lista de objetos
  37.     aws s3api list-objects --bucket ${BUCKET_NOME} --output text > ${BUCKET_DIR}/${DATA}_bucket-${BUCKET_NOME}.lista-objetos.log 2>&1
  38.  
  39.     # Refinando lista de objetos para conter apenas o path absoluto do key
  40.     grep CONTENTS ${BUCKET_DIR}/${DATA}_bucket-${BUCKET_NOME}.lista-objetos.log |cut -f3 > ${BUCKET_DIR}/${DATA}_bucket-${BUCKET_NOME}.lista-path-objetos.log 2>&1
  41.  
  42.     #Dividindo Arquivos em pedços de 1G linhas
  43.     split -l 1000000 -d ${BUCKET_DIR}/${DATA}_bucket-${BUCKET_NOME}.lista-path-objetos.log ${BUCKET_DIR}/${DATA}_bucket-${BUCKET_NOME}.lista-path-objetos.log >> ${MENSSAGEM0} 2>&1
  44.  
  45.     LISTA_DIVISAO=("$(ls ${BUCKET_DIR}/${DATA}_bucket-${BUCKET_NOME}.lista-path-objetos.log0?)")
  46.  
  47.     #Aplicando ACL Publica para lista de objetos
  48.     for LISTA in "${LISTA_DIVISAO[@]}"; do
  49.             for ARQ in $LISTA; do
  50.                     for OBJS in $(< $ARQ); do
  51.                             aws s3api put-object-acl --acl public-read --bucket=${BUCKET_NOME} --key $OBJS
  52.                     done
  53.             done
  54.     done
  55. done
  56.  
  57. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement