【问题标题】:Configure gsutil s3 in Google Cloud SDK Docker在 Google Cloud SDK Docker 中配置 gsutil s3
【发布时间】:2022-01-08 14:32:14
【问题描述】:

按照此操作后,我已在我的 Windows 机器上配置并运行 Google Cloud SDK docker。 https://hub.docker.com/r/google/cloud-sdk/

我正在尝试运行此命令来列出一个 s3 存储桶

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

由于未设置 AWS 密钥,身份验证失败。我从.boto 文件中推测没有设置aws_access_key_idaws_secret_access_key。我似乎无法弄清楚如何设置这些变量。

我试图运行它来生成一个.boto 文件,但存储桶已与我共享,我没有访问密钥。

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

我是否遗漏了什么,或者有没有其他方法可以设置这些 AWS 凭证?也许是gcloud config set

这是错误日志

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_open
    encode_chunked=req.has_header('Transfer-encoding'))
  File "/usr/lib/python3.7/http/client.py", line 1260, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/lib/python3.7/http/client.py", line 1306, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.7/http/client.py", line 1255, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.7/http/client.py", line 1030, in _send_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_address)
  File "/usr/lib/python3.7/socket.py", line 727, in create_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_url
    r = opener.open(req, timeout=timeout)
  File "/usr/lib/python3.7/urllib/request.py", line 525, in open
    response = self._open(req, data)
  File "/usr/lib/python3.7/urllib/request.py", line 543, in _open
    '_open', req)
  File "/usr/lib/python3.7/urllib/request.py", line 503, in _call_chain
    result = func(*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.__main__.main())
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/__main__.py", line 444, in main
    user_project=user_project)
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/__main__.py", line 783, in _RunNamedCommandAndHandleExceptions
    _HandleUnknownFailure(e)
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/__main__.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 __iter__
    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
    **connection_args)
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/vendored/boto/boto/s3/connection.py", line 205, in __init__
    validate_certs=validate_certs, profile_name=profile_name)
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/vendored/boto/boto/connection.py", line 573, in __init__
    host, config, self.provider, self._required_auth_capability())
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/vendored/boto/boto/auth.py", line 1032, in get_auth_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

【问题讨论】:

  • 您确定该错误与缺少 aws 机密有关吗?确切的错误日志是什么?使用 docker exec... 进入容器并尝试配置 aws 身份验证。通常是aws configure。如果可行,您只需使用 env 和 docker 传递凭据
  • 您确定该错误与缺少 aws 机密有关吗?确切的错误日志是什么?使用 docker exec... 进入容器并尝试配置 aws 身份验证。通常是aws configure。如果可行,您只需使用 env 和 docker 传递凭据
  • aws 不是图像的一部分,但我确实在cat root/.config/gcloud/legacy_credentials/...../.boto 中找到了一个.boto 文件

标签: docker amazon-s3 google-cloud-storage gsutil google-cloud-sdk


【解决方案1】:

我在旧版配置中编辑了 .boto 文件并让它工作。

docker restart gcloud-config
docker exec -u 0 -it <container-id-here>/bin/bash
apt-get install nano
nano root/.config/gcloud/legacy_credentials/***/.boto

[Credentials]下添加

aws_access_key_id = ***
aws_secret_access_key = ***

享受

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

【讨论】:

    猜你喜欢
    • 2018-12-19
    • 2017-11-10
    • 2017-03-03
    • 2018-12-30
    • 1970-01-01
    • 2021-03-09
    • 2020-08-30
    • 2016-12-24
    • 2019-10-04
    相关资源
    最近更新 更多