

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

# Amazon SageMaker Studio 中的代码编辑器
<a name="code-editor"></a>

基于 [Code-OSS，Visual Studio Code - Open Source](https://github.com/microsoft/vscode#visual-studio-code---open-source-code---oss) 的 Code Editor，可帮助您编写、测试、调试和运行分析与机器学习代码。代码编辑器扩展并与 Amazon SageMaker Studio 完全集成。它还支持 [Open VSX Registry](https://open-vsx.org/) 中提供的集成式开发环境（IDE）扩展。下页将介绍 Code Editor 的相关信息和使用方法。

Code Editor 预装了 [AWS Toolkit for VS Cod](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/welcome.html) e 扩展 [Amazon CodeWhisperer](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/codewhisperer.html)，它允许连接到 AWS 服务 诸如通用的、由机器学习驱动的代码生成器，该生成器可以实时提供代码推荐。有关扩展的更多信息，请参阅[Code Editor 连接和扩展](code-editor-use-connections-and-extensions.md)。

**重要**  
截至 2023 年 11 月 30 日，之前的亚马逊 SageMaker Studio 体验现在被命名为 Amazon St SageMaker udio Classic。以下部分专门介绍如何使用更新后的 Studio 体验。有关使用 Studio Classic 应用程序的信息，请参阅 [亚马逊 SageMaker Studio 经典版](studio.md)。

要启动 Code Editor，请创建 Code Editor 专用空间。Code Editor 空间使用单个 Amazon Elastic Compute Cloud (Amazon EC2) 实例进行计算，并使用单个 Amazon Elastic Block Store (Amazon EBS) 卷进行存储。您空间中的所有内容，如代码、Git 配置文件和环境变量，都存储在同一个 Amazon EBS 卷上。该卷有 3000 个 IOPS，吞吐量为 125 MBps。您的管理员已为您的空间配置了默认 Amazon EBS 存储设置。

默认存储空间为 5 GB，但管理员可以增加您的存储空间。有关更多信息，请参阅 [更改默认存储容量](code-editor-admin-storage-size.md)。

存储卷内用户的工作目录是 `/home/sagemaker-user`。如果您指定自己的 AWS KMS 密钥来加密卷，则工作目录中的所有内容都将使用您的客户托管密钥进行加密。如果您未指定 AWS KMS 密钥，则使用 AWS 托管密钥对内部`/home/sagemaker-user`数据进行加密。无论您是否指定 AWS KMS 密钥，工作目录之外的所有数据都使用 AWS 托管密钥进行加密。

您可以通过更改运行 Code Editor 应用程序的 Amazon EC2 实例类型来扩大或缩小计算规模。在更改相关实例类型之前，您必须先停止 Code Editor 空间。有关更多信息，请参阅 [代码编辑器应用程序实例和映像](code-editor-use-instances.md)。

管理员可能会为您提供生命周期配置，以自定义您的环境。您可以在创建空间时指定生命周期配置。有关更多信息，请参阅 [Code Editor 生命周期配置](code-editor-use-lifecycle-configurations.md)。

如果您有 Amazon EFS 卷，还可以自带文件存储系统。

![\[Code Editor 应用程序用户界面的欢迎页面。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/code-editor/code-editor-home.png)


**Topics**
+ [使用 Code Editor](code-editor-use.md)
+ [Code Editor 管理员指南](code-editor-admin.md)

# 使用 Code Editor
<a name="code-editor-use"></a>

本节中的主题提供了使用代码编辑器的指南，包括如何启动 AWS 服务、添加连接、关闭资源等。创建 Code Editor 空间后，您可以直接通过浏览器访问 Code Editor 会话。

在 Code Editor 环境中，您可以执行以下操作：
+ 访问保存在主目录中的所有构件
+ 克隆您的 GitHub 仓库并提交更改
+ 访问 SageMaker Python软件开发工具包

您可以返回 Studio 查看在 Code Editor 环境中创建的任何资产，如实验、管道或训练作业。

**Topics**
+ [检查 Code Editor 的版本](code-editor-use-version.md)
+ [代码编辑器应用程序实例和映像](code-editor-use-instances.md)
+ [在 Studio 中启动代码编辑器应用程序](code-editor-use-studio.md)
+ [使用启动代码编辑器应用程序 AWS CLI](code-editor-launch-cli.md)
+ [在 Code Editor 中克隆存储库](code-editor-use-clone-a-repository.md)
+ [Code Editor 连接和扩展](code-editor-use-connections-and-extensions.md)
+ [关闭 Code Editor 资源](code-editor-use-log-out.md)

# 检查 Code Editor 的版本
<a name="code-editor-use-version"></a>

以下步骤说明了如何检查 Code Editor 应用程序的版本。

**检查 Code Editor 应用程序版本**

1. 启动并运行 Code Editor 空间，并导航至 Code Editor 应用程序用户界面。有关更多信息，请参阅 [在 Studio 中启动代码编辑器应用程序](code-editor-use-studio.md)。

1. 在 Code Editor 用户界面的左上角，选择菜单按钮 (![\[Hamburger menu icon with three horizontal lines.\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/code-editor/code-editor-menu-icon.png))。然后，选择**帮助**。然后，选择**关于**。

# 代码编辑器应用程序实例和映像
<a name="code-editor-use-instances"></a>

只有部分实例与 Code Editor 应用程序兼容。您可以从**实例**下拉菜单中选择与您的使用场景相匹配的实例类型。

**快速启动**实例的启动速度比其他实例快得多。有关 Studio 中快速启动实例类型的更多信息，请参阅 [可用于 Amazon SageMaker Studio 经典笔记本的实例类型](notebooks-available-instance-types.md)。

**注意**  
如果您在配置 Code Editor 应用程序时使用 GPU 实例类型，则还必须使用基于 GPU 的映像。选择实例类型时，Code Editor 空间用户界面会自动选择兼容的映像。

在空间内，您的数据存储在 Amazon EBS 卷中，该卷独立于实例的生命周期而存在。您在更换实例时不会丢失数据。如果 Code Editor 空间为 `Running`，则必须在更改实例类型前停止空间。

下表列出了 ARNs 每个区域可用的代码编辑器 CPU 和 GPU 镜像。


|  Region  |  CPU  |  GPU  | 
| --- | --- | --- | 
|  us-east-1  | arn:aws:sagemaker:us-east-1:885854791233:image/sagemaker-distribution-cpu |  arn:aws:sagemaker:us-east-1:885854791233:image/sagemaker-distribution-gpu | 
|  us-east-2  | arn:aws:sagemaker:us-east-2:37914896644:image/sagemaker-distribution-cpu | arn:aws:sagemaker:us-east-2:37914896644:image/sagemaker-distribution-gpu | 
|  us-west-1  | arn:aws:sagemaker:us-west-1:053634841547:image/sagemaker-distribution-cpu | arn:aws:sagemaker:us-west-1:053634841547:image/sagemaker-distribution-gpu | 
|  us-west-2  | arn:aws:sagemaker:us-west-2:542918446943:image/sagemaker-distribution-cpu |  arn:aws:sagemaker:us-west-2:542918446943:image/sagemaker-distribution-gpu | 
|  af-south-1  | arn:aws:sagemaker:af-south-1:238384257742:image/sagemaker-distribution-cpu | arn:aws:sagemaker:af-south-1:238384257742:image/sagemaker-distribution-gpu | 
|  ap-east-1  | arn:aws:sagemaker:ap-east-1:523751269255:image/sagemaker-distribution-cpu | arn:aws:sagemaker:ap-east-1:523751269255:image/sagemaker-distribution-gpu | 
|  ap-south-1  | arn:aws:sagemaker:ap-south-1:245090515133:image/sagemaker-distribution-cpu | arn:aws:sagemaker:ap-south-1:245090515133:image/sagemaker-distribution-gpu | 
|  ap-northeast-2  | arn:aws:sagemaker:ap-northeast-2:064688005998:image/sagemaker-distribution-cpu | arn:aws:sagemaker:ap-northeast-2:064688005998:image/sagemaker-distribution-gpu | 
|  ap-southeast-1  | arn:aws:sagemaker:ap-southeast-1:022667117163:image/sagemaker-distribution-cpu | arn:aws:sagemaker:ap-southeast-1:022667117163:image/sagemaker-distribution-gpu | 
|  ap-southeast-2  | arn:aws:sagemaker:ap-southeast-2:648430277019:image/sagemaker-distribution-cpu | arn:aws:sagemaker:ap-southeast-2:648430277019:image/sagemaker-distribution-gpu | 
|  ap-northeast-1  | arn:aws:sagemaker:ap-northeast-1:010972774902:image/sagemaker-distribution-cpu | arn:aws:sagemaker:ap-northeast-1:010972774902:image/sagemaker-distribution-gpu | 
|  ca-central-1  | arn:aws:sagemaker:ca-central-1:481561238223:image/sagemaker-distribution-cpu | arn:aws:sagemaker:ca-central-1:481561238223:image/sagemaker-distribution-gpu | 
|  eu-central-1  | arn:aws:sagemaker:eu-central-1:545423591354:image/sagemaker-distribution-cpu | arn:aws:sagemaker:eu-central-1:545423591354:image/sagemaker-distribution-gpu | 
|  eu-west-1  | arn:aws:sagemaker:eu-west-1:819792524951:image/sagemaker-distribution-cpu | arn:aws:sagemaker:eu-west-1:819792524951:image/sagemaker-distribution-gpu | 
|  eu-west-2  | arn:aws:sagemaker:eu-west-2:021081402939:image/sagemaker-distribution-cpu | arn:aws:sagemaker:eu-west-2:021081402939:image/sagemaker-distribution-gpu | 
|  eu-west-3  | arn:aws:sagemaker:eu-west-3:856416204555:image/sagemaker-distribution-cpu | arn:aws:sagemaker:eu-west-3:856416204555:image/sagemaker-distribution-gpu | 
|  eu-north-1  | arn:aws:sagemaker:eu-north-1:175620155138:image/sagemaker-distribution-cpu | arn:aws:sagemaker:eu-north-1:175620155138:image/sagemaker-distribution-gpu | 
|  eu-south-1  | arn:aws:sagemaker:eu-south-1:810671768855:image/sagemaker-distribution-cpu | arn:aws:sagemaker:eu-south-1:810671768855:image/sagemaker-distribution-gpu | 
|  sa-east-1  | arn:aws:sagemaker:sa-east-1:567556641782:image/sagemaker-distribution-cpu | arn:aws:sagemaker:sa-east-1:567556641782:image/sagemaker-distribution-gpu | 
|  ap-northeast-3  | arn:aws:sagemaker:ap-northeast-3:564864627153:image/sagemaker-distribution-cpu | arn:aws:sagemaker:ap-northeast-3:564864627153:image/sagemaker-distribution-gpu | 
|  ap-southeast-3  | arn:aws:sagemaker:ap-southeast-3:370607712162:image/sagemaker-distribution-cpu | arn:aws:sagemaker:ap-southeast-3:370607712162:image/sagemaker-distribution-gpu | 
|  me-south-1  | arn:aws:sagemaker:me-south-1:523774347010:image/sagemaker-distribution-cpu | arn:aws:sagemaker:me-south-1:523774347010:image/sagemaker-distribution-gpu | 
|  me-central-1  | arn:aws:sagemaker:me-central-1:358593528301:image/sagemaker-distribution-cpu | arn:aws:sagemaker:me-central-1:358593528301:image/sagemaker-distribution-gpu | 
|  il-central-1  | arn:aws:sagemaker:il-central-1:080319125002:image/sagemaker-distribution-cpu | arn:aws:sagemaker:il-central-1:080319125002:image/sagemaker-distribution-gpu | 
|  cn-north-1  | arn:aws:sagemaker:cn-north-1:674439102856:image/sagemaker-distribution-cpu |  arn:aws:sagemaker:cn-north-1:674439102856:image/sagemaker-distribution-gpu  | 
|  cn-northwest-1  | arn:aws:sagemaker:cn-northwest-1:651871951035:image/sagemaker-distribution-cpu |  arn:aws:sagemaker:cn-northwest-1:651871951035:image/sagemaker-distribution-gpu  | 
|  us-gov-west-1  | arn:aws:sagemaker:us-gov-west-1:300992924816:image/sagemaker-distribution-cpu | arn:aws:sagemaker:us-gov-west-1:300992924816:image/sagemaker-distribution-gpu | 
|  us-gov-east-1  | arn:aws:sagemaker:us-gov-east-1:300993876623:image/sagemaker-distribution-cpu | arn:aws:sagemaker:us-gov-east-1:300993876623:image/sagemaker-distribution-gpu | 

如果遇到实例限制，请联系管理员。要为用户获得更多存储空间和计算能力，管理员可以请求增加用户的 AWS 配额。有关申请增加配额的更多信息，请参阅 [Amazon A SageMaker I 终端节点和配额](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html)。

# 在 Studio 中启动代码编辑器应用程序
<a name="code-editor-use-studio"></a>

要通过 Studio 配置和访问 Code Editor 集成开发环境，您必须创建 Code Editor 空间。有关 Studio 中空间的更多信息，请参阅 [亚马逊 SageMaker Studio 空间](studio-updated-spaces.md)。

![\[Studio 用户界面中的 Code Editor 应用程序按钮和概览图块。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/code-editor/code-editor-studio-home.png)


以下步骤说明了如何创建和运行 Code Editor 空间。

**创建并运行 Code Editor 空间**

1. 启动更新后的 Studio 体验。有关更多信息，请参阅[启动 Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html)。

1. 请执行以下操作之一：
   + 在更新后的 Amazon SageMaker Studio 用户界面中，从 “**应用程序**” 菜单中选择 “**代码编辑器**”。
   + 在更新后的 Amazon SageMaker Studio 用户界面中，在 Studio 主页的**概述**部分选择**查看代码编辑器空间**。

1. 在 Code Editor 登录页面的右上角，选择**创建 Code Editor 空间**。

1. 输入 Code Editor 空间的名称。名称长度必须为 1-62 个字符，只能使用字母、数字和破折号。

1. 选择**创建空间**。

1. 创建空间后，在选择运行空间之前有一些选项：
   + 您可以编辑**存储（GB）**、**生命周期配置**或**附加自定义 EFS 文件系统**设置。这些设置的选项可根据管理员的指定进行选择。
   + 从**实例**下拉菜单中，您可以选择与您的使用场景最匹配的实例类型。从 “**图像**” 下拉菜单中，您可以选择管理员提供的 SageMaker 分发映像或自定义映像。
**注意**  
在不同的 sagemaker-distribution 映像之间切换，会改变所使用的代码编辑器的底层版本，这可能会因浏览器缓存而导致不兼容问题。在不同的映像之间切换时，您应清除浏览器缓存。

     如果您在配置代码编辑器应用程序时使用 GPU 实例类型，则还必须使用基于 GPU 的映像。在空间内，您的数据存储在 Amazon EBS 卷中，该卷独立于实例的生命周期而存在。您在更换实例时不会丢失数据。
**重要**  
允许 Studio 用户创建空间的自定义 IAM 策略还必须授予列出映像 (`sagemaker: ListImage`) 的权限，以便查看自定义映像。要添加权限，请参阅《AWS Identity and Access Management用户指南》**中的[添加或移除身份权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。  
[AWS 亚马逊 A SageMaker I 的托管策略](security-iam-awsmanpol.md)授予创建 SageMaker AI 资源的权限已经包括在创建这些资源时列出图像的权限。
**注意**  
要更新空间设置，您必须先停止空间。如果您的代码编辑器使用带有 NVMe 实例存储的实例，则当空间停止时， NVMe 存储在存储中的所有数据都将被删除。

1. 更新设置后，在空间详情页面选择**运行空间**。

1. 空间状态为 `Running` 后，选择 **打开 Code Editor** 进入 Code Editor 会话。

![\[Studio 用户界面中 Code Editor 应用程序的空间详情页面。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/code-editor/code-editor-open.png)


# 使用启动代码编辑器应用程序 AWS CLI
<a name="code-editor-launch-cli"></a>

要通过 AWS Command Line Interface (AWS CLI) 配置和访问 Code Editor 集成开发环境，您必须创建 Code Editor 空间。在完成以下步骤之前，请务必满足 [满足先决条件](code-editor-admin-prerequisites.md)。按照以下步骤创建并运行 Code Editor 空间。

**创建并运行 Code Editor 空间**

1. 使用 AWS Identity and Access Management (IAM) 或 AWS IAM Identity Center 身份验证访问空间。有关使用访问空间的更多信息 AWS CLI，请参阅*使用 AWS Command Line Interface中的访问空间*[亚马逊 SageMaker Studio 空间](studio-updated-spaces.md)。

1. 创建应用程序，并使用以下命令指定 `CodeEditor` 为 `app-type`。

   如果您在创建 Code Editor 应用程序时使用 GPU 实例类型，则还必须使用基于 GPU 的映像。

   ```
   aws sagemaker create-app \
   --domain-id domain-id \
   --space-name space-name \
   --app-type CodeEditor \
   --app-name default \
   --resource-spec "SageMakerImageArn=arn:aws:sagemaker:region:account-id:image/sagemaker-distribution-cpu"
   ```

   有关可用代码编辑器图像的更多信息 ARNs，请参见[代码编辑器应用程序实例和映像](code-editor-use-instances.md)。

1. Code Editor 应用程序启动后，使用预先指定的 URL 启动应用程序。您可以使用 `describe-app` API 来检查应用程序是否处于服务中。使用 `create-presigned-domain-url` API 创建预指定的 URL：

   ```
   aws sagemaker create-presigned-domain-url \
   --domain-id domain-id \
   --space-name space-name \
   --user-profile-name user-profile-name \
   --session-expiration-duration-in-seconds 43200 \
   --landing-uri app:CodeEditor:
   ```

1. 打开生成的 URL，开始在 Code Editor 应用程序中工作。

# 在 Code Editor 中克隆存储库
<a name="code-editor-use-clone-a-repository"></a>

您可以在 Code Editor 应用程序用户界面的 **Explorer（资源管理器）**窗口中浏览文件夹并克隆存储库。

要克隆存储库，请执行以下步骤：

**克隆存储库**

1. 在浏览器中打开 Code Editor 应用程序，然后在左侧导航窗格中选择 **Exploration（浏览）**按钮 (![\[Icon representing multiple documents or pages stacked on top of each other.\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/code-editor/code-editor-exploration-icon.png))。

1. 在 **Explorer（资源管理器）**窗口中选择**克隆存储库**。然后，在提示中提供一个存储库 URL 或选择一个存储库源。

1. 选择一个文件夹来克隆您的存储库。请注意，默认的 Code Editor 文件夹是 `/home/sagemaker-user/`。克隆存储库可能需要一些时间。

1. 要打开克隆的存储库，请选择**在新窗口中打开**或**打开**。

1.  要返回 Code Editor 应用程序用户界面主页，请选择**取消**。

1. 在存储库中，会有提示询问您是否信任新存储库中文件的作者。您有两个选择：

   1. 要信任文件夹并启用所有功能，请选择**是，我信任作者**。

   1. 要以*限制模式*浏览存储库内容，请选择**否，我不信任作者**。

      在受限模式下，任务不允许运行，调试被禁用，工作区设置不应用，扩展功能有限。

      要退出受限模式、信任当前文件夹或其父文件夹中所有文件的作者并启用所有功能，请在**受限模式**横幅中选择**管理**。

# Code Editor 连接和扩展
<a name="code-editor-use-connections-and-extensions"></a>

代码编辑器支持 IDE 连接 AWS 服务 以及 O [pen VSX 注册表](https://open-vsx.org/)中提供的扩展。

## 连接到 AWS
<a name="code-editor-use-connections"></a>

Code Editor 环境与 [AWS Toolkit for VS Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/welcome.html) 集成，以添加与 AWS 服务的连接。要开始连接到 AWS 服务，您必须拥有有效的 AWS Identity and Access Management (IAM) 证书。有关更多信息，请参阅 [Visual Studio 代码 AWS 工具包的身份验证和访问权限](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/establish-credentials.html)。

在 Code Editor 环境中，您可以将连接添加到：
+  [AWS 资源管理器](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/aws-explorer.html)-查看、修改和部署 Amazon S3 中的 AWS 资源等。 CloudWatch

  在 AWS Explorer 中访问某些功能需要一定的 AWS 权限。有关更多信息，请参阅 [Visual Studio 代码 AWS 工具包的身份验证和访问权限](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/establish-credentials.html)。
+ [Amazon CodeWhisperer](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/codewhisperer.html)：利用人工智能驱动的代码建议，更快地构建应用程序。

  要 Amazon CodeWhisperer 与代码编辑器一起使用，必须向 SageMaker AI 执行角色添加以下权限。

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Sid": "CodeWhispererPermissions",
        "Effect": "Allow",
        "Action": ["codewhisperer:GenerateRecommendations"],
        "Resource": "*"
      }
    ]
  }
  ```

------

  有关更多信息，请参阅《IAM 用户指南》**中的[创建 IAM 策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)及[添加和删除 IAM 身份权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。

## 扩展程序
<a name="code-editor-use-extensions"></a>

Code Editor 支持 [Open VSX Registry](https://open-vsx.org/) 中的 IDE 扩展。

要在 Code Editor 环境中开始使用扩展程序，请选择左侧导航窗格中的**扩展**图标 (![\[Icon showing two overlapping squares representing multiple windows or instances.\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/code-editor/code-editor-extensions-icon.png))。在此，您可以通过安装 AWS Toolkit配置与 AWS 的连接。有关更多信息，请参阅[安装 AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-toolkit.html)。

在搜索栏中，您可以通过 [Open VSX Registry](https://open-vsx.org/) 直接搜索其他扩展，如 AWS Toolkit、Jupyter、Python 等。

# 关闭 Code Editor 资源
<a name="code-editor-use-log-out"></a>

使用完 Code Editor 空间后，您可以使用 Studio 停止该空间。这样，您就不再为空间承担费用了。

您也可以使用 AWS CLI删除未使用的 Code Editor 资源。

## 使用 Studio 停止 Code Editor 空间
<a name="code-editor-use-log-out-stop-space"></a>

要停止 Studio 中的 Code Editor 空间，请使用以下步骤：

**在 Studio 中停止 Code Editor 空间**

1. 执行以下操作之一，返回 Code Editor 登录页面：

   1. 在左上角的导航栏中，选择 **Code Editor**。

   1. 或者，在左侧导航窗格中，选择**应用程序**菜单中的 **Code Editor**。

1. 查找您创建的 Code Editor 空间的名称。如果空间状态为**运行**，请在**操作**列中选择**停止**。您也可以直接在空间详情页面选择**停止空间**。空间可能需要一段时间才能停止。

![\[代码编辑器应用程序用户界面中的空间详情页。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/code-editor/code-editor-stop-space.png)


当您的空间实例关闭时，从 Studio 创建的其他资源，例如 SageMaker 人工智能终端节点、亚马逊 EMR (Amazon EMR) 集群和亚马逊简单存储服务 (Amazon S3) Service 存储桶，不会自动删除。要停止累积资源费用，请删除任何其他资源。有关更多信息，请参阅[删除未使用的资源](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-jl-admin-guide-clean-up.html)。

## 使用删除代码编辑器资源 AWS CLI
<a name="code-editor-use-log-out-shut-down-resources"></a>

您可以使用 AWS Command Line Interface (AWS CLI) 删除您的代码编辑器应用程序和空间。
+ [DeleteApp](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteApp.html)
+ [DeleteSpace](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteSpace.html)

# Code Editor 管理员指南
<a name="code-editor-admin"></a>

您可以通过按需型实例使用 Code Editor，以获得更快的启动时间和可配置的存储空间。您可以通过 Amazon SageMaker Studio 或通过启动代码编辑器应用程序 AWS CLI。您还可以在域管理控制台中编辑 Code Editor 的默认设置。有关更多信息，请参阅 [编辑域设置](domain-edit.md)。以下主题概述了管理员如何通过更改存储选项、自定义环境和管理用户访问来配置基于 Code-OSS、Visual Studio Code - Open Source 的 Code Editor，并提供了使用 Code Editor 所需的先决条件信息。

**Topics**
+ [满足先决条件](code-editor-admin-prerequisites.md)
+ [让用户访问专用空间](code-editor-admin-user-access.md)
+ [更改默认存储容量](code-editor-admin-storage-size.md)
+ [Code Editor 生命周期配置](code-editor-use-lifecycle-configurations.md)
+ [自定义镜像](code-editor-custom-images.md)

# 满足先决条件
<a name="code-editor-admin-prerequisites"></a>

要使用基于 Code-OSS（Visual Studio Code 的开源版本）的代码编辑器，必须满足以下先决条件。

1. 您必须先登录 Amazon SageMaker AI 域并创建用户个人资料。有关更多信息，请参阅 [亚马逊 SageMaker AI 域名概述](gs-studio-onboard.md)。

1. 如果您使用与代码编辑器应用程序进行交互 AWS CLI，则还必须满足以下先决条件。

   1.  AWS CLI 按照[安装当前 AWS CLI 版本中的步骤进行](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html#install-tool-bundled)更新。

   1.  在本地计算机上运行 `aws configure` 并提供您的 AWS 凭证。有关 AWS 证书的信息，请参阅[了解和获取您的 AWS 证书](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html)。

1. （可选）要为您的应用程序获取更多存储空间和计算能力，您可以申请增加 AWS 配额。有关申请增加配额的更多信息，请参阅 [Amazon A SageMaker I 终端节点和配额](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html)。

# 让用户访问专用空间
<a name="code-editor-admin-user-access"></a>

**重要**  
允许 Amazon SageMaker Studio 或 Amazon SageMaker Studio Classic 创建亚马逊 SageMaker资源的自定义 IAM 策略还必须授予向这些资源添加标签的权限。之所以需要为资源添加标签的权限，是因为 Studio 和 Studio Classic 会自动为创建的任何资源添加标签。如果 IAM 策略允许 Studio 和 Studio Classic 创建资源但不允许标记，则在尝试创建资源时可能会出现 AccessDenied “” 错误。有关更多信息，请参阅 [提供标记 A SageMaker I 资源的权限](security_iam_id-based-policy-examples.md#grant-tagging-permissions)。  
[AWS 亚马逊 A SageMaker I 的托管策略](security-iam-awsmanpol.md)授予创建 SageMaker 资源的权限已经包括在创建这些资源时添加标签的权限。

本节提供了一项允许用户访问专用空间的政策。您还可以使用策略将专用空间和与之关联的应用程序限制为与用户配置文件关联的所有者。

您必须为用户提供以下权限：
+ 专用空间
+ 进入专用空间所需的用户配置文件

要提供权限，请将以下策略附加到用户的 IAM 角色。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {

      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateApp",
        "sagemaker:DeleteApp"
      ],
      "Resource": "arn:aws:sagemaker:us-east-1:111122223333:app/*",
      "Condition": {
        "Null": {
          "sagemaker:OwnerUserProfileArn": "true"
        }
      }
    },
    {
      "Sid": "SMStudioCreatePresignedDomainUrlForUserProfile",
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreatePresignedDomainUrl"
      ],
      "Resource": "arn:aws:sagemaker:us-east-1:111122223333:user-profile/domain-id/user-profile-name"
    },
    {
      "Sid": "SMStudioAppPermissionsListAndDescribe",
      "Effect": "Allow",
      "Action": [
        "sagemaker:ListApps",
        "sagemaker:ListDomains",
        "sagemaker:ListUserProfiles",
        "sagemaker:ListSpaces",
        "sagemaker:DescribeApp",
        "sagemaker:DescribeDomain",
        "sagemaker:DescribeUserProfile",
        "sagemaker:DescribeSpace"
      ],
      "Resource": "*"
    },
    {
      "Sid": "SMStudioAppPermissionsTagOnCreate",
      "Effect": "Allow",
      "Action": [
        "sagemaker:AddTags"
      ],
      "Resource": "arn:aws:sagemaker:us-east-1:111122223333:*/*",
      "Condition": {
        "Null": {
          "sagemaker:TaggingAction": "false"
        }
      }
    },
    {
      "Sid": "SMStudioRestrictSharedSpacesWithoutOwners",
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateSpace",
        "sagemaker:UpdateSpace",
        "sagemaker:DeleteSpace"
      ],
      "Resource": "arn:aws:sagemaker:us-east-1:111122223333:space/domain-id/*",
      "Condition": {
        "Null": {
          "sagemaker:OwnerUserProfileArn": "true"
        }
      }
    },
    {
      "Sid": "SMStudioRestrictSpacesToOwnerUserProfile",
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateSpace",
        "sagemaker:UpdateSpace",
        "sagemaker:DeleteSpace"
      ],
      "Resource": "arn:aws:sagemaker:us-east-1:111122223333:space/domain-id/*",
      "Condition": {
        "ArnLike": {
        "sagemaker:OwnerUserProfileArn": "arn:aws:sagemaker:us-east-1:111122223333:user-profile/domain-id/user-profile-name"
        },
        "StringEquals": {
          "sagemaker:SpaceSharingType": [
            "Private",
            "Shared"
          ]
        }
      }
    },
    {
      "Sid": "SMStudioRestrictCreatePrivateSpaceAppsToOwnerUserProfile",
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateApp",
        "sagemaker:DeleteApp"
      ],
      "Resource": "arn:aws:sagemaker:us-east-1:111122223333:app/domain-id/*",
      "Condition": {
        "ArnLike": {
        "sagemaker:OwnerUserProfileArn": "arn:aws:sagemaker:us-east-1:111122223333:user-profile/domain-id/user-profile-name"
        },
        "StringEquals": {
          "sagemaker:SpaceSharingType": [
            "Private"
          ]
        }
      }
    }
  ]
}
```

------

# 更改默认存储容量
<a name="code-editor-admin-storage-size"></a>

您可以更改用户的默认存储设置。您还可以根据组织要求和用户需求更改默认存储设置。

要更改用户的存储容量，请执行以下操作：

1. 更新域中的 Amazon EBS 存储设置。

1. 创建用户配置文件并在其中指定存储设置。

使用以下 AWS Command Line Interface (AWS CLI) 命令更新域。

```
aws --region $REGION sagemaker update-domain \
--domain-id $DOMAIN_ID \
--default-user-settings '{
    "SpaceStorageSettings": {
        "DefaultEbsStorageSettings":{
            "DefaultEbsVolumeSizeInGb":5,
            "MaximumEbsVolumeSizeInGb":100
        }
    }
}'
```

使用以下 AWS CLI 命令创建用户配置文件并指定默认存储设置。

```
aws --region $REGION sagemaker create-user-profile \
--domain-id $DOMAIN_ID \
--user-profile-name $USER_PROFILE_NAME \
--user-settings '{
    "SpaceStorageSettings": {
        "DefaultEbsStorageSettings":{
            "DefaultEbsVolumeSizeInGb":5,
            "MaximumEbsVolumeSizeInGb":100
        }
    }
}'
```

使用以下 AWS CLI 命令更新用户配置文件中的默认存储设置。

```
aws --region $REGION sagemaker update-user-profile \
--domain-id $DOMAIN_ID \
--user-profile-name $USER_PROFILE_NAME \
--user-settings '{
    "SpaceStorageSettings": {
        "DefaultEbsStorageSettings":{
            "DefaultEbsVolumeSizeInGb":25,
            "MaximumEbsVolumeSizeInGb":200
        }
    }
}'
```

# Code Editor 生命周期配置
<a name="code-editor-use-lifecycle-configurations"></a>

您可以使用 Code Editor 生命周期配置来自动自定义您的 Studio 环境。这种自定义包括安装自定义软件包、配置扩展、预加载数据集和设置源存储库。

以下说明使用 AWS Command Line Interface (AWS CLI) 为`CodeEditor`应用程序类型创建、附加、调试和分离生命周期配置：
+ [在 Studio 中创建并附加生命周期配置](code-editor-use-lifecycle-configurations-studio-create.md)
+ [在 Studio 中调试生命周期配置](code-editor-use-lifecycle-configurations-studio-debug.md)
+ [分离生命周期配置](code-editor-use-lifecycle-configurations-studio-detach.md)

# 在 Studio 中创建并附加生命周期配置
<a name="code-editor-use-lifecycle-configurations-studio-create"></a>

以下部分提供了 AWS CLI 用于创建生命周期配置、在创建新用户配置文件时附加生命周期配置以及在更新用户配置文件时附加生命周期配置的命令。有关在 Studio 中创建和附加生命周期配置的前提条件和一般步骤，请参阅 [生命周期配置创建](jl-lcc-create.md)。

使用 `create-studio-lifecycle-config` 命令创建 Studio 生命周期配置时，请务必指定 `studio-lifecycle-config-app-type` 为 `CodeEditor`。下面的示例显示了如何为 Code Editor 应用程序创建新的 Studio 生命周期配置。

```
aws sagemaker create-studio-lifecycle-config \
--studio-lifecycle-config-name my-code-editor-lcc \
--studio-lifecycle-config-content $LCC_CONTENT \
--studio-lifecycle-config-app-type CodeEditor
```

请记录为新创建的生命周期配置返回的 ARN。附加生命周期配置时，请在 `CodeEditorAppSettings` 的 `LifecycleConfigArns` 列表中提供此 ARN。

创建用户配置文件或域时，您可以附加生命周期配置。下面的示例说明如何创建一个附加生命周期配置的新用户配置文件。您也可以使用 [create-domain](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/opensearch/create-domain.html) 命令创建一个附加生命周期配置的新域。

```
# Create a new UserProfile
aws sagemaker create-user-profile \
--domain-id domain-id \
--user-profile-name user-profile-name \
--user-settings '{
"CodeEditorAppSettings": {
  "LifecycleConfigArns":
    [lifecycle-configuration-arn-list]
  }
}'
```

您也可以在更新用户配置文件或域时附加生命周期配置。下面的示例显示了如何更新附加生命周期配置的用户配置文件。您也可以使用 [update-domain](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sagemaker/update-domain.html) 命令更新一个附加了生命周期配置的新域。

```
# Update a UserProfile
aws sagemaker update-user-profile \
--domain-id domain-id \
--user-profile-name user-profile-name \
--user-settings '{
"CodeEditorAppSettings": {
  "LifecycleConfigArns":
    [lifecycle-configuration-arn-list]
  }
}'
```

# 在 Studio 中调试生命周期配置
<a name="code-editor-use-lifecycle-configurations-studio-debug"></a>

要调试 Code Editor 的生命周期配置脚本，您必须使用 Studio。有关在 Studio 中调试生命周期配置的说明，请参阅 [调试生命周期配置](jl-lcc-debug.md)。要查找特定应用程序的日志，请使用以下格式搜索日志流：

```
domain-id/space-name/CodeEditor/default/LifecycleConfigOnStart
```

# 分离生命周期配置
<a name="code-editor-use-lifecycle-configurations-studio-detach"></a>

要分离 Code Editor 的生命周期配置，您可以使用管理控制台或 AWS CLI。有关从 Studio 管理控制台分离生命周期配置的步骤，请参阅 [分离生命周期配置](jl-lcc-delete.md)。

要使用分离生命周期配置 AWS CLI，请从附加到资源的生命周期配置列表中删除所需的生命周期配置。然后您将此列表作为相应命令的一部分传递：
+ [update-user-profile](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sagemaker/update-user-profile.html)
+ [update-domain](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sagemaker/update-domain.html)

例如，下面的命令会删除域中附加的 Code Editor 应用程序的所有生命周期配置。

```
aws sagemaker update-domain --domain-id domain-id \
--default-user-settings '{
"CodeEditorAppSettings": {
  "LifecycleConfigArns":
    []
  }
}'
```

# 创建生命周期配置，将软件源克隆到 Code Editor 应用程序中
<a name="code-editor-use-lifecycle-configurations-repositories"></a>

本节将介绍如何克隆一个存储库，并创建一个附加生命周期配置的 Code Editor 应用程序。

1. 在本地计算机上，创建一个名为 `my-script.sh` 的文件，内容如下：

   ```
   #!/bin/bash
   set -eux
   ```

1. 在生命周期配置脚本中选择克隆存储库。

   ```
   export REPOSITORY_URL="https://github.com/aws-samples/sagemaker-studio-lifecycle-config-examples.git"
   git -C /home/sagemaker-user clone $REPOSITORY_URL
   ```

1. 最终确定脚本后，创建并附加生命周期配置。有关更多信息，请参阅 [在 Studio 中创建并附加生命周期配置](code-editor-use-lifecycle-configurations-studio-create.md)。

1. 创建 Code Editor 应用程序，并附加生命周期配置。

   ```
   aws sagemaker create-app \
   --domain-id domain-id \
   --space-name space-name \
   --app-type CodeEditor \
   --app-name default \
   --resource-spec "SageMakerImageArn=arn:aws:sagemaker:region:image-account-id:image/sagemaker-distribution-cpu,LifecycleConfigArn=arn:aws:sagemaker:region:user-account-id:studio-lifecycle-config/my-code-editor-lcc,InstanceType=ml.t3.large"
   ```

   有关可用代码编辑器图像的更多信息 ARNs，请参见[代码编辑器应用程序实例和映像](code-editor-use-instances.md)。

# 创建生命周期配置以安装 Code Editor 扩展
<a name="code-editor-use-lifecycle-configurations-extensions"></a>

本节将介绍如何创建生命周期配置，以便在 Code Editor 环境中从 [Open VSX Registry](https://open-vsx.org/) 安装扩展。

1. 在本地计算机上，创建一个名为 `my-script.sh` 的文件，内容如下：

   ```
   #!/bin/bash
   set -eux
   ```

1. 在脚本中，安装 [Open VSX Registry](https://open-vsx.org/) 扩展：

   ```
   sagemaker-code-editor --install-extension AmazonEMR.emr-tools --extensions-dir /opt/amazon/sagemaker/sagemaker-code-editor-server-data/extensions
   ```

   您可以从 [Open VSX Registry](https://open-vsx.org/) 中扩展名的 URL 获取扩展名。在 `sagemaker-code-editor` 命令中使用的扩展名应包含 URL 中 `https://open-vsx.org/extension/` 后面的所有文本。将所有斜线 (`/`) 替换为句号 (`.`)。例如，`AmazonEMR/emr-tools` 应为 `AmazonEMR.emr-tools`。  
![\[Open VSX Registry 中的 Amazon EMR 扩展页面。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/code-editor/code-editor-emr-extension.png)

1. 最终确定脚本后，创建并附加生命周期配置。有关更多信息，请参阅 [在 Studio 中创建并附加生命周期配置](code-editor-use-lifecycle-configurations-studio-create.md)。

1. 创建 Code Editor 应用程序，并附加生命周期配置：

   ```
   aws sagemaker create-app \
   --domain-id domain-id \
   --space-name space-name \
   --app-type CodeEditor \
   --app-name default \
   --resource-spec "SageMakerImageArn=arn:aws:sagemaker:region:image-account-id:image/sagemaker-distribution-cpu,LifecycleConfigArn=arn:aws:sagemaker:region:user-account-id:studio-lifecycle-config/my-code-editor-lcc,InstanceType=ml.t3.large"
   ```

   有关可用代码编辑器图像的更多信息 ARNs，请参见[代码编辑器应用程序实例和映像](code-editor-use-instances.md)。有关连接和扩展的更多信息，请参阅 [Code Editor 连接和扩展](code-editor-use-connections-and-extensions.md)。

# 自定义镜像
<a name="code-editor-custom-images"></a>

如果您需要的功能与 SageMaker 发行版提供的功能不同，则可以自带带有自定义扩展和软件包的镜像。您还可以使用它来个性化 Code Editor 用户界面，以满足自己的品牌或合规需求。

下一页将提供特定于代码编辑器的信息和模板，供您创建自己的自定义 SageMaker AI 镜像。这旨在补充 Amazon SageMaker Studio 关于创建自己的 SageMaker AI 图像和将自己的图像带到 Studio 的信息和说明。要了解有关自定义 Amazon SageMaker AI 图像以及如何将自己的图像带到 Studio 的信息，请参阅[自带映像（BYOI）](studio-updated-byoi.md)。

**Topics**
+ [应用程序的运行状况检查和 URL](#code-editor-custom-images-app-healthcheck)
+ [Dockerfile 示例](#code-editor-custom-images-dockerfile-templates)

## 应用程序的运行状况检查和 URL
<a name="code-editor-custom-images-app-healthcheck"></a>
+ `Base URL`：BYOI 应用程序的基本 URL 必须为 `CodeEditor/default`。您只能有一个应用程序，且必须始终命名为 `default`。
+ Health check 端点 — 你必须将代码编辑器服务器托管在 0.0.0.0 端口 8888， SageMaker AI 才能对其进行检测。
+  身份验证 — 您必须在打开`--without-connection-token`时通过`sagemaker-code-editor`才能允许 SageMaker AI 对您的用户进行身份验证。

**注意**  
如果您使用 Amazon Distrib SageMaker ution 作为基础图片，则这些要求已作为随附`entrypoint-code-editor`脚本的一部分得到满足。

## Dockerfile 示例
<a name="code-editor-custom-images-dockerfile-templates"></a>

以下示例是符合上述信息与[自定义映像规范](studio-updated-byoi-specs.md)的 `Dockerfile`。

**注意**  
如果您要将自己的镜像带到 SageMaker Unified Studio，则需要遵循*亚马逊 Unifie SageMaker d Studio 用户*[指南中的 Dockerfile 规范](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/byoi-specifications.html)。  
`Dockerfile` SageMaker Unified Studio 的示例可以在*亚马逊 Unified Studio 用户指南的 Docker SageMaker f* [ile 示例](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/byoi-specifications.html#byoi-specifications-example)中找到。

------
#### [ Example micromamba Dockerfile ]

以下是用于通过 [https://mamba.readthedocs.io/en/latest/user_guide/micromamba.html](https://mamba.readthedocs.io/en/latest/user_guide/micromamba.html) 基本环境从头开始创建映像的示例 Dockerfile：

```
FROM mambaorg/micromamba:latest
ARG NB_USER="sagemaker-user"
ARG NB_UID=1000
ARG NB_GID=100

USER root

RUN micromamba install -y --name base -c conda-forge sagemaker-code-editor

USER $NB_UID

CMD eval "$(micromamba shell hook --shell=bash)"; \
    micromamba activate base; \
    sagemaker-code-editor --host 0.0.0.0 --port 8888 \
        --without-connection-token \
        --base-path "/CodeEditor/default"
```

------
#### [ Example SageMaker AI Distribution Dockerfile ]

以下是基于[亚马逊 A SageMaker I](https://github.com/aws/sagemaker-distribution/tree/main) Distribution 创建映像的 Dockerfile 示例：

```
FROM public.ecr.aws/sagemaker/sagemaker-distribution:latest-cpu
ARG NB_USER="sagemaker-user"
ARG NB_UID=1000
ARG NB_GID=100
ENV MAMBA_USER=$NB_USER

USER root

 # install scrapy in the base environment
RUN micromamba install -y --name base -c conda-forge scrapy

 # download VSCodeVim
RUN \
  wget https://github.com/VSCodeVim/Vim/releases/download/v1.27.2/vim-1.27.2.vsix \
  -P /tmp/exts/ --no-check-certificate

 # Install the extension
RUN \
  extensionloc=/opt/amazon/sagemaker/sagemaker-code-editor-server-data/extensions \
  && sagemaker-code-editor \
    --install-extension "/tmp/exts/vim-1.27.2.vsix" \
    --extensions-dir "${extensionloc}"

USER $MAMBA_USER
ENTRYPOINT ["entrypoint-code-editor"]
```

------