Tensorflow io.gfile.GFile 错误 - Curl 返回错误代码 60 - 如果签名检查失败。这可能是因为时间偏差
Tensorflow io.gfile.GFile error - Curl returned error code 60 - If the signature check failed. This could be because of a time skew
我正在使用 tf.io.gfile.GFile(...)
从 S3 兼容接口读取文件。产生此错误的代码昨天工作,今天停止工作,代码没有更改,因此可能是服务器端的更改。
2020-05-30 11:33:01.400501: I tensorflow/core/platform/s3/aws_logging.cc:54] Setting provider to read credentials from /home/davidparks21//.aws/credentials for credentials file and /home/davidparks21//.aws/config for the config file , for use with profile default
2020-05-30 11:33:01.400526: I tensorflow/core/platform/s3/aws_logging.cc:54] Creating AWSHttpResourceClient with max connections2 and scheme http
2020-05-30 11:33:01.400538: I tensorflow/core/platform/s3/aws_logging.cc:54] Initializing CurlHandleContainer with size 2
2020-05-30 11:33:01.400551: I tensorflow/core/platform/s3/aws_logging.cc:54] Creating Instance with default EC2MetadataClient and refresh rate 300000
2020-05-30 11:33:01.400561: I tensorflow/core/platform/s3/aws_logging.cc:54] Added EC2 metadata service credentials provider to the provider chain.
2020-05-30 11:33:01.400643: I tensorflow/core/platform/s3/aws_logging.cc:54] Successfully reloaded configuration.
2020-05-30 11:33:01.400705: I tensorflow/core/platform/s3/aws_logging.cc:54] Initializing CurlHandleContainer with size 25
2020-05-30 11:33:01.401062: I tensorflow/core/platform/s3/aws_logging.cc:54] Pool grown by 2
2020-05-30 11:33:01.401081: I tensorflow/core/platform/s3/aws_logging.cc:54] Connection has been released. Continuing.
2020-05-30 11:33:01.486735: E tensorflow/core/platform/s3/aws_logging.cc:60] Curl returned error code 60
2020-05-30 11:33:01.486780: E tensorflow/core/platform/s3/aws_logging.cc:60] HTTP response code: 684960552
Exception name:
Error message: Unable to connect to endpoint
0 response headers:
2020-05-30 11:33:01.486802: W tensorflow/core/platform/s3/aws_logging.cc:57] If the signature check failed. This could be because of a time skew. Attempting to adjust the signer.
2020-05-30 11:33:01.486823: W tensorflow/core/platform/s3/aws_logging.cc:57] Request failed, now waiting 0 ms before attempting again.
2020-05-30 11:33:01.486993: I tensorflow/core/platform/s3/aws_logging.cc:54] Connection has been released. Continuing.
查看 libcurl 错误代码 60 https://curl.haxx.se/libcurl/c/libcurl-errors.html:
CURLE_PEER_FAILED_VERIFICATION (60)
The remote server's SSL certificate or SSH md5 fingerprint was deemed not OK. This error code has been unified with CURLE_SSL_CACERT since 7.62.0. Its previous value was 51.
已在 TF 1.14.0 和 2.2.0-rc3 上测试
事实证明,S3 api 兼容服务器上的证书已过期,这是导致此问题的原因。值得注意的是,似乎只有 libcurl(我们发现了 wget)会对此进行检查。 awscli/boto3
等其他 S3 工具不在乎。
我正在使用 tf.io.gfile.GFile(...)
从 S3 兼容接口读取文件。产生此错误的代码昨天工作,今天停止工作,代码没有更改,因此可能是服务器端的更改。
2020-05-30 11:33:01.400501: I tensorflow/core/platform/s3/aws_logging.cc:54] Setting provider to read credentials from /home/davidparks21//.aws/credentials for credentials file and /home/davidparks21//.aws/config for the config file , for use with profile default
2020-05-30 11:33:01.400526: I tensorflow/core/platform/s3/aws_logging.cc:54] Creating AWSHttpResourceClient with max connections2 and scheme http
2020-05-30 11:33:01.400538: I tensorflow/core/platform/s3/aws_logging.cc:54] Initializing CurlHandleContainer with size 2
2020-05-30 11:33:01.400551: I tensorflow/core/platform/s3/aws_logging.cc:54] Creating Instance with default EC2MetadataClient and refresh rate 300000
2020-05-30 11:33:01.400561: I tensorflow/core/platform/s3/aws_logging.cc:54] Added EC2 metadata service credentials provider to the provider chain.
2020-05-30 11:33:01.400643: I tensorflow/core/platform/s3/aws_logging.cc:54] Successfully reloaded configuration.
2020-05-30 11:33:01.400705: I tensorflow/core/platform/s3/aws_logging.cc:54] Initializing CurlHandleContainer with size 25
2020-05-30 11:33:01.401062: I tensorflow/core/platform/s3/aws_logging.cc:54] Pool grown by 2
2020-05-30 11:33:01.401081: I tensorflow/core/platform/s3/aws_logging.cc:54] Connection has been released. Continuing.
2020-05-30 11:33:01.486735: E tensorflow/core/platform/s3/aws_logging.cc:60] Curl returned error code 60
2020-05-30 11:33:01.486780: E tensorflow/core/platform/s3/aws_logging.cc:60] HTTP response code: 684960552
Exception name:
Error message: Unable to connect to endpoint
0 response headers:
2020-05-30 11:33:01.486802: W tensorflow/core/platform/s3/aws_logging.cc:57] If the signature check failed. This could be because of a time skew. Attempting to adjust the signer.
2020-05-30 11:33:01.486823: W tensorflow/core/platform/s3/aws_logging.cc:57] Request failed, now waiting 0 ms before attempting again.
2020-05-30 11:33:01.486993: I tensorflow/core/platform/s3/aws_logging.cc:54] Connection has been released. Continuing.
查看 libcurl 错误代码 60 https://curl.haxx.se/libcurl/c/libcurl-errors.html:
CURLE_PEER_FAILED_VERIFICATION (60)
The remote server's SSL certificate or SSH md5 fingerprint was deemed not OK. This error code has been unified with CURLE_SSL_CACERT since 7.62.0. Its previous value was 51.
已在 TF 1.14.0 和 2.2.0-rc3 上测试
事实证明,S3 api 兼容服务器上的证书已过期,这是导致此问题的原因。值得注意的是,似乎只有 libcurl(我们发现了 wget)会对此进行检查。 awscli/boto3
等其他 S3 工具不在乎。