Skip to main content
NetApp Solutions
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

第 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. 開啟 [ 筆記本 ] 索引標籤下的 * 筆記本執行個體 * ,按一下橘色按鈕 * 建立筆記本執行個體 * 。

    錯誤: AWS SageMaker 筆記型電腦執行個體主控台

  3. 在建立頁面中、
    輸入 * 筆記本執行個體名稱 *
    展開 Network 面板
    保留其他項目的預設值、然後選取 * VPC* 、 * 子網路 * 和 * 安全性群組 * 。(此 VPC 和 * 子網路 * 將於稍後用於建立 FSxN 檔案系統)
    按一下右下方的橘色按鈕 * 建立筆記本執行個體 * 。

    錯誤:建立筆記本執行個體

建立 FSxN 檔案系統

  1. 開啟 AWS 主控台。在搜尋面板中、搜尋 FSX 並按一下服務 * fsx* 。

    錯誤: FSX 面板

  2. 按一下 * 建立檔案系統 * 。

    錯誤:建立檔案系統

  3. 選擇第一張卡 *FSX for NetApp ONTAP * 、然後按一下 * 下一步 * 。

    錯誤:選擇檔案系統類型

  4. 在詳細資料組態頁面中。

    1. 選擇 * 標準 cre* 選項。

      錯誤:建立檔案系統面板

    2. 輸入 * 檔案系統名稱 * 和 * SSD 儲存容量 * 。

      錯誤:指定檔案系統詳細資料

    3. 確保使用 VPC 和 * 子網 * 與 SageMaker Notebook 實例相同。

      錯誤:網路擴大機;安全組態

    4. 輸入 * 儲存虛擬機器 * 名稱、並 * 指定 SVM (儲存虛擬機器)的密碼 * 。

      錯誤:預設儲存虛擬機器組態

    5. 保留其他項目的預設值、然後按一下右下方的橘色按鈕 * 下一步 * 。

      錯誤:確認組態

    6. 按一下檢閱頁面右下角的橘色按鈕 * 建立檔案系統 * 。

      錯誤:檢閱組態並確認建立

  5. 增加 FSX 檔案系統可能需要大約 *20-40 分鐘 * 。

    錯誤:檢查 FSX 主控台

伺服器組態

ONTAP 組態

  1. 開啟建立的 FSX 檔案系統。請確定狀態為 * 可用 * 。

    錯誤:等待後端建立

  2. 選擇 Administration (管理) * 選項卡並保留 *Management Endpoint - IP address 和 ONTAP 管理員用戶名 * 。

    錯誤:檔案系統詳細資料主控台

  3. 開啟建立的 * SageMaker Notebook instance* 、然後按一下 * 開啟 JupyterLab* 。

    錯誤: AWS SageMaker 筆記型電腦執行個體主控台

  4. 在 Jupyter Lab 頁面中,打開一個新的 * 終端 * 。

    錯誤: Jupyter Lab 歡迎頁面

  5. 輸入 ssh 命令 ssh <admin user name>@<ONTAP server IP> 以登入 FSxN ONTAP 檔案系統。(從步驟 2 擷取使用者名稱和 IP 位址)
    請使用建立 * 儲存虛擬機器 * 時所使用的密碼。

    錯誤: Jupyter Lab 終端機

  6. 依照下列順序執行命令。
    我們使用 fsxn-ONTAP 作為 *FSxN Private S3 儲存區名稱 * 的名稱。
    請將 * 儲存虛擬機器名稱 * 用於 * 虛擬伺服器 * 引數。

    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 Private 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 筆記型電腦執行個體和 FSxN 檔案系統位於同一個 VPC 中。

  • 請記得在 ONTAP 上執行 set dev 命令、將權限等級設為 dev

常見問題集(從 2023 年 9 月 27 日起)

問:為什麼在上傳檔案至 FSxN 時、我會收到錯誤「 * An error occurred ( NotImplemented ) when calling the CreateMultipartUpload operation: The S3 command you requested is not Implemplate* 」( * 發生錯誤(未實作))?

答:作為私有 S3 儲存區、 FSxN 支援上傳高達 100MB 的檔案。使用 S3 傳輸協定時、大於 100MB 的檔案會分成 100MB 的區塊、並會呼叫「 CreateMultpartUpload 」功能。不過、 FSxN Private S3 目前的實作並不支援此功能。

問:為什麼在將檔案上傳至 FSxN 時、我在呼叫 PuttObject 作業時收到錯誤「 * 發生錯誤( AccessDenied )」( * 發生錯誤( AccessDenied ))?

答:若要從 SageMaker 筆記型電腦執行個體存取 FSxN 私有 S3 儲存區、請將 AWS 認證切換至 FSxN 認證。不過、若要授予執行個體寫入權限、則需要一種因應措施解決方案、其中包括掛載儲存區、並執行「 chmod 」 Shell 命令來變更權限。

問:如何將 FSxN 私有 S3 儲存區與其他 SageMaker ML 服務整合?

答:很抱歉、 SageMaker 服務 SDK 無法提供方法來指定私有 S3 儲存區的端點。因此、 FSxN S3 與 SageMaker 服務不相容、例如 Sagemaker Data Wrangler 、 Sagemaker 、 SIGemaker 、 Sagemaker Glue 、 Sagemaker Athena 、 Sagemaker AutoML 、 及其他。