第2章 S3 クライアントの作成
ワークベンチから S3 互換オブジェクトストアに保存されているデータと対話するには、Boto3 などの AWS SDK を使用して AWS S3 サービスへのリクエストを処理するローカルクライアントを作成する必要があります。
Boto3 は、AWS S3 や S3 互換オブジェクトストレージなどの AWS サービスを作成および管理するための API を提供する Python 用の AWS SDK です。
ワークベンチから S3 サービス用の Boto3 クライアントを設定すると、S3 互換オブジェクトストアに接続してデータを使用できるようになります。
前提条件
- S3 互換オブジェクトストアにアクセスできる。
- オブジェクトストアのバケットにファイルを保存している。
- Red Hat OpenShift AI にログインしている。
-
特殊な OpenShift AI グループを使用している場合は、OpenShift のユーザーグループ、または、管理者グループ (
rhoai-users
、rhoai-admins
など) に属している。 - データサイエンスプロジェクトを作成した。
- Jupyter ノートブックイメージを使用して、プロジェクトにワークベンチを追加している。
- S3 互換ストレージアカウントの認証情報に基づいて、ワークベンチのデータ接続を設定している。
手順
- OpenShift AI ダッシュボードから、Data Science Projects をクリックします。
- 開始するワークベンチが含まれているプロジェクトの名前をクリックします。
- 実行されていないワークベンチを開始するには、そのワークベンチの Status 列のトグルをクリックします。
ワークベンチの横にある Open リンクをクリックします。
Jupyter 環境ウィンドウが開きます。
- ツールバーで、Git Clone アイコンをクリックし、Clone a Repository を選択します。
-
Clone a repo ダイアログで、URL
https://github.com/opendatahub-io/odh-doc-examples.git
を入力し、Clone をクリックします。 -
ファイルブラウザーで、新しく作成された
odh-doc-examples
フォルダーを選択します。 新しく作成された
storage
フォルダーをダブルクリックします。s3client_examples.ipynb
という名前の Jupyter ノートブックが表示されます。s3client_examples.ipynb
ファイルをダブルクリックしてノートブックを起動します。ノートブックが開きます。次のタスクのコード例が表示されます。
- Boto3 と必要な Boto3 ライブラリーのインストール
- S3 クライアントセッションの作成
- S3 クライアント接続の作成
- ファイルのリスト表示
- バケットの作成
- バケットへのファイルのアップロード
- バケットからのファイルのダウンロード
- バケット間でのファイルのコピー
- バケットからのオブジェクトの削除
- バケットの削除
ノートブックで、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 ())}]