Estoy tratando de acceder a datos JSON delimitados por línea en S3. Desde mi comprensión de los documentos, debería poder hacer algo como
print data(S3(Chunks(JSONLines))('s3://KEY:SECRET@bucket/dir/part-*.json').peek()que lanza
BotoClientError: BotoClientError: Bucket names cannot contain upper-case characters when using either the sub-domain or virtual hosting calling format.He probado variaciones de esto que conducen a diferentes errores.
Puedo hacer que lo siguiente funcione con archivos locales:
print data(chunks(JSONLines)(map(JSONLines, glob("/home/me/data/*")))).peek() Sin embargo, no estoy seguro de por qué se necesita (map(JSONLines, glob( .
Realmente no entiendo cómo trabajar con modificadores de tipo.
En la sección de comentarios del Ejemplo 6 de esta página http://www.programcreek.com/python/example/51587/boto.exception.BotoClientError establece que:
Los nombres de los cubos no deben contener caracteres en mayúsculas. Verificamos esto agregando un carácter en minúscula y probando con islower(). Tenga en cuenta que esto también cubre casos como nombres de depósitos numéricos con guiones.
la función en uso para esta evaluación es check_lowercase_bucketname(n) y por las llamadas de ejemplo obtenemos:
>>> check_lowercase_bucketname("Aaaa") Traceback (most recent call last): ... BotoClientError: S3Error: Bucket names cannot contain upper-case characters when using either the sub-domain or virtual hosting calling format. >>> check_lowercase_bucketname("1234-5678-9123") True >>> check_lowercase_bucketname("abcdefg1234") True Lo mencionado anteriormente me hace creer que su llamada a 's3://KEY:SECRET@bucket/dir/part-*.json' no pasa porque las variables KEY y/o SECRET contienen mayúsculas o caracteres no permitidos