es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Configurar gsutil s3 en Docker de Google Cloud SDK.

Tengo el SDK de Google Cloud configurado y funcionando en mi máquina con Windows después de seguir esto: https://hub.docker.com/r/google/cloud-sdk/.

Estoy intentando ejecutar este comando para listar un bucket de s3:

docker run --rm -ti --volumes-from gcloud-config google/cloud-sdk gsutil ls s3://bucketname

La autenticación falla debido a que no se establecieron las llaves de AWS. Presumo que la falta se debe a que el archivo .boto no tiene establecidos los valores aws_access_key_id y aws_secret_access_key. No puedo parecer averiguar cómo establecer esas variables.

Intenté ejecutar esto para generar un archivo .boto, pero el bucket se compartió conmigo y no tengo las llaves de acceso:

docker run --rm -ti --volumes-from gcloud-config google/cloud-sdk gsutil config -a

¿Me estoy perdiendo algo o hay alguna otra manera de establecer estas credenciales de AWS? ¿Tal vez con gcloud config set?

Aquí está el registro de errores:
“`
ERROR 1202 03:16:07.326810 utils.py] Caught exception reading instance data
Traceback (most recent call last):
File "/usr/lib/python3.7/urllib/request.py", line 1324, in do<em>open
encode</em>chunked=req.has<em>header('Transfer-encoding'))
File "/usr/lib/python3.7/http/client.py", line 1260, in request
self.</em>send<em>request(method, url, body, headers, encode</em>chunked)
File "/usr/lib/python3.7/http/client.py", line 1306, in <em>send</em>request
self.endheaders(body, encode<em>chunked=encode</em>chunked)
File "/usr/lib/python3.7/http/client.py", line 1255, in endheaders
self.<em>send</em>output(message<em>body, encode</em>chunked=encode<em>chunked)
File "/usr/lib/python3.7/http/client.py", line 1030, in _send</em>output
self.send(msg)
File "/usr/lib/python3.7/http/client.py", line 970, in send
self.connect()
File "/usr/lib/python3.7/http/client.py", line 942, in connect
(self.host,self.port), self.timeout, self.source<em>address)
File "/usr/lib/python3.7/socket.py", line 727, in create</em>connection
raise err
File "/usr/lib/python3.7/socket.py", line 716, in create_connection
sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/vendored/boto/boto/utils.py", line 220, in retry<em>url
r = opener.open(req, timeout=timeout)
File "/usr/lib/python3.7/urllib/request.py", line 525, in open
response = self.</em>open(req, data)
File "/usr/lib/python3.7/urllib/request.py", line 543, in <em>open
'</em>open', req)
File "/usr/lib/python3.7/urllib/request.py", line 503, in <em>call</em>chain
result = func(<em>args)
File "/usr/lib/python3.7/urllib/request.py", line 1352, in http_open
return self.do_open(http.client.HTTPConnection, req)
File "/usr/lib/python3.7/urllib/request.py", line 1326, in do_open
raise URLError(err)
urllib.error.URLError: <urlopen error [Errno 111] Connection refused>
ERROR 1202 03:16:07.328018 utils.py] Unable to read instance data, giving up
Traceback (most recent call last):
File "/usr/lib/google-cloud-sdk/platform/gsutil/gsutil", line 21, in <module>
gsutil.RunMain()
File "/usr/lib/google-cloud-sdk/platform/gsutil/gsutil.py", line 122, in RunMain
sys.exit(gslib.<strong>main</strong>.main())
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/<strong>main</strong>.py", line 444, in main
user_project=user_project)
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/<strong>main</strong>.py", line 783, in _RunNamedCommandAndHandleExceptions
_HandleUnknownFailure(e)
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/<strong>main</strong>.py", line 640, in _RunNamedCommandAndHandleExceptions
user_project=user_project)
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/command_runner.py", line 412, in RunNamedCommand
return_code = command_inst.RunCommand()
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/commands/ls.py", line 683, in RunCommand
listing_helper.ExpandUrlAndPrint(storage_url))
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/utils/ls_helper.py", line 372, in ExpandUrlAndPrint
print_initial_newline=False)
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/utils/ls_helper.py", line 449, in _RecurseExpandUrlAndPrint
bucket_listing_fields=self.bucket_listing_fields):
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/wildcard_iterator.py", line 540, in IterAll
expand_top_level_buckets=expand_top_level_buckets):
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/wildcard_iterator.py", line 174, in <strong>iter</strong>
fields=bucket_listing_fields):
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/boto_translation.py", line 447, in ListObjects
headers=headers)
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/vendored/boto/boto/storage_uri.py", line 166, in list_bucket
bucket = self.get_bucket(headers=headers)
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/vendored/boto/boto/storage_uri.py", line 181, in get_bucket
conn = self.connect()
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/vendored/boto/boto/storage_uri.py", line 117, in connect
*</em>connection<em>args)
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/vendored/boto/boto/s3/connection.py", line 205, in <strong>init</strong>
validate</em>certs=validate<em>certs, profile</em>name=profile<em>name)
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/vendored/boto/boto/connection.py", line 573, in <strong>init</strong>
host, config, self.provider, self.</em>required<em>auth</em>capability())
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/vendored/boto/boto/auth.py", line 1032, in get<em>auth</em>handler
'Check your credentials' % (len(names), str(names)))
boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['S3HmacAuthV4Handler'] Check your credentials
“`

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Problema de acceso a un bucket de S3 con Google Cloud SDK Docker

    Problema

    El usuario ha configurado Google Cloud SDK Docker en su máquina con Windows y está intentando listar un bucket de S3 usando el siguiente comando:

    docker run --rm -ti --volumes-from gcloud-config google/cloud-sdk gsutil ls s3://bucketname
    

    Sin embargo, la autenticación falla debido a que las claves de acceso de AWS no están configuradas. El usuario intentó generar un archivo .boto usando el comando docker run --rm -ti --volumes-from gcloud-config google/cloud-sdk gsutil config -a, pero no pudo hacerlo porque no tenía las claves de acceso para el bucket.

    Ahora, el usuario está intentando averiguar cómo configurar estas credenciales de AWS, posiblemente usando el comando gcloud config set.

    Solución

    El registro de errores indica que el problema puede estar en que las credenciales no están configuradas correctamente. La última línea del registro de errores indica No handler was ready to authenticate. 1 handlers were checked. ['S3HmacAuthV4Handler'] Check your credentials, lo que confirma que hay un problema con las credenciales.

    Para configurar las claves de acceso de AWS, el usuario puede usar la herramienta gsutil para configurar las variables de entorno AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY.

    Para establecer las variables de entorno, el usuario puede ejecutar los siguientes comandos:

    export AWS_ACCESS_KEY_ID=<access_key>
    export AWS_SECRET_ACCESS_KEY=<secret_key>
    

    Sustituya <access_key> y <secret_key> por los valores correspondientes.

    Una vez establecidas las variables de entorno, el usuario puede ejecutar el comando docker run con la opción --env para pasar las variables de entorno al contenedor Docker:

    docker run --rm -ti --volumes-from gcloud-config --env AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID --env AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY google/cloud-sdk gsutil ls s3://bucketname
    

    Esto debería permitir que el usuario acceda al bucket de S3 desde el contenedor Docker de Google Cloud SDK.

Comments are closed.