为域添加自定义文件系统 - 亚马逊 SageMaker AI

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

为域添加自定义文件系统

当您创建域时,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 控制台添加自定义文件系统。

先决条件

在向域中添加自定义文件系统之前,必须满足以下要求:

  • 你在 SageMaker AI 中有一个域名。在添加文件系统之前,您需要域 ID。您可以使用 SageMaker AI 控制台查找 ID。您也可以使用 AWS CLI运行 list-domains 命令。

  • 您的 Amazon EFS 或 FSx 适用于 Lustre 的文件系统。 AWS 账户

    For Amazon EFS
    • 有关创建 Amazon EFS 的步骤,请参阅亚马逊弹性文件系统用户指南中的创建 Amazon E FS 文件系统

    • 在 Studio 访问文件系统之前,它必须在与网域相关联的每个子网中都有一个挂载目标。有关为子网分配挂载目标的更多信息,请参阅《Amazon Elastic File System 用户指南》中的创建和管理挂载目标和安全组

    • 对于每个挂载目标,您必须添加 Amazon A SageMaker I 在创建域 AWS 账户 时在您的中创建的安全组。安全组名称的格式为 security-group-for-inbound-nfs-domain-id。有关如何获取您的域名 ID 的说明,请参阅查看领域

    • 您的 IAM 权限必须允许您使用 elasticfilesystem:DescribeMountTargets 操作。有关此操作的更多信息,请参阅服务授权参考中的 Amazon Elastic File System 的操作、资源和条件键

    For FSx for Lustre
    • 有关创建 for Lustre 文件系统的步骤,请参阅《Amazon for Lustre 用户指南》中的 Ama FSx zon for Lustre 入门。 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 控制台

      2. 选择文件系统

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

      4. 如果尚未选择,请选择 “网络和安全” 选项卡。

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

      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

Lustre 文件系统的自定义 FSx 设置。

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 或带有 AWS CLI的 create-space 命令时,他们可以附加文件系统。

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

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