为域添加自定义文件系统 - 亚马逊 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 账户

    对于亚马逊 EFS:

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

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

    • 对于每个挂载目标,您必须添加 Amazon A SageMaker I 在创建域 AWS 账户 时在您的中创建的安全组。安全组名称的格式为 security-group-for-inbound-nfs-domain-id

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

    对于 fo FSx r Lustre:

    • 有关创建 for Lustre FSx 的步骤,请参阅《亚马逊 for L ustre 用户指南》中的 Ama FSx zon for Lustre 入门。 FSx

    • 确保 f FSx or Lustre 文件系统与您的域位于同一 VPC 中,并且位于域中存在的其中一个子网中。

    • 在 Studio 可以访问 fo FSx r Lustre 文件系统之前,请附上SecurityGroupIdForInboundNfs所有 ENIs Lustre 文件系统 FSx 。 FSx 为此,你可以在控制台中前往 Lustre 文件系统,然后单击To see all the ENIs, see the Amazon EC2 console其中可以查看 Lustre 的所有 ENIs 附件。 FSx

      或者,你也可以通过调用 fsx:describeFileSystems API AWS CLI 或 API 找到 ENIs 附件 for Lustre。 FSx 对于 for Lustre 的每个 ENI,您都必须添加 Amazon SageMaker AI 在创建域 AWS 账户 时在您的中创建的安全组。 FSx 安全组名称的格式为 security-group-for-inbound-nfs-domain-id。如果不执行此步骤,应用程序创建将因客户错误而失败。

使用以下命令将自定义文件系统添加到域中 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 中导航到自定义文件系统。