一个由s3支持的用于jupyter的contentsmanager实现
s3contents的Python项目详细描述
S3目录
Jupyter的S3和GCS支持的ContentsManager实现
它的目标是成为jupyter标准文件系统支持的存储系统的一个透明的替代品。 通过这个jupyter内容管理器的实现,您可以保存所有的笔记本、常规文件、目录 结构直接指向一个s3/gcs bucket,它可以在aws/gcp上,也可以是与minio兼容的自托管s3 api。
虽然有些功能的实现已经可以在线使用(s3nb或s3drive),但我无法使 它们适用于较新的Jupyter笔记本电脑安装。这是一个更好的测试 高度依赖于令人敬畏的PGContents。
先决条件
向s3/gcs存储桶写入访问权限(有效凭据),这可以在aws/gcp或像minio这样的自托管s3上进行。
安装
$ pip install s3contents
Jupyter配置
通过填充缺少的值编辑~/.jupyter/jupyter_notebook_config.py
:
s3
froms3contentsimportS3ContentsManagerc=get_config()# Tell Jupyter to use S3ContentsManager for all storage.c.NotebookApp.contents_manager_class=S3ContentsManagerc.S3ContentsManager.access_key_id="<AWS Access Key ID / IAM Access Key ID>"c.S3ContentsManager.secret_access_key="<AWS Secret Access Key / IAM Secret Access Key>"c.S3ContentsManager.session_token="<AWS Session Token / IAM Session Token>"c.S3ContentsManager.bucket="<bucket-name>"# Optional settings:c.S3ContentsManager.prefix="this/is/a/prefix"c.S3ContentsManager.sse="AES256"c.S3ContentsManager.signature_version="s3v4"
例如play.minio.io:9000
:
froms3contentsimportS3ContentsManagerc=get_config()# Tell Jupyter to use S3ContentsManager for all storage.c.NotebookApp.contents_manager_class=S3ContentsManagerc.S3ContentsManager.access_key_id="Q3AM3UQ867SPQQA43P2F"c.S3ContentsManager.secret_access_key="zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"c.S3ContentsManager.endpoint_url="http://play.minio.io:9000"c.S3ContentsManager.bucket="s3contents-demo"c.S3ContentsManager.prefix="notebooks/test"
gcp
注意,文件~/.config/gcloud/application_default_credentials.json
假定posix系统
当你这样做时gcloud init
froms3contentsimportGCSContentsManagerc=get_config(c.NotebookApp.contents_manager_class=GCSContentsManagerc.GCSContentsManager.project="<your-project>"c.GCSContentsManager.token="~/.config/gcloud/application_default_credentials.json"c.GCSContentsManager.bucket="<bucket-name>"
美国焊接学会
也可以使用amazon ec2实例中基于iam角色的对s3 bucket的访问;为此,
只要将access_key_id
和secret_access_key
设置为它们的默认值(None
),并确保
ec2实例具有iam角色,该角色为bucket和必要的操作提供足够的权限。
访问本地文件
要访问S3中的本地文件和远程文件,可以使用pgcontents.
第一个:
pip install pgcontents
使用如下配置:
froms3contentsimportS3ContentsManagerfrompgcontents.hybridmanagerimportHybridContentsManagerfromIPython.html.services.contents.filemanagerimportFileContentsManagerc=get_config()c.NotebookApp.contents_manager_class=HybridContentsManagerc.HybridContentsManager.manager_classes={# Associate the root directory with a PostgresContentsManager.# This manager will receive all requests that don"t fall under any of the# other managers."":S3ContentsManager,# Associate /directory with a FileContentsManager."local_directory":FileContentsManager,}c.HybridContentsManager.manager_kwargs={# Args for root PostgresContentsManager."":{"access_key_id":"access-key","secret_access_key":"secret-key","endpoint_url":"http://localhost:9000","bucket":"notebooks",},# Args for the FileContentsManager mapped to /directory"local_directory":{"root_dir":"/Users/drodriguez/Downloads",},}