使用Tensorflow写入S3时无法连接到端点

时间:2017-11-15 09:28:52

标签: amazon-s3 tensorflow

默认情况下,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.comexport 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

任何想法我可能做错了什么?我该如何进一步调试?

1 个答案:

答案 0 :(得分:0)

上次我尝试这个时,我不太确定出了什么问题,但现在我只是通过export S3_REGION=eu-west-1并使用

写入存储桶来实现它
with tf.gfile.Open("s3://bucket/plipp", mode='w') as f:
    f.write("foo")

因此,请勿导出S3_ENDPOINT变量。