

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 为域添加自定义文件系统
<a name="domain-custom-file-system"></a>

当您创建域时，Amazon A SageMaker I 会向该域添加一个默认 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) 命令。
+ 您的 Amazon EFS 或 FSx 适用于 Lustre 的文件系统。 AWS 账户

------
#### [ 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)。
  + 对于每个挂载目标，您必须添加 Amazon A SageMaker I 在创建域 AWS 账户 时在您的中创建的安全组。安全组名称的格式为 `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 ]
  + 有关创建 for Lustre 文件系统的步骤，请参阅《亚马逊 for L [ustre 用户指南》中的 Amaz FSx on for *Lustre* 入门](https://docs.aws.amazon.com/fsx/latest/LustreGuide/getting-started.html.html)。 FSx FSx 确保 f FSx or Lustre 文件系统存在于：
    + 与您的域相同的 Amazon VPC 中。
    + 您的域中存在的子网之一中。
  + 在 Studio 可以访问 for Lustre 文件系统之前，您必须将域的安全组添加到 for Lustre 文件系统中的所有弹性网络接口 (ENIs) 中。 FSx FSx 如果不执行此步骤，应用程序创建将失败并显示错误。按照以下说明将域安全组添加到 for Lustre 文件系统 ENIs中。 FSx 

**将您的域安全组添加到 FSx Lustre 文件系统 ENIs （控制台）**

    1. 导航至 [Amazon FSx 控制台](https://console.aws.amazon.com/fsx)。

    1. 选择**文件系统**。

    1. 使用 “文件系统 **ID” 下的相应链接， FSx 为 Lustre 文件系统**选择你的。

    1. 如果尚未选择，请选择**网络和安全性**选项卡。

    1. 在**子网**下选择**要查看所有 ENI，请参阅 Amazon EC2 控制台**。这将带您进入亚马逊 EC2 控制台，并显示所有 ENIs 链接到您 FSx 的 for Lustre 文件系统的内容。

    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`  
Lustre 文件系统的自定义 FSx 设置。  
`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 或带有 AWS CLI的 [create-space](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-space.html) 命令时，他们可以附加文件系统。

**要将自定义文件系统附加到空间**
+ 将文件系统配置添加到空间设置中。下面的示例命令将文件系统附加到一个新空间。

  ```
  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` 中导航到自定义文件系统。