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

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

共同作成者

作成者:
NetAppシニアデータ&アプリケーションサイエンティスト、Jian Jian(Ken)

はじめに

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

FSxNの詳細については、このプレゼンテーション("ビデオリンク")

ユーザーガイド

サーバの作成

SageMakerノートブックインスタンスの作成

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

    エラー:AWSコンソールを開く

  2. Notebookタブの* Notebook Instances を開き、オレンジ色の Create notebook instance *ボタンをクリックします。

    エラー:AWS SageMaker Notebookインスタンスコンソール

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

    エラー:ノートブックインスタンスの作成

FSxNファイルシステムの作成

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

    エラー:FSxパネル

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

    エラー:ファイルシステムの作成

  3. 最初のカード* FSx for NetApp ONTAP を選択し、 Next *をクリックします。

    エラー:ファイルシステムタイプを選択してください

  4. をクリックします。

    1. [標準作成(Standard create)]*オプションを選択します。

      エラー:ファイルシステムの作成パネル

    2. [File system name]*と[SSD storage capacity]*を入力します。

      エラー:ファイルシステムの詳細を指定してください

    3. 必ず* VPC と*サブネット*を SageMaker Notebook *インスタンスと同じにしてください。

      エラー:ネットワークとセキュリティの設定

    4. Storage Virtual Machine *の名前を入力し、SVM(Storage Virtual Machine)の*パスワードを*指定してください。

      エラー:デフォルトのStorage Virtual Machine設定

    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. sshコマンドssh < admin user name >@< ONTAP server IP >を入力して、FSxN ONTAPファイルシステムにログインします。(ユーザ名とIPアドレスは手順2で取得されます)。
    Storage Virtual Machine *の作成時に使用したパスワードを使用してください。

    エラー: Jupyter Lab端末

  6. 次の順序でコマンドを実行します。
    FSxNプライベート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

    エラー: Jupyter Lab端末出力

  7. 次のコマンドを実行して、FSxNプライベート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. 解決策を回避してFSxNプライベート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 FSxN IP address>'             # Please get this IP address from FSXN
    # -------- 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 FSxN 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 FSxN 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 FSxN 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']

これで、FSxNとSageMakerインスタンスの統合は終了です。

便利なデバッグチェックリスト

  • SageMaker NotebookインスタンスとFSxNファイルシステムが同じVPC内にあることを確認します。

  • ONTAPで* set dev コマンドを実行して、特権レベルを dev *に設定することを忘れないでください。

FAQ(2023年9月27日現在)

Q: FSxNにファイルをアップロードするときに、CreateMultipartUpload操作を呼び出したときに「エラーが発生しました(NotImplemented):要求したs3コマンドが実装されていません」というエラーが表示されるのはなぜですか?

A:プライベートS3バケットとして、FSxNは最大100MBのファイルのアップロードをサポートしています。S3プロトコルを使用する場合、100MBを超えるファイルは100MBのチャンクに分割され、「CreateMultipartUpload」関数が呼び出されます。ただし、FSxNプライベートS3の現在の実装では、この機能はサポートされていません。

Q: FSxNにファイルをアップロードするときに、「* PutObject操作を呼び出したときにエラーが発生しました(AccessDenied):アクセスが拒否されました*」というエラーが表示されるのはなぜですか?

A:SageMaker NotebookインスタンスからFSxNプライベートS3バケットにアクセスするには、AWSクレデンシャルをFSxNクレデンシャルに切り替えます。ただし、インスタンスに書き込み権限を付与するには、バケットをマウントし、「chmod」シェルコマンドを実行して権限を変更する 回避策 解決策 が必要です。

Q: FSxNプライベートS3バケットを他のSageMaker MLサービスと統合するにはどうすればよいですか?

A:残念ながら、SageMakerサービスSDKは、プライベートS3バケットのエンドポイントを指定する方法を提供していません。そのため、FSxN S3はSagemaker Data Wrangler、Sagemaker Clarify、Sagemaker Glue、Sagemaker Athena、Sagemaker AutoMLなどのSageMakerサービスと互換性がありません。 その他。