

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

# 將自訂檔案系統新增至網域
<a name="domain-custom-file-system"></a>

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

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

您可以讓使用者以下列方式存取您的檔案系統：
+ 透過*共用空間* - 任何屬於您網域的使用者都可以建立共用空間。然後，任何屬於您網域的使用者都可以使用它。
+ 透過*私有空間* - 任何屬於您網域的使用者都可以建立私有空間。然後，只有該使用者才能使用它。
+ 僅以個別使用者身分 - 如果您不想要讓所有使用者可以存取檔案系統，您只能讓特定使用者存取該檔案系統。如果您這樣做，只能在特定使用者建立的私有空間中使用檔案系統。

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

## 先決條件
<a name="domain-custom-file-system-prereqs"></a>

您必須先符合下列要求，才能將自訂檔案系統新增至網域：
+ 您在 SageMaker AI 中有一個網域。在新增檔案系統之前，您需要網域 ID。您可以使用 SageMaker AI 主控台查閱 ID。您也可以使用 AWS CLI執行 [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/list-domains.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/list-domains.html) 命令。
+ 您的 AWS 帳戶中有 Amazon EFS 或 FSx for Lustre 檔案系統。

------
#### [ For Amazon EFS ]
  + 如需建立 Amazon EFS 的步驟，請參閱《Amazon Elastic File System 使用者指南》**中的[建立 Amazon EFS 檔案系統](https://docs.aws.amazon.com/efs/latest/ug/gs-step-two-create-efs-resources.html)。
  + 在 Studio 可以存取您的檔案系統之前，它必須在與網域相關聯的每個子網路中具有掛載目標。如需將掛載目標指派給子網路的詳細資訊，請參閱《Amazon Elastic File System 使用者指南》**中的[建立和管理掛載目標和安全群組](https://docs.aws.amazon.com/efs/latest/ug/accessing-fs.html)。
  + 對於每個掛載目標，您必須在建立網域 AWS 帳戶 時新增 Amazon SageMaker AI 在 中建立的安全群組。安全群組名稱具有格式 `security-group-for-inbound-nfs-domain-id`。如需如何取得網域 ID 的指示，請參閱[檢視網域](domain-view.md)。
  + 您的 IAM 許可必須允許您使用 `elasticfilesystem:DescribeMountTargets` 動作。如需此動作的詳細資訊，請參閱《服務授權參考》**中的 [Amazon Elastic File System 的動作、資源和條件金鑰](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticfilesystem.html)。

------
#### [ For FSx for Lustre ]
  + 如需建立 FSx for Lustre 檔案系統的步驟，請參閱《Amazon FSx for Lustre 使用者指南》**中的[開始使用 Amazon FSx for Lustre](https://docs.aws.amazon.com/fsx/latest/LustreGuide/getting-started.html.html)。確定 FSx for Lustre 檔案系統存在於：
    + 與您網域相同的 Amazon VPC。
    + 您網域中存在的其中一個子網路。
  + 在 Studio 可以存取 FSx for Lustre 檔案系統之前，您必須將網域的安全群組新增至 FSx for Lustre 檔案系統中的所有彈性網路介面 (ENI)。若沒有此步驟，應用程式建立會失敗並顯示錯誤。使用下列指示，將網域安全群組新增至 FSx for Lustre 檔案系統 ENI。

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

    1. 導覽至 [Amazon FSx 主控台](https://console.aws.amazon.com/fsx)。

    1. 選擇**檔案系統**。

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

    1. 如果尚未選取，請選擇**網路與安全**索引標籤。

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

    1. 針對每個 ENI：

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

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

       1. 在下拉式功能表中，選擇**選擇安全群組**。

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

          安全群組名稱具有格式 `security-group-for-inbound-nfs-domain-id`。如需如何取得網域 ID 的指示，請參閱[檢視網域](domain-view.md)。

       1. 選擇**新增安全群組**。

------

## 使用 將自訂檔案系統新增至網域 AWS CLI
<a name="domain-custom-file-system-cli"></a>

若要使用 將自訂檔案系統新增至網域或使用者設定檔 AWS CLI，當您使用下列任何命令時，會傳遞`CustomFileSystemConfigs`定義：
+ [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-domain.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-domain.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-domain.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-domain.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-user-profile.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-user-profile.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-user-profile.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-user-profile.html)

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

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

  ```
  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 檔案的形式傳遞檔案系統組態，如下列範例所示。

**Example 檔案系統設定檔案**  
上述範例中的檔案 `file-system-settings.json` 具有下列設定：  

```
{
    "CustomFileSystemConfigs":
    [
        {
            "FSxLustreFileSystemConfig":
            {
              "FileSystemId": "file-system-id",
              "FileSystemPath": "/"
            }
        }
    ]
}
```
此範例組態具有下列金鑰：    
`CustomFileSystemConfigs`  
自訂檔案系統的設定 (僅支援 Amazon EFS 檔案系統)。  
`FSxLustreFileSystemConfig`  
自訂 FSx for Lustre 檔案系統的設定。  
`FileSystemId`  
Amazon EFS 檔案系統的 ID。  
`FileSystemPath`  
Studio 中網域使用者在其空間中可存取的檔案系統目錄路徑。允許的使用者只能存取此目錄和以下目錄。預設路徑是檔案系統根目錄：`/`。

```
{
    "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-domain` 或 `create-user-profile` 命令：  

```
{
    "CustomPosixUserConfig":
    {
        "Uid": UID,
        "Gid": GID
    }
}
```
此範例組態具有下列金鑰：    
`CustomPosixUserConfig`  
用於檔案系統操作的預設 POSIX 身分。您可以使用這些設定，將現有的 POSIX 許可結構套用至存取自訂檔案系統的使用者設定檔。在 POSIX 許可層級，您可以控制哪些使用者可以存取檔案系統，以及他們可以存取哪些檔案或資料。  
您也可以使用 `create-user-profile` 命令，在建立使用者設定檔時套用 `CustomPosixUserConfig` 設定。您套用至使用者設定檔的設定會覆寫您套用至相關聯網域的設定。  
您可以在使用 `create-domain` 和 `create-user-profile` 命令時套用 `CustomPosixUserConfig` 設定。不過，當您執行下列動作時，無法套用這些設定：  
+ 針對已與任何使用者設定檔相關聯的網域使用 `update-domain` 命令。您只能將這些設定套用至沒有使用者設定檔的網域。
+ 使用 `update-user-profile` 命令。若要將這些設定套用到您已建立的設定檔，請刪除設定檔，然後建立一個具有已更新設定的新設定檔。  
`Uid`  
POSIX 使用者 ID。預設值為 200001。  
`Gid`  
POSIX 群組 ID。預設值為 1001。

## 使用 將自訂檔案系統連接至空間 AWS CLI
<a name="space-custom-efs-cli"></a>

在將自訂檔案系統新增至網域之後，網域使用者可以將檔案系統連接至他們建立的空間。例如，當使用 Studio 或 [create-space](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-space.html) 命令搭配 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` 內導覽至自訂檔案系統。