为用户提供对自定义图像的访问权限 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

为用户提供对自定义图像的访问权限

本文档提供了相关 step-by-step 说明,让您的用户能够访问其代码编辑器环境中的自定义镜像。您可以使用此页面上的信息为用户的工作流程创建自定义环境。该过程涉及利用:

  • Docker

  • Amazon Command Line Interface

  • Amazon Elastic Container Registry

  • Amazon SageMaker Amazon Web Services Management Console

按照此页面上的指南操作后,Amazon SageMaker 域上的代码编辑器用户将可以从其代码编辑器空间访问自定义图像和环境,以增强其机器学习工作流程。

重要

本页假设您在本地计算机上Docker安装了 Amazon Command Line Interface 和。

要让您的用户在代码编辑器中成功运行其映像,您必须执行以下操作:

让您的用户成功运行映像
  1. 创建 Dockerfile

  2. 从 Dockerfile 中生成镜像

  3. 将图片上传到 Amazon 弹性容器注册表

  4. 将图片附加到您的 Amazon SageMaker 域名

  5. 让您的用户从其代码编辑器空间访问图像

步骤 1:创建 Dockerfile

创建 Dockerfile 以定义创建在用户容器中运行应用程序所需的环境所需的步骤。

重要

您的 Dockerfile 必须符合中提供的规范。Dockerfile 规格

有关正确格式的 Dockerfiles 示例,请参阅。Dockerfile 示例

第 2 步:构建 Dockerfile

在与 Dockerfile 相同的目录中,使用以下命令构建镜像:

docker build -t username/imagename:tag your-account-id.dkr.ecr.Amazon Web Services 区域.amazonaws.com/your-repository-name:tag
重要

您的图片必须采用以下格式进行标记:123456789012.dkr.ecr.your-region.amazonaws.com/your-repository-name:tag

否则,您将无法将其推送到 Amazon 弹性容器注册表存储库。

步骤 3:将镜像推送到 Amazon 弹性容器注册表存储库

生成映像后,使用以下命令登录到您的 Amazon ECR 存储库:

aws ecr get-login-password --region Amazon Web Services 区域 | docker login --username AWS --password-stdin 123456789012.dkr.ecr.Amazon Web Services 区域.amazonaws.com

登录后,使用以下命令推送你的 Dockerfile:

docker push 123456789012.dkr.ecr.Amazon Web Services 区域.amazonaws.com/your-repository-name:tag

第 4 步:将图片附加到用户的 Amazon SageMaker 域名

推送图片后,您必须使用 SageMaker 控制台或从您的 Amazon SageMaker 域名访问该图片 Amazon CLI。

使用 SageMaker 控制台附加图像

使用以下步骤通过 SageMaker 控制台将映像附加到 SageMaker 域中:

  1. 打开SageMaker 控制台

  2. 管理员配置下,选择

  3. 名列表中,选择一个域。

  4. 打开 “环境” 选项卡。

  5. 对于个人 Studio 应用程序的自定义图像,请选择附加图像

  6. 指定图像来源。您可以创建新图像或选择现有图像。

  7. 选择下一步

  8. 选择代码编辑器作为应用程序类型。

  9. 选择提交

使用附加图像 Amazon CLI

使用以下步骤通过以下步骤将图像附加到 SageMaker 域中 Amazon CLI :

  1. 创建 SageMaker 镜像。角色 ARN 必须附加AmazonSageMakerFullAccess策略。

    aws sagemaker create-image \ --image-name code-editor-custom-image \ --role-arn arn:aws:iam::account-id:role/service-role/execution-role
  2. 根据 SageMaker 镜像创建镜像版本。传递您在将映像推送到 Amazon ECR 时所选择的唯一标签值。

    aws sagemaker create-image-version \ --image-name code-editor-custom-image \ --base-image repository-uri:tag
  3. 创建名为的配置文件app-image-config-input.json。应用程序映像配置用作将 SageMaker 图像作为代码编辑器应用程序运行的配置。您也可以在此处指定您的ContainerConfig参数。

    { "AppImageConfigName": "code-editor-app-image-config", "CodeEditorAppImageConfig": { "ContainerConfig": {} } }
  4. AppImageConfig使用您创建的应用程序映像配置文件创建。

    aws sagemaker create-app-image-config \ --cli-input-json file://app-image-config-input.json
  5. 创建一个名为 updateDomain.json 的配置文件。请务必指定您的域名 ID。

    { "DomainId": "domain-id", "DefaultUserSettings": { "CodeEditorAppSettings": { "CustomImages": [ { "ImageName": "code-editor-custom-image", "AppImageConfigName": "code-editor-app-image-config" } ] } } }
  6. 使用配置文件作为输入来调用该UpdateDomain命令。

    注意

    在使用新映像更新域名之前,必须先删除域中的所有应用程序。请注意,您只需要删除应用程序;无需删除用户配置文件或共享空间。有关删除应用程序的说明,请选择以下选项之一。

    aws sagemaker update-domain --cli-input-json file://updateDomain.json

第 5 步:让您的用户从其代码编辑器空间访问图像

现在,您的用户可以从其代码编辑器空间中选择您已附加到其域的图像。

有关选择自定义图像的更多信息,请参阅在 Studio 中启动代码编辑器应用程序