第 2 章 创建 S3 客户端


要与来自工作台的 S3 兼容对象存储中的数据交互,您必须创建一个本地客户端来处理对 AWS S3 服务的请求,如 Boto3。

Boto3 是 Python 的 AWS SDK,它为创建和管理 AWS 服务(如 AWS S3 或 S3 兼容对象存储)提供 API。

从工作台为 S3 服务配置了 Boto3 客户端后,您可以连接并使用 S3 兼容对象存储中的数据。

先决条件

  • 您可以访问 S3 兼容对象存储。
  • 您已在对象存储的存储桶中保存了文件。
  • 您已登陆到 Red Hat OpenShift AI。
  • 如果您使用 OpenShift AI 组,则作为 OpenShift 中的用户组或 admin 组(如 rhoai-usersrhoai-admins)的一部分。
  • 您已创建了数据科学项目。
  • 您已使用工作台镜像向项目添加了一个工作台。
  • 您已根据 S3 兼容存储帐户的凭证为工作台配置了连接。

流程

  1. 在 OpenShift AI 仪表板中点 Data Science projects
  2. 点包含工作台的项目的名称。
  3. 单击 Workbenches 选项卡。
  4. 如果工作台的状态为 Running,请跳至下一步。

    如果工作台的状态为 Stopped,在工作台的 Status 列中点 Start

    当工作台服务器启动时,Status 列从 Stopped 改为 Starting,然后在工作台成功启动时变为 Running

  5. 点工作台旁边的打开图标( The open icon )。

    您的 Jupyter 环境窗口将打开。

  6. 在工具栏中,单击 Git Clone 图标,然后选择 Clone a Repository
  7. Clone a repo 对话框中,输入以下 URL https://github.com/opendatahub-io/odh-doc-examples.git,然后点 Clone
  8. 在文件浏览器中,选择新创建的 odh-doc-examples 文件夹。
  9. 双击新创建的 存储 文件夹。

    您会看到一个名为 s3client_examples.ipynb 的 Jupyter 笔记本。

  10. 双击 s3client_examples.ipynb 文件,以启动 Jupyter 笔记本。

    Jupyter 笔记本将打开。您会看到以下任务的代码示例:

    • 安装 Boto3 和所需的 Boto3 库
    • 创建 S3 客户端会话
    • 创建 S3 客户端连接
    • 列出文件
    • 创建存储桶
    • 上传文件到存储桶
    • 从存储桶下载文件
    • 在存储桶间复制文件
    • 从存储桶中删除对象
    • 删除存储桶
  11. 在 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
    Copy to Clipboard Toggle word wrap

    代码单元中的说明将 Python Package Manager (pip)更新至最新版本,安装 Boto3 及其所需的库,并显示安装的 Boto3 版本。

  12. 找到以下说明以创建 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)
    Copy to Clipboard Toggle word wrap

    代码单元中的说明配置 S3 客户端,并建立与 S3 兼容对象存储的会话。

验证

  • 要使用 S3 客户端连接到对象存储并列出可用的存储桶,请找到以下说明来列出存储桶并运行代码单元:

    s3_client.list_buckets()
    Copy to Clipboard Toggle word wrap

    成功响应包括 HTTPStatusCode200,以及类似以下输出的存储桶列表:

    'HTTPStatusCode': 200,
    'Buckets': [{'Name': 'aqs086-image-registry',
    'CreationDate': datetime.datetime(2024, 1, 16, 20, 21, 36, 244000, tzinfo=tzlocal  ())}]
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat