第 2 章 创建 S3 客户端
要与来自工作台的 S3 兼容对象存储中的数据交互,您必须创建一个本地客户端来处理对 AWS S3 服务的请求,如 Boto3。
Boto3 是 Python 的 AWS SDK,它为创建和管理 AWS 服务(如 AWS S3 或 S3 兼容对象存储)提供 API。
从工作台为 S3 服务配置了 Boto3 客户端后,您可以连接并使用 S3 兼容对象存储中的数据。
先决条件
- 您可以访问 S3 兼容对象存储。
- 您已在对象存储的存储桶中保存了文件。
- 您已登陆到 Red Hat OpenShift AI。
- 您已创建了数据科学项目。
- 您已使用工作台镜像向项目添加了一个工作台。
- 您已根据 S3 兼容存储帐户的凭证为工作台配置了连接。
流程
- 在 OpenShift AI 仪表板中点 Data Science projects。
- 点包含工作台的项目的名称。
- 单击 Workbenches 选项卡。
如果工作台的状态为 Running,请跳至下一步。
如果工作台的状态为 Stopped,在工作台的 Status 列中点 Start。
当工作台服务器启动时,Status 列从 Stopped 改为 Starting,然后在工作台成功启动时变为 Running。
点工作台旁边的打开图标(
)。
您的 Jupyter 环境窗口将打开。
- 在工具栏中,单击 Git Clone 图标,然后选择 Clone a Repository。
-
在 Clone a repo 对话框中,输入以下 URL
https://github.com/opendatahub-io/odh-doc-examples.git,然后点 Clone。 -
在文件浏览器中,选择新创建的
odh-doc-examples文件夹。 双击新创建的
存储文件夹。您会看到一个名为
s3client_examples.ipynb的 Jupyter 笔记本。双击
s3client_examples.ipynb文件,以启动 Jupyter 笔记本。Jupyter 笔记本将打开。您会看到以下任务的代码示例:
- 安装 Boto3 和所需的 Boto3 库
- 创建 S3 客户端会话
- 创建 S3 客户端连接
- 列出文件
- 创建存储桶
- 上传文件到存储桶
- 从存储桶下载文件
- 在存储桶间复制文件
- 从存储桶中删除对象
- 删除存储桶
在 Jupyter 笔记本中,找到以下说明来安装 Boto3 及其所需库,并运行代码单元:
#Upgrade pip to the latest version !pip3 install --upgrade pip #Install Boto3 !pip3 install boto3 #Install Boto3 libraries import os import boto3 from botocore.client import Config from boto3 import session #Check Boto3 version !pip3 show boto3代码单元中的说明将 Python Package Manager (pip)更新至最新版本,安装 Boto3 及其所需的库,并显示安装的 Boto3 版本。
找到以下说明以创建 S3 客户端和服务器。运行代码单元。
#Creating an S3 client #Define credentials key_id = os.environ.get('AWS_ACCESS_KEY_ID') secret_key = os.environ.get('AWS_SECRET_ACCESS_KEY') endpoint = os.environ.get('AWS_S3_ENDPOINT') region = os.environ.get('AWS_DEFAULT_REGION') #Define client session session = Boto3.session.Session(aws_access_key_id=key_id, aws_secret_access_key=secret_key) #Define client connection s3_client = Boto3.client('s3', aws_access_key_id=key_id, aws_secret_access_key=secret_key,aws_session_token=None, config=Boto3.session.Config(signature_version='s3v4'), endpoint_url=endpoint, region_name=region)代码单元中的说明配置 S3 客户端,并建立与 S3 兼容对象存储的会话。
验证
要使用 S3 客户端连接到对象存储并列出可用的存储桶,请找到以下说明来列出存储桶并运行代码单元:
s3_client.list_buckets()成功响应包括
HTTPStatusCode为200,以及类似以下输出的存储桶列表:'HTTPStatusCode': 200, 'Buckets': [{'Name': 'aqs086-image-registry', 'CreationDate': datetime.datetime(2024, 1, 16, 20, 21, 36, 244000, tzinfo=tzlocal ())}]