Python Tensorflow-S3对象不存在

Python Tensorflow-S3对象不存在,python,amazon-web-services,tensorflow,amazon-s3,Python,Amazon Web Services,Tensorflow,Amazon S3,如何设置Tensorflow的直接私有存储桶访问? 运行后 来自tensorflow.python.lib.io导入文件的 然后运行printfile_io.stat('s3://my/private/bucket/file.json')我最终得到一个错误- NotFoundError:objects3://my/private/bucket/file.json不存在 但是,公共对象上的同一行可以正常工作: print file_io.stat('s3://ryft public sample

如何设置Tensorflow的直接私有存储桶访问?

运行后
来自tensorflow.python.lib.io导入文件的

然后运行print
file_io.stat('s3://my/private/bucket/file.json')
我最终得到一个错误-
NotFoundError:objects3://my/private/bucket/file.json不存在

但是,公共对象上的同一行可以正常工作:
print file_io.stat('s3://ryft public sample data/wikipedia-20150518.bin')

这里似乎有一篇关于支持的文章:
但是,在导出显示的变量后,我最终会出现相同的错误


我已经用所有凭据设置了awscli,boto3可以查看和下载有问题的文件。我想知道如何让Tensorflow在存储桶是私有的情况下直接访问S3。

我在尝试从Sagemaker笔记本访问私有S3存储桶中的文件时遇到了相同的问题。我犯的错误是尝试使用从boto3获得的凭据,这些凭据在外部似乎无效

解决方案不是指定凭据(在这种情况下,它使用附加到计算机的角色),而是只指定区域名称(出于某种原因,它没有从
~/.aws/config
文件中读取),如下所示:

import boto3
import os

session = boto3.Session()
os.environ['AWS_REGION']=session.region_name
注意:调试此错误时,查看CloudWatch日志非常有用,因为S3客户端的日志只打印在那里,而不打印在Jupyter笔记本中。 在这里,我首先看到:

  • 当我从boto3指定凭据时,错误是:
    您提供的AWS访问密钥Id在我们的记录中不存在。
  • 在没有
    AWS_REGION
    env变量集的情况下访问时,必须使用指定的端点对您尝试访问的bucket进行寻址。请将所有未来的请求发送到此终结点。
  • 这在您未指定bucket时很常见(请参阅)
    TensorFlow是否使用与boto查看和下载相关文件时使用的AWS凭据相同的AWS凭据?文件是由与Tensorflow使用的配置文件不同的配置文件创建的吗?Tensorflow应该使用链接的支持文章中所述的~/.aws/credentials文件,该配置文件具有对bucket的完全访问权并创建了该文件。