將自訂檔案系統新增至網域 - Amazon SageMaker AI

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將自訂檔案系統新增至網域

當您建立網域時,Amazon SageMaker AI 會將預設 Amazon Elastic File System (Amazon EFS) 磁碟區新增至網域。SageMaker AI 會為您建立此磁碟區。您也可以選擇新增自訂 Amazon EFS 或已建立的自訂 Amazon FSx for Lustre 檔案系統。新增後,您的檔案系統可供屬於您網域的使用者使用。您的使用者可以在使用 Amazon SageMaker Studio 時存取檔案系統。他們可以將檔案系統連接至他們為下列受支援應用程式建立的空間:

  • JupyterLab

  • 程式碼編輯器

在執行空間並啟動應用程式之後,您的使用者可以存取檔案系統包含的任何資料、程式碼或其他成品。

您可以讓使用者以下列方式存取您的檔案系統:

  • 透過共用空間 - 任何屬於您網域的使用者都可以建立共用空間。然後,任何屬於您網域的使用者都可以使用它。

  • 透過私有空間 - 任何屬於您網域的使用者都可以建立私有空間。然後,只有該使用者才能使用它。

  • 僅以個別使用者身分 - 如果您不想要讓所有使用者可以存取檔案系統,您只能讓特定使用者存取該檔案系統。如果您這樣做,只能在特定使用者建立的私有空間中使用檔案系統。

您可以使用 Amazon SageMaker API、AWSSDKs或 新增自訂檔案系統AWS CLI。您無法使用 SageMaker AI 主控台新增自訂檔案系統。

先決條件

您必須先符合下列要求,才能將自訂檔案系統新增至網域:

  • 您在 SageMaker AI 中有一個網域。在新增檔案系統之前,您需要網域 ID。您可以使用 SageMaker AI 主控台查閱 ID。您也可以使用 AWS CLI 執行 list-domains 命令。

  • 您的 AWS 帳戶 中有 Amazon EFS 或 FSx for Lustre 檔案系統。

    For Amazon EFS
    • 如需建立 Amazon EFS 的步驟,請參閱《Amazon Elastic File System 使用者指南》中的建立 Amazon EFS 檔案系統

    • 在 Studio 可以存取您的檔案系統之前,它必須在與網域相關聯的每個子網路中具有掛載目標。如需將掛載目標指派給子網路的詳細資訊,請參閱《Amazon Elastic File System 使用者指南》中的建立和管理掛載目標和安全群組

    • 對於每個掛載目標,您必須在建立網域AWS 帳戶時新增 Amazon SageMaker AI 在 中建立的安全群組。安全群組名稱具有格式 security-group-for-inbound-nfs-domain-id。如需如何取得網域 ID 的指示,請參閱檢視網域

    • 您的 IAM 許可必須允許您使用 elasticfilesystem:DescribeMountTargets 動作。如需此動作的詳細資訊,請參閱《服務授權參考》中的 Amazon Elastic File System 的動作、資源和條件金鑰

    For FSx for Lustre
    • 如需建立 FSx for Lustre 檔案系統的步驟,請參閱《Amazon FSx for Lustre 使用者指南》中的開始使用 Amazon FSx for Lustre。確定 FSx for Lustre 檔案系統存在於:

      • 與您網域相同的 Amazon VPC。

      • 您網域中存在的其中一個子網路。

    • 在 Studio 可以存取 FSx for Lustre 檔案系統之前,您必須將網域的安全群組新增至 FSx for Lustre 檔案系統中的所有彈性網路介面 (ENI)。若沒有此步驟,應用程式建立會失敗並顯示錯誤。使用下列指示,將網域安全群組新增至 FSx for Lustre 檔案系統 ENI。

      將您的網域安全群組新增至 FSx for Lustre 檔案系統 ENI (主控台)
      1. 導覽至 Amazon FSx 主控台

      2. 選擇檔案系統

      3. 使用檔案系統 ID 下的對應連結,選擇您的 FSx for Lustre 檔案系統。

      4. 如果尚未選取,請選擇網路與安全索引標籤。

      5. 子網路下選擇若要查看所有 ENI,請參閱 Amazon EC2 主控台。這將帶您前往 Amazon EC2 主控台,並顯示連結至 FSx for Lustre 檔案系統的所有 ENI。

      6. 針對每個 ENI:

        1. 網路介面 ID 下選擇對應的連結,以選擇 ENI。

        2. 選擇摘要頁面右上角的動作,以展開下拉式功能表。

        3. 在下拉式功能表中,選擇選擇安全群組

        4. 搜尋您的網域安全群組。

          安全群組名稱具有格式 security-group-for-inbound-nfs-domain-id。如需如何取得網域 ID 的指示,請參閱檢視網域

        5. 選擇新增安全群組

使用 將自訂檔案系統新增至網域AWS CLI

若要使用 將自訂檔案系統新增至網域或使用者設定檔AWS CLI,當您使用下列任何命令時,會傳遞CustomFileSystemConfigs定義:

下列範例顯示如何將檔案系統新增至現有的網域或使用者設定檔。

新增可在共用空間存取的檔案系統
  • 更新網域的預設空間設定。下列範例會將檔案系統設定新增至預設空間設定:

    aws sagemaker update-domain --domain-id domain-id \ --default-space-settings file://file-system-settings.json

    此範例會以 JSON 檔案的形式傳遞檔案系統組態,如後續範例所示。

新增可在私有空間存取的檔案系統
  • 更新網域的預設使用者設定。下列範例會將檔案系統設定新增至預設使用者設定:

    aws sagemaker update-domain --domain-id domain-id \ --default-user-settings file://file-system-settings.json

    此範例會以 JSON 檔案的形式傳遞檔案系統組態,如後續範例所示。

新增僅個別使用者可以存取的檔案系統
  • 更新使用者的使用者設定檔。下列範例會將檔案系統設定新增至使用者設定檔:

    aws sagemaker update-user-profile --domain-id domain-id \ --user-profile-name user-profile-name \ --user-settings file://file-system-settings.json

    此範例會以 JSON 檔案的形式傳遞檔案系統組態,如下列範例所示。

範例 檔案系統設定檔案

上述範例中的檔案 file-system-settings.json 具有下列設定:

For your FSx for Lustre file systems
{ "CustomFileSystemConfigs": [ { "FSxLustreFileSystemConfig": { "FileSystemId": "file-system-id", "FileSystemPath": "/" } } ] }

此範例組態具有下列金鑰:

CustomFileSystemConfigs

自訂檔案系統的設定 (僅支援 Amazon EFS 檔案系統)。

FSxLustreFileSystemConfig

自訂 FSx for Lustre 檔案系統的設定。

FileSystemId

Amazon EFS 檔案系統的 ID。

FileSystemPath

Studio 中網域使用者在其空間中可存取的檔案系統目錄路徑。允許的使用者只能存取此目錄和以下目錄。預設路徑是檔案系統根目錄:/

For your Amazon EFS file systems
{ "CustomFileSystemConfigs": [ { "EFSFileSystemConfig": { "FileSystemId": "file-system-id", "FileSystemPath": "/" } } ] }

此範例組態具有下列金鑰:

CustomFileSystemConfigs

自訂檔案系統的設定 (僅支援 Amazon EFS 檔案系統)。

EFSFileSystemConfig

自訂 Amazon EFS 檔案系統的設定。

FileSystemId

Amazon EFS 檔案系統的 ID。

FileSystemPath

Studio 中網域使用者在其空間中可存取的檔案系統目錄路徑。允許的使用者只能存取此目錄和以下目錄。預設路徑是檔案系統根目錄:/

當您將檔案系統指派給網域的預設空間設定時,您亦須在設定中包含執行角色:

{ "ExecutionRole": "execution-role-arn" }

此範例組態具有下列金鑰:

ExecutionRole

網域使用者的預設執行角色。

如果您想要針對檔案系統套用 POSIX 許可,您也可以將下列設定傳遞至 create-domaincreate-user-profile 命令:

{ "CustomPosixUserConfig": { "Uid": UID, "Gid": GID } }

此範例組態具有下列金鑰:

CustomPosixUserConfig

用於檔案系統操作的預設 POSIX 身分。您可以使用這些設定,將現有的 POSIX 許可結構套用至存取自訂檔案系統的使用者設定檔。在 POSIX 許可層級,您可以控制哪些使用者可以存取檔案系統,以及他們可以存取哪些檔案或資料。

您也可以使用 create-user-profile 命令,在建立使用者設定檔時套用 CustomPosixUserConfig 設定。您套用至使用者設定檔的設定會覆寫您套用至相關聯網域的設定。

注意

您可以在使用 create-domaincreate-user-profile 命令時套用 CustomPosixUserConfig 設定。不過,當您執行下列動作時,無法套用這些設定:

  • 針對已與任何使用者設定檔相關聯的網域使用 update-domain 命令。您只能將這些設定套用至沒有使用者設定檔的網域。

  • 使用 update-user-profile 命令。若要將這些設定套用到您已建立的設定檔,請刪除設定檔,然後建立一個具有已更新設定的新設定檔。

Uid

POSIX 使用者 ID。預設值為 200001。

Gid

POSIX 群組 ID。預設值為 1001。

使用 AWS CLI 將自訂檔案系統連接至空間

在將自訂檔案系統新增至網域之後,網域使用者可以將檔案系統連接至他們建立的空間。例如,當使用 Studio 或 create-space 命令搭配 AWS CLI 時,他們可以連接檔案系統。

將自訂檔案系統連接至空間
  • 將檔案系統組態新增至空間設定。下列範例命令會將檔案系統連接至新的空間。

    aws sagemaker create-space \ --space-name space-name \ --domain-id domain-id \ --ownership-settings "OwnerUserProfileName=user-profile-name" \ --space-sharing-settings "SharingType=Private" \ --space-settings file://space-settings.json

    在此範例中,檔案 space-settings.json 具有下列設定,其中包含具有 FileSystemId 金鑰的 CustomFileSystems 組態。

    For your FSx for Lustre file systems
    { "AppType": "JupyterLab", "JupyterLabAppSettings": { "DefaultResourceSpec": { "InstanceType": "instance-type" } }, "CustomFileSystems": [ { "FSxLustreFileSystem": { "FileSystemId": "file-system-id" } } ] }
    For your Amazon EFS file systems
    { "AppType": "JupyterLab", "JupyterLabAppSettings": { "DefaultResourceSpec": { "InstanceType": "instance-type" } }, "CustomFileSystems": [ { "EFSFileSystem": { "FileSystemId": "file-system-id" } } ] }

    SageMaker AI 會在下列路徑建立符號連結:/home/sagemaker-user/custom-file-systems/file-system-type/file-system-id。如此一來,網域使用者可以從主目錄 /home/sagemaker-user 內導覽至自訂檔案系統。