Python Tensorflow-S3对象不存在
如何设置Tensorflow的直接私有存储桶访问? 运行后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.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 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的完全访问权并创建了该文件。