Skip to main content
NetApp artificial intelligence solutions
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

パート 1 - Amazon FSx for NetApp ONTAP (FSx ONTAP) をプライベート S3 バケットとして AWS SageMaker に統合する

共同作成者 kevin-hoke

このセクションでは、AWS SageMaker を使用して FSx ONTAP をプライベート S3 バケットとして設定する方法について説明します。

はじめに

このページでは、SageMaker を例に、FSx ONTAP をプライベート S3 バケットとして設定する方法について説明します。

FSx ONTAPの詳細については、このプレゼンテーションをご覧ください ("ビデオリンク" )

ユーザーガイド

サーバーの作成

SageMakerノートブックインスタンスを作成する

  1. AWS コンソールを開きます。検索パネルで SageMaker を検索し、サービス Amazon SageMaker をクリックします。

    AWSコンソールを開く

  2. [ノートブック] タブの [ノートブック インスタンス] を開き、オレンジ色のボタン [ノートブック インスタンスの作成] をクリックします。

    AWS SageMaker ノートブックインスタンスコンソール

  3. 作成ページで、ノートブックインスタンス名*を入力します。*ネットワーク*パネルを展開します。他のエントリはデフォルトのままにして、*VPC、サブネット、および*セキュリティグループ*を選択します。 (この VPC と サブネット は、後で FSx ONTAPファイル システムを作成するために使用されます) 右下にあるオレンジ色のボタン ノートブック インスタンスの作成 をクリックします。

    ノートブックインスタンスを作成する

FSx ONTAPファイルシステムを作成する

  1. AWS コンソールを開きます。検索パネルで「Fsx」を検索し、サービス FSx をクリックします。

    FSxパネル

  2. *ファイルシステムの作成*をクリックします。

    ファイルシステムを作成する

  3. 最初のカード FSx ONTAP を選択し、次へ をクリックします。

    ファイルシステムの種類を選択

  4. 詳細設定ページで。

    1. *標準作成*オプションを選択します。

      ファイルシステムパネルの作成

    2. *ファイルシステム名*と*SSDストレージ容量*を入力します。

      ファイルシステムの詳細を指定する

    3. SageMaker Notebook インスタンスと同じ VPC と サブネット を使用するようにしてください。

      ネットワークとセキュリティの構成

    4. ストレージ仮想マシン 名を入力し、SVM (ストレージ仮想マシン) の パスワードを指定 します。

      デフォルトのストレージ仮想マシン構成

    5. 他のエントリはデフォルトのままにして、右下にあるオレンジ色のボタン「次へ」をクリックします。

      設定を確認する

    6. レビュー ページの右下にあるオレンジ色のボタン * ファイル システムの作成 * をクリックします。

      構成を確認し、作成を確認する

  5. FSx ファイル システムの起動には約 20 ~ 40 分 かかる場合があります。

    FSxコンソールを検査する

サーバー構成

ONTAP構成

  1. 作成された FSx ファイル システムを開きます。ステータスが「利用可能」であることを確認してください。

    バックエンドの作成を待つ

  2. 管理*タブを選択し、*管理エンドポイント - IP アドレス*と ONTAP管理者ユーザー名*を保持します。

    ファイルシステム詳細コンソール

  3. 作成された*SageMaker Notebookインスタンス*を開き、*JupyterLabを開く*をクリックします。

    AWS SageMaker Notebookインスタンスコンソール

  4. Jupyter Lab ページで、新しい ターミナル を開きます。

    Jupyter Lab ウェルカムページ

  5. FSx ONTAPファイル システムにログインするには、ssh コマンド ssh <admin user name>@< ONTAP server IP> を入力します。 (ユーザー名とIPアドレスは手順2で取得します) *ストレージ仮想マシン*作成時に使用したパスワードを使用してください。

    Jupyter Labターミナル

  6. 次の順序でコマンドを実行します。 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

    Jupyter Labターミナル出力

  7. 以下のコマンドを実行して、FSx ONTAPプライベート S3 のエンドポイント IP と資格情報を取得します。

    network interface show -vserver fsxn-svm-demo -lif nfs_smb_management_1
    
    set adv
    
    vserver object-store-server user show
  8. 将来使用するためにエンドポイントの IP と資格情報を保持します。

    Jupyter Labターミナル

クライアント構成

  1. SageMaker Notebook インスタンスで、新しい Jupyter ノートブックを作成します。

    新しいJupyterノートブックを開く

  2. 以下のコードを回避策として使用して、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 サービスと互換性がありません。