默认情况下,Tensorflow 1.4.0附带S3文件系统驱动程序。我在使用它时遇到了麻烦,并且有一个最小的例子,这对我不起作用:
import tensorflow as tf
f = tf.gfile.Open("s3://bucket/plipp", mode='w')
f.write("foo")
f.close()
会出现以下错误:
Traceback (most recent call last):
File "test2.py", line 5, in <module>
f.close()
File "/Users/me/venv3/lib/python3.6/site-packages/tensorflow/python/lib/io/file_io.py", line 234, in close
pywrap_tensorflow.Set_TF_Status_from_Status(status, ret_status)
File "/Users/me/venv3/lib/python3.6/site-packages/tensorflow/python/framework/errors_impl.py", line 473, in __exit__
c_api.TF_GetCode(self.status.status))
tensorflow.python.framework.errors_impl.InternalError: : Unable to connect to endpoint
从我所看到的,似乎“无法连接到端点”是来自C ++ AWS SDK的错误。我已经给了自己*
的权限。
我的广告文件位于eu-west-1
,我尝试过export S3_ENDPOINT=https://s3-eu-west-1.amazonaws.com
和export S3_REGION=eu-west-1
,因为这些变量似乎被S3 driver消耗了,但这没有任何变化。
我也尝试使用s3://bucket.s3-eu-west-1.amazonaws.com/plipp
作为路径,而不是仅仅使用存储桶名称。
我可以将文件复制到存储桶中:
~> aws s3 cp foo s3://bucket/plipp
upload: ./foo to s3://bucket/plipp
任何想法我可能做错了什么?我该如何进一步调试?
答案 0 :(得分:0)
上次我尝试这个时,我不太确定出了什么问题,但现在我只是通过export S3_REGION=eu-west-1
并使用
with tf.gfile.Open("s3://bucket/plipp", mode='w') as f:
f.write("foo")
因此,请勿导出S3_ENDPOINT
变量。