パート1 - Amazon FSx for NetApp ONTAP(FSx ONTAP)をプライベートS3バケットとしてAWS SageMakerに統合する
このセクションでは、AWS SageMakerを使用して、FSx ONTAPをプライベートS3バケットとして設定するためのガイドを提供します。
作成者:
NetAppシニアデータ&アプリケーションサイエンティスト、Jian Jian(Ken)
はじめに
このページでは、SageMakerを例に、FSx ONTAPをプライベートS3バケットとして設定するためのガイダンスを示します。
FSx ONTAPの詳細については、こちらのプレゼンテーションをご覧ください("ビデオリンク")
ユーザーガイド
サーバの作成
SageMakerノートブックインスタンスの作成
-
AWSコンソールを開きます。検索パネルで、SageMakerを検索し、サービス* Amazon SageMaker *をクリックします。
-
Notebookタブの* Notebook Instances を開き、オレンジ色の Create notebook instance *ボタンをクリックします。
-
作成ページで、ノートブックインスタンス名*を入力します。*ネットワーク*パネルを展開し、その他のエントリをデフォルトのままにして、 VPC*、サブネット、セキュリティグループ*を選択します。(この VPC と Subnet は後でFSx ONTAPファイルシステムの作成に使用します)右下のオレンジ色のボタン[Create notebook instance]*をクリックします。
FSx ONTAPファイルシステムの作成
-
AWSコンソールを開きます。検索パネルでFSxを検索し、サービス* FSX *をクリックします。
-
[ファイルシステムの作成]*をクリックします。
-
最初のカード* FSx ONTAP を選択し、 Next *をクリックします。
-
をクリックします。
-
[標準作成(Standard create)]*オプションを選択します。
パネル"]
-
[File system name]*と[SSD storage capacity]*を入力します。
-
必ず* VPC と*サブネット*を SageMaker Notebook *インスタンスと同じにしてください。
-
Storage Virtual Machine *の名前を入力し、SVM(Storage Virtual Machine)の*パスワードを*指定してください。
-
[その他のエントリ]はデフォルトのままにして、右下のオレンジ色のボタン*[次へ]*をクリックします。
-
レビューページの右下にあるオレンジ色の*ファイルシステムの作成*ボタンをクリックします。
-
-
FSxファイルシステムのスピンアップには約* 20~40分*かかる場合があります。
サーバの設定
ONTAPの設定
-
作成したFSxファイルシステムを開きます。ステータスが*利用可能*であることを確認してください。
-
[管理]タブを選択し、[管理エンドポイント- IPアドレス]*と[ ONTAP管理者のユーザー名]*のままにします。
-
作成した* SageMaker Notebookインスタンス*を開き、*[JupyterLab]*をクリックします。
-
Jupyter Labページで、新しい*ターミナル*を開きます。
-
sshコマンドssh < admin user name >@< ONTAP server IP >を入力し、FSx ONTAPファイルシステムにログインします。(ユーザ名とIPアドレスは手順2で取得)* Storage Virtual Machine *の作成時に使用したパスワードを使用してください。
-
次の順序でコマンドを実行します。FSx ONTAPプライベートS3バケット名*の名前には* fsxn- ONTAP を使用します。SVM *引数には Storage Virtual Machine名*を使用してください。
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内にあることを確認します。
-
ONTAPで* set dev コマンドを実行して、特権レベルを dev *に設定することを忘れないでください。
FAQ(2023年9月27日現在)
Q:FSX ONTAPにファイルをアップロードするときに、CreateMultipartUpload操作を呼び出したときに「エラーが発生しました(NotImplemented):要求したs3コマンドが実装されていません」というエラーが表示されるのはなぜですか?
A:プライベートS3バケットとして、FSx ONTAPは最大100MBのファイルのアップロードをサポートしています。S3プロトコルを使用する場合、100MBを超えるファイルは100MBのチャンクに分割され、「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サービスと互換性がありません。