Tengo un balde con 10^6 llaves. Quiero hacer que todos los objetos en él sean privados.
Probé s3cmd que falla después de algún tiempo. Lo probé con boto3, pero es tremendamente lento.
import boto3 boto3.setup_default_session(aws_access_key_id=access_key_id, aws_secret_access_key=secret_access_key) s3_client = boto3.client('s3') s3_resource = boto3.resource('s3') bucket = s3_resource.Bucket(bucket_name) bucket_acl = bucket.Acl() i = 0 for object_summary in bucket.objects.all(): i += 1 object_acl = object_summary.Acl() if i % 100 == 1: print('{} {}'.format(i, object_summary.key)) object_acl.put(ACL='private')¿Hay alguna forma de hacer una operación por lotes o hacer todo en privado estableciendo alguna política de depósito?
Cualquier otra sugerencia también es bienvenida.
Desafortunadamente no encontré una buena solución. Decidí ejecutarlo durante 70 horas con nohup en segundo plano.
Una posible solución que pensé fue dividir las claves en el depósito en varios conjuntos y ejecutarlas usando varios subprocesos.
Pero al final sólo esperé 70 horas.
No necesitas hacer nada. Los objetos en Amazon S3 son privados de forma predeterminada .
Las cosas que los hacen públicos son: