使用 gsutil 将数据从 aws s3 传输到 gcs - SSL 认证错误

Posted

技术标签:

【中文标题】使用 gsutil 将数据从 aws s3 传输到 gcs - SSL 认证错误【英文标题】:Transfer data from aws s3 to gcs by using gsutil - SSL Certification Error 【发布时间】:2017-11-06 09:13:54 【问题描述】:

我正在尝试将数据从 AWS S3 传输到 GCS。 我更改了 boto 文件中的私钥和密钥,当我尝试以下命令时出现错误。

命令:gsutil ls s3://axz

错误信息:

Traceback(最近一次调用最后一次): 文件“C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform/gsutil\gsutil”,第 22 行,在 gsutil.RunMain() RunMain 中的文件“C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\gsutil.py”,第 114 行 sys.exit(gslib.ma​​in.main()) 文件“C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\gslib__main__.py”,第 383 行,在 main perf_trace_token=perf_trace_token) _RunNamedCommandAndHandleExceptions 中的文件“C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\gslib__main__.py”,第 577 行 收集分析=真) RunNamedCommand 中的文件“C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\gslib\command_runner.py”,第 299 行 return_code = command_inst.RunCommand() RunCommand 中的文件“C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\gslib\commands\ls.py”,第 526 行 exp_dirs,exp_objs,exp_bytes = ls_helper.ExpandUrlAndPrint(storage_url) ExpandUrlAndPrint 中的文件“C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\gslib\ls_helper.py”,第 180 行 print_initial_newline=假) _RecurseExpandUrlAndPrint 中的文件“C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\gslib\ls_helper.py”,第 252 行 bucket_listing_fields=self.bucket_listing_fields): 文件“C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\gslib\wildcard_iterator.py”,第 476 行,在 IterAll expand_top_level_buckets=expand_top_level_buckets): iter 中的文件“C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\gslib\wildcard_iterator.py”,第 157 行 字段=bucket_listing_fields): ListObjects 中的文件“C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\gslib\boto_translation.py”,第 380 行 对于objects_iter中的键: 文件“C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\third_party\boto\boto\s3\bucketlistresultset.py”,第 34 行,在 bucket_lister 编码类型=编码类型) 文件“C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\third_party\boto\boto\s3\bucket.py”,第 473 行,在 get_all_keys '',标题,参数) _get_all 中的文件“C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\third_party\boto\boto\s3\bucket.py”,第 399 行 查询参数=查询参数) 文件“C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\third_party\boto\boto\s3\connection.py”,第 668 行,在 make_request 重试处理程序=重试处理程序 文件“C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\third_party\boto\boto\connection.py”,第 1071 行,在 make_request 重试处理程序=重试处理程序) _mexe 中的文件“C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\third_party\boto\boto\connection.py”,第 1030 行 提高前任 **ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:590)

【问题讨论】:

【参考方案1】:

这可能来自您计算机上的 SSL 证书包之间的差异 - 这通常是遇到此错误的其他人的问题,例如https://github.com/aws/aws-cli/issues/1545

如果您无法更新您的证书捆绑包,您也可以尝试通过设置https_validate_certificates Boto 选项:

gsutil -o 'Boto:https_validate_certificates=False' [...]

编辑: 您可能还想尝试通过https://github.com/curl/curl/blob/master/lib/mk-ca-bundle.pl 生成自己的证书包文件 并查看使用 gsutil 是否会有所帮助:

gsutil -o 'Boto:ca_certificates_file=C:\path\to\ca-bundle.crt' [...]

【讨论】:

您好 mhouglum,感谢您的回复。我尝试了 gsutil -o 'Boto:https_validate_certificates=False" 并且我也卸载了 pip remove certifi 但仍然遇到相同的错误。

以上是关于使用 gsutil 将数据从 aws s3 传输到 gcs - SSL 认证错误的主要内容,如果未能解决你的问题,请参考以下文章

将数据从 scaleway/aws s3 复制到谷歌云

gsutil 从 s3 匿名复制?

gsutil 是不是支持 aws s3 的 sigv4?

在 AWS 和 Google 之间传输时本地计算机的角色

加快谷歌云存储传输到s3

AWS:通过使用 amazon-data-pipeline 将数据从 S3 传输到 Redshift 来实现除 COPY 之外的其他功能