パート 1 - Amazon FSx for NetApp ONTAP (FSx ONTAP) をプライベート S3 バケットとして AWS SageMaker に統合する
このセクションでは、AWS SageMaker を使用して FSx ONTAP をプライベート S3 バケットとして設定する方法について説明します。
はじめに
このページでは、SageMaker を例に、FSx ONTAP をプライベート S3 バケットとして設定する方法について説明します。
FSx ONTAPの詳細については、このプレゼンテーションをご覧ください ("ビデオリンク" )
ユーザーガイド
サーバーの作成
SageMakerノートブックインスタンスを作成する
-
AWS コンソールを開きます。検索パネルで SageMaker を検索し、サービス Amazon SageMaker をクリックします。
-
[ノートブック] タブの [ノートブック インスタンス] を開き、オレンジ色のボタン [ノートブック インスタンスの作成] をクリックします。
-
作成ページで、ノートブックインスタンス名*を入力します。*ネットワーク*パネルを展開します。他のエントリはデフォルトのままにして、*VPC、サブネット、および*セキュリティグループ*を選択します。 (この VPC と サブネット は、後で FSx ONTAPファイル システムを作成するために使用されます) 右下にあるオレンジ色のボタン ノートブック インスタンスの作成 をクリックします。
FSx ONTAPファイルシステムを作成する
-
AWS コンソールを開きます。検索パネルで「Fsx」を検索し、サービス FSx をクリックします。
-
*ファイルシステムの作成*をクリックします。
-
最初のカード FSx ONTAP を選択し、次へ をクリックします。
-
詳細設定ページで。
-
*標準作成*オプションを選択します。
-
*ファイルシステム名*と*SSDストレージ容量*を入力します。
-
SageMaker Notebook インスタンスと同じ VPC と サブネット を使用するようにしてください。
-
ストレージ仮想マシン 名を入力し、SVM (ストレージ仮想マシン) の パスワードを指定 します。
-
他のエントリはデフォルトのままにして、右下にあるオレンジ色のボタン「次へ」をクリックします。
-
レビュー ページの右下にあるオレンジ色のボタン * ファイル システムの作成 * をクリックします。
-
-
FSx ファイル システムの起動には約 20 ~ 40 分 かかる場合があります。
サーバー構成
ONTAP構成
-
作成された FSx ファイル システムを開きます。ステータスが「利用可能」であることを確認してください。
-
管理*タブを選択し、*管理エンドポイント - IP アドレス*と ONTAP管理者ユーザー名*を保持します。
-
作成された*SageMaker Notebookインスタンス*を開き、*JupyterLabを開く*をクリックします。
-
Jupyter Lab ページで、新しい ターミナル を開きます。
-
FSx ONTAPファイル システムにログインするには、ssh コマンド ssh <admin user name>@< ONTAP server IP> を入力します。 (ユーザー名とIPアドレスは手順2で取得します) *ストレージ仮想マシン*作成時に使用したパスワードを使用してください。
-
次の順序でコマンドを実行します。 FSx ONTAPプライベート S3 バケット名 の名前として fsxn-ontap を使用します。 -vserver 引数には ストレージ仮想マシン名 を使用してください。
vserver object-store-server create -vserver fsxn-svm-demo -object-store-server fsx_s3 -is-http-enabled true -is-https-enabled false vserver object-store-server user create -vserver fsxn-svm-demo -user s3user vserver object-store-server group create -name s3group -users s3user -policies FullAccess vserver object-store-server bucket create fsxn-ontap -vserver fsxn-svm-demo -type nas -nas-path /vol1
-
以下のコマンドを実行して、FSx ONTAPプライベート S3 のエンドポイント IP と資格情報を取得します。
network interface show -vserver fsxn-svm-demo -lif nfs_smb_management_1 set adv vserver object-store-server user show
-
将来使用するためにエンドポイントの IP と資格情報を保持します。
クライアント構成
-
SageMaker Notebook インスタンスで、新しい Jupyter ノートブックを作成します。
-
以下のコードを回避策として使用して、FSx ONTAPプライベート S3 バケットにファイルをアップロードします。包括的なコード例については、このノートブックを参照してください。"fsxn_demo.ipynb"
# Setup configurations # -------- Manual configurations -------- seed: int = 77 # Random seed bucket_name: str = 'fsxn-ontap' # The bucket name in ONTAP aws_access_key_id = '<Your ONTAP bucket key id>' # Please get this credential from ONTAP aws_secret_access_key = '<Your ONTAP bucket access key>' # Please get this credential from ONTAP fsx_endpoint_ip: str = '<Your FSx ONTAP IP address>' # Please get this IP address from FSx ONTAP # -------- Manual configurations -------- # Workaround ## Permission patch !mkdir -p vol1 !sudo mount -t nfs $fsx_endpoint_ip:/vol1 /home/ec2-user/SageMaker/vol1 !sudo chmod 777 /home/ec2-user/SageMaker/vol1 ## Authentication for FSx ONTAP as a Private S3 Bucket !aws configure set aws_access_key_id $aws_access_key_id !aws configure set aws_secret_access_key $aws_secret_access_key ## Upload file to the FSx ONTAP Private S3 Bucket %%capture local_file_path: str = <Your local file path> !aws s3 cp --endpoint-url http://$fsx_endpoint_ip /home/ec2-user/SageMaker/$local_file_path s3://$bucket_name/$local_file_path # Read data from FSx ONTAP Private S3 bucket ## Initialize a s3 resource client import boto3 # Get session info region_name = boto3.session.Session().region_name # Initialize Fsxn S3 bucket object # --- Start integrating SageMaker with FSXN --- # This is the only code change we need to incorporate SageMaker with FSXN s3_client: boto3.client = boto3.resource( 's3', region_name=region_name, aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, use_ssl=False, endpoint_url=f'http://{fsx_endpoint_ip}', config=boto3.session.Config( signature_version='s3v4', s3={'addressing_style': 'path'} ) ) # --- End integrating SageMaker with FSXN --- ## Read file byte content bucket = s3_client.Bucket(bucket_name) binary_data = bucket.Object(data.filename).get()['Body']
これで、FSx ONTAPと SageMaker インスタンスの統合は完了です。
便利なデバッグチェックリスト
-
SageMaker Notebook インスタンスと FSx ONTAPファイルシステムが同じ VPC にあることを確認します。
-
権限レベルを dev に設定するには、 ONTAPで set dev コマンドを実行することを忘れないでください。
よくある質問(2023年9月27日現在)
Q: FSx ONTAPにファイルをアップロードするときに、「CreateMultipartUpload 操作の呼び出し時にエラーが発生しました (NotImplemented): 要求した s3 コマンドは実装されていません」というエラーが表示されるのはなぜですか?
A: プライベート S3 バケットとして、FSx ONTAP は最大 100 MB のファイルのアップロードをサポートします。 S3 プロトコルを使用する場合、100 MB を超えるファイルは 100 MB のチャンクに分割され、「CreateMultipartUpload」関数が呼び出されます。ただし、FSx ONTAPプライベート S3 の現在の実装では、この機能はサポートされていません。
Q: FSx ONTAPにファイルをアップロードするときに、「PutObject 操作の呼び出し時にエラーが発生しました (AccessDenied)。アクセスが拒否されました」というエラーが表示されるのはなぜですか?
A: SageMaker Notebook インスタンスから FSx ONTAPプライベート S3 バケットにアクセスするには、AWS 認証情報を FSx ONTAP認証情報に切り替えます。ただし、インスタンスに書き込み権限を付与するには、バケットをマウントし、「chmod」シェル コマンドを実行して権限を変更するという回避策が必要です。
Q: FSx ONTAPプライベート S3 バケットを他の SageMaker ML サービスと統合するにはどうすればよいですか?
A: 残念ながら、SageMaker サービス SDK では、プライベート S3 バケットのエンドポイントを指定する方法は提供されていません。その結果、FSx ONTAP S3 は、Sagemaker Data Wrangler、Sagemaker Clarify、Sagemaker Glue、Sagemaker Athena、Sagemaker AutoML などの SageMaker サービスと互換性がありません。