Resolução 1
Então eu resolvi isso com o seguinte script. Originalmente, postei a pergunta para o caso de haver uma maneira mais fácil da qual eu não estava ciente.
#!/bin/bash
aws_profile=('profile1' 'profile2' 'profile3');
#loop AWS profiles
for i in "${aws_profile[@]}"; do
echo "${i}"
buckets=($(aws --profile "${i}" --region your_region s3 ls s3:// --recursive | awk '{print $3}'))
#loop S3 buckets
for j in "${buckets[@]}"; do
echo "${j}"
aws --profile "${i}" --region your_region s3 ls s3://"${j}" --recursive --human-readable --summarize | awk END'{print}'
done
done
Resolução 2
Usando painéis no CloudWatch no console da AWS.
Você pode simplesmente especificar todos os buckets S3 e adicionar as estatísticas de números para mostrar as métricas de tamanho de armazenamento.
Isso não lhe custará muitas chamadas de API e pode ser significativamente mais rápido, dependendo do tamanho dos buckets s3 (leva algum tempo para obter o tamanho em buckets muito grandes).
Veredito
Criar o painel ( resolução 2 ) em cada conta da AWS foi a opção mais eficiente para mim, pois é muito mais rápido fazer login e capturar as métricas manualmente de cada conta da AWS do que aguardar o término das chamadas da API de scripts. :(