

亚马逊 CodeCatalyst 不再向新买家开放。现有客户可以继续正常使用该服务。有关更多信息，请参阅 [如何从中迁移 CodeCatalyst](migration.md)。

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

# 使用开发环境编写和修改代码 CodeCatalyst
<a name="devenvironment"></a>

开发环境是基于云的开发环境。在 Amazon 中 CodeCatalyst，您可以使用开发环境来处理存储在项目源存储库中的代码。创建开发环境时，您有以下几种选择：
+ 在中创建特定于项目的开发环境 CodeCatalyst ，以便使用支持的集成开发环境 (IDE) 来处理代码。
+ 创建一个空的开发环境，从源存储库中将代码克隆到此开发环境中，并使用受支持的 IDE 处理这些代码。
+ 在 IDE 中创建一个开发环境，并将源存储库克隆到此开发环境中。

*devfile* 是一个开放的标准 YAML 文件，可用于标准化您的开发环境。换句话说，此文件编纂了开发环境所需的开发工具。因此，您可以快速设置开发环境，在各个项目之间切换，并在各个团队成员之间复制开发环境配置。开发环境可以最大限度地减少您创建和维护本地开发环境所花费的时间，因为它们使用 devfile 来配置对给定项目编码、测试和调试所需的所有工具。

**重要**  
开发环境可以通过有权访问您的 CodeCatalyst 凭据的开发文件运行脚本。在打开不受信任的资源之前，请检查存储库。

开发环境中包含的项目工具和应用程序库由项目的源存储库中的 devfile 定义。如果您的源存储库中没有开发文件，则 CodeCatalyst 会自动应用默认的开发文件。此默认 devfile 包括适用于最常用的编程语言和框架的工具。如果您的项目是使用蓝图创建的，则开发文件将由 CodeCatalyst自动创建。有关 devfile 的更多信息，请参阅 [https://devfile.io](https://devfile.io)。

创建一个开发环境后，只有您能够访问该开发环境。在开发环境中，您可以在受支持的 IDE 中查看和处理源存储库的代码。

默认情况下，开发环境配置为具有双核处理器、4 GB RAM 和 16 GB 持久性存储。如果您具有空间管理员权限，则可以更改空间的计费等级，以使用其他开发环境配置选项并管理计算和存储限制。

**Topics**
+ [创建开发环境](devenvironment-create.md)
+ [停止开发环境](devenvironment-stop.md)
+ [恢复开发环境](devenvironment-resume.md)
+ [编辑开发环境](devenvironment-edit.md)
+ [删除开发环境](devenvironment-delete.md)
+ [使用 SSH 连接到开发环境](devenvironment-connect-ssh.md)
+ [配置开发环境的 devfile](devenvironment-devfile.md)
+ [将 VPC 连接关联到开发环境](devenvironment-using-vpc.md)
+ [中开发环境的配额 CodeCatalyst](devenvironment-limits.md)

# 创建开发环境
<a name="devenvironment-create"></a>

您可以通过多种方式创建开发环境：
+  CodeCatalyst 使用 “**概述**”、“开发环境” 或 “[源代码库” 页面中的源存储库或链接](source-repositories-link.md)**源存储库**创建**开发环境 CodeCatalyst **
+ 在 “开发环境” 页面 CodeCatalyst 中创建一个未连接到源存储库的空开发环境
+ 在您选择的 IDE 中创建一个开发环境，然后将任何源存储库克隆到该开发环境中

**重要**  
开发环境不适用于将 Active Directory 用作身份提供商的空间中的用户。有关更多信息，请参阅 [当我 CodeCatalyst 使用单点登录账户登录时，我无法创建开发环境](devenvironments-troubleshooting.md#troubleshoot-create-dev-env-idprovider)。

您可以为存储库的每个分支创建一个开发环境。一个项目可以有多个存储库。您创建的开发环境只能使用您的 CodeCatalyst 账户进行管理，但您可以打开开发环境并使用任何支持的环境在其中工作 IDEs。必须安装 AWS Toolkit 才能在 IDE 中使用开发环境。有关更多信息，请参阅 [开发环境支持的集成式开发环境](#devenvironment-supported-ide)。默认情况下，系统使用双核处理器、4 GB RAM 和 16 GB 持久性存储创建开发环境。

**注意**  
如果您创建了与源存储库关联的开发环境，则**资源**列将始终显示在创建此开发环境时指定的分支。即使您创建另一个分支、切换到开发环境中的另一个分支或克隆其他存储库，这也适用。如果您创建了一个空开发环境，则**资源**列将为空。

## 开发环境支持的集成式开发环境
<a name="devenvironment-supported-ide"></a>

您可以将开发环境与以下支持的集成开发环境 (IDEs) 配合使用：
+ [AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/welcome.html)
+ [JetBrains IDEs](https://www.jetbrains.com/help)
  + [IntelliJ IDEA Ultimate](https://www.jetbrains.com/help/idea/getting-started.html)
  + [GoLand](https://www.jetbrains.com/help/go/getting-started.html)
  + [PyCharm专业人士](https://www.jetbrains.com/help/pycharm/getting-started.html)
+ [Visual Studio Code](https://code.visualstudio.com/docs)

## 在中创建开发环境 CodeCatalyst
<a name="devenvironment-create-steps"></a>

要开始在中使用开发环境 CodeCatalyst，请使用您的[AWS 生成器 ID](id-how-to-sign-in.md) 或 [SSO](sign-in-sso.md) 进行身份验证并登录。

**从分支创建开发环境**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 导航到要在其中创建开发环境的项目。

1. 在导航窗格中，执行下列操作之一：
   + 选择**概述**，然后导航到**我的开发环境**部分。
   + 选择**代码**，然后选择**开发环境**。
   + 选择**代码**，再选择**源存储库**，然后选择要为其创建开发环境的存储库。

1. 选择**创建开发环境**。

1. 从下拉菜单中选择受支持的 IDE。请参阅[开发环境支持的集成式开发环境](#devenvironment-supported-ide)了解更多信息。

1. 选择**克隆存储库**。

1. 请执行以下操作之一：

   1. 选择要克隆的存储库，选择**在现有分支中工作**，然后从**现有分支**下拉菜单中选择一个分支。
**注意**  
如果您选择第三方存储库，则必须在现有分支中工作。

   1. 选择要克隆的存储库，选择**在新分支中工作**，在**分支名称**字段中输入分支名称，然后从**创建分支自**下拉菜单中选择要从中创建新分支的分支。
**注意**  
如果您从**源存储库**页面或从特定的源存储库创建开发环境，则无需选择存储库。这将从您在**源存储库**页面中选择的源存储库创建开发环境。

1. （可选）在**别名 – 可选**中，输入开发环境的别名。

1. （可选）选择**开发环境配置**编辑按钮，编辑开发环境的计算、存储或超时配置。

1. （可选）在 **Amazon Virtual Private Cloud (Amazon VPC) - 可选**中，从下拉菜单中选择要与开发环境关联的 VPC 连接。

   如果为您的空间设置了默认 VPC，则开发环境将连接到该 VPC。您可以通过关联其他 VPC 连接来覆盖此设置。另请注意，与 VPC 连接的开发环境不支持 AWS Toolkit。

   如果您要使用的 VPC 连接未列出，则可能是因为该 AWS 账户 连接包含您的项目中不允许的连接。有关更多信息，请参阅《A *mazon CodeCatalyst 管理员*指南》中的[配置受项目限制的账户连接](https://docs.aws.amazon.com/codecatalyst/latest/adminguide/managing-accounts-restriction.html)。
**注意**  
当您创建具有 VPC 连接的开发环境时，会在 VPC 内创建一个新的网络接口。 CodeCatalyst 使用关联的 VPC 角色与该接口交互。此外，请确保您的 IPv4 CIDR 块**未**配置为 `172.16.0.0/12` IP 地址范围。

1. 选择**创建**。在创建开发环境时，开发环境状态列将显示**正在启动**，开发环境创建完成后，状态列将显示**正在运行**。

**创建空的开发环境**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 导航到要在其中创建开发环境的项目。

1. 在导航窗格中，执行下列操作之一：
   + 选择**概述**，然后导航到**我的开发环境**部分。
   + 选择**代码**，然后选择**开发环境**。

1. 选择**创建开发环境**。

1. 从下拉菜单中选择受支持的 IDE。请参阅[开发环境支持的集成式开发环境](#devenvironment-supported-ide)了解更多信息。

1. 选择**创建空的开发环境**。

1. （可选）在**别名 – 可选**中，输入开发环境的别名。

1. （可选）选择**开发环境配置**编辑按钮，编辑开发环境的计算、存储或超时配置。

1. （可选）在 **Amazon Virtual Private Cloud (Amazon VPC) - 可选**中，从下拉菜单中选择要与开发环境关联的 VPC 连接。

   如果为您的空间设置了默认 VPC，则开发环境将连接到该 VPC。您可以通过关联其他 VPC 连接来覆盖此设置。另请注意，与 VPC 连接的开发环境不支持 AWS Toolkit。

   如果您要使用的 VPC 连接未列出，则可能是因为该 AWS 账户 连接包含您的项目中不允许的连接。有关更多信息，请参阅《A *mazon CodeCatalyst 管理员*指南》中的[配置受项目限制的账户连接](https://docs.aws.amazon.com/codecatalyst/latest/adminguide/managing-accounts-restriction.html)。
**注意**  
当您创建具有 VPC 连接的开发环境时，会在 VPC 内创建一个新的网络接口。 CodeCatalyst 使用关联的 VPC 角色与该接口交互。此外，请确保您的 IPv4 CIDR 块**未**配置为 `172.16.0.0/12` IP 地址范围。

1. 选择**创建**。在创建开发环境时，开发环境状态列将显示**正在启动**，开发环境创建完成后，状态列将显示**正在运行**。

**注意**  
首次创建和打开开发环境可能需要花费一到两分钟的时间。

**注意**  
在 IDE 中打开开发环境后，您可能需要先将目录更改为源存储库，然后再提交和推送对代码的更改。

## 在 IDE 中创建开发环境
<a name="devenvironment-using-ide"></a>

您可以使用开发环境来快速处理存储在项目源存储库中的代码。开发环境可加快开发速度，因为您可以使用受支持的集成式开发环境（IDE）立即在项目特定的、功能齐全的云开发环境中开始编码。

有关在 IDE CodeCatalyst 中使用的信息，请参阅以下文档。
+ [Amazon f CodeCatalyst or JetBrains IDEs](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/codecatalyst-service.html)
+ [亚马逊 V CodeCatalyst S Code 版](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/codecatalyst-service.html)
+ [Amazon f CodeCatalyst or AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/ide-toolkits-cloud9.html)

# 停止开发环境
<a name="devenvironment-stop"></a>

开发环境的 `/projects` 目录存储从源存储库中提取的文件和用于配置开发环境的 devfile。`/home` 目录（创建开发环境时，该目录为空）存储您在使用开发环境时创建的文件。开发环境的 `/projects` 和 `/home` 目录中的所有文件都是永久性存储的，因此，您可以在需要切换到其他开发环境、存储库或项目时停止开发环境中的工作。

**警告**  
如果任何实例（包括 Web 浏览器、远程 shell 和）保持连接状态 IDEs，则开发环境不会超时。因此，请务必关闭所有连接的实例，以免产生额外费用。

如果开发环境处于空闲状态的时间达到了在创建开发环境期间为**超时**字段选择的时间长度，它将自动停止。您可以在开发环境处于空闲状态之前将其停止。如果您在创建开发环境时选择了**无超时**，则开发环境将不会自动停止。相反，它将持续运行。

**警告**  
如果您停止与已删除的 VPC 连接关联的开发环境，则该开发环境将无法恢复。<a name="devenvironment-stop-steps"></a>

**从开发环境页面停止开发环境**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 导航到要在其中停止开发环境的项目。

1. 在导航窗格中，选择**代码**。

1. 选择**开发环境**。

1. 选择要停止的开发环境的单选按钮。

1. 从**操作**菜单中，选择**停止**。

**注意**  
计算使用仅在开发环境运行时计费，而存储使用按开发环境存在的整个时长计费。在未使用开发环境时将其停用以停止计算计费。

# 恢复开发环境
<a name="devenvironment-resume"></a>

开发环境的 `/projects` 目录存储从源存储库中提取的文件和用于配置开发环境的 devfile。`/home` 目录（创建开发环境时，该目录为空）存储您在使用开发环境时创建的文件。开发环境的 `/projects` 和 `/home` 目录中的所有文件都是永久性存储的，因此，您可以在需要切换到其他开发环境、存储库或项目时停止开发环境中的工作，并稍后恢复开发环境中的工作。

如果开发环境处于空闲状态的时间达到了在创建开发环境期间为**超时**字段选择的时间长度，它将自动停止。必须关闭 AWS Cloud9 浏览器选项卡，开发环境才会处于空闲状态。

**注意**  
即使您删除了用于创建开发环境的分支，开发环境仍可用并正常运行。如果要在已删除分支的开发环境中恢复工作，请创建一个新分支并将更改推送到该分支。<a name="source-resume-summary-steps"></a>

**从概述页面恢复开发环境**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 导航到要在其中恢复开发环境的项目，然后导航到**我的开发环境**部分。

1. 选择**在 (IDE) 中恢复**。
   + 对于 JetBrains IDEs，当提示选择要**打开 JetBrains -gateway链接的应用程序时，请选择 Gateway-e** ap。 JetBrains当系统提示时，请选择**打开链接**以进行确认。
   + 对于 VS Code IDE，当系统提示您**选择应用程序以打开 VS Code 链接**时，请选择 VS Code。选择**打开链接**以进行确认。<a name="source-resume-source-steps"></a>

**从源存储库恢复开发环境**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 导航到要从中恢复开发环境的项目。

1. 在导航窗格中，选择**代码**。

1. 选择**源存储库**。

1. 选择包含要恢复的开发环境的源存储库。

1. 选择分支名称以查看分支的下拉菜单，然后选择您的分支。

1. 选择**恢复开发环境**。
   + 对于 JetBrains IDEs，当系统提示**允许此站点**通过 Gateway 打开** JetBrains-gateway 链接时，选择 Open Link 进行确认 JetBrains？** 。
   + 对于 VS Code IDE，当系统提示您**允许此站点通过 Visual Studio Code 打开 VS Code 链接?** 时，选择**打开链接**以进行确认。<a name="devenvironment-resume-steps"></a>

**从开发环境页面恢复开发环境**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 导航到要从中恢复开发环境的项目。

1. 在导航窗格中，选择**代码**。

1. 选择**开发环境**。

1. 从 **IDE** 列中，为开发环境选择**在 (IDE) 中恢复**。
   + 对于 JetBrains IDEs，当系统提示**允许此站点**通过 Gateway 打开** JetBrains-gateway 链接时，选择 Open Link 进行确认 JetBrains？** 。
   + 对于 VS Code IDE，当系统提示您**允许此站点通过 Visual Studio Code 打开 VS Code 链接?** 时，选择**打开链接**以进行确认。

**注意**  
恢复开发环境需要几分钟的时间。

# 编辑开发环境
<a name="devenvironment-edit"></a>

当 IDE 正在运行时，您可以编辑开发环境。如果您编辑计算或非活动超时，则您的开发环境将在您保存更改后重新启动。<a name="devenvironment-edit-steps"></a>

**编辑开发环境**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 导航到要在其中编辑开发环境的项目。

1. 在导航窗格中，选择**代码**。

1. 选择**开发环境**。

1. 选择要编辑的开发环境。

1. 选择**编辑**。

1. 根据需要对计算或非活动超时进行更改。

1. 选择**保存**。

# 删除开发环境
<a name="devenvironment-delete"></a>

处理完存储在开发环境中的内容后，您可以删除开发环境。创建一个新的开发环境来处理新内容。如果您删除开发环境，则将永久删除保留的内容。在删除开发环境之前，请确保代码更改提交并推送到开发环境的原始源存储库。删除开发环境后，将停止对开发环境的计算和存储计费。

删除开发环境后，可能需要几分钟时间才能更新存储配额。如果您已达到存储配额，则此时将无法创建新的开发环境。

**重要**  
删除开发环境的操作无法撤消。删除开发环境后，您无法再将其恢复。<a name="devenvironment-delete-steps"></a>

**删除开发环境**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 导航到要在其中删除开发环境的项目。

1. 在导航窗格中，选择**代码**。

1. 选择**开发环境**。

1. 选择要删除的开发环境。

1. 选择**删除**。

1. 输入 **delete** 以确认删除开发环境。

1. 选择**删除**。

**注意**  
在删除空间中的 VPC 连接之前，请务必移除与该 VPC 关联的开发环境。  
即使您删除开发环境，也可能无法删除 VPC 中的网络接口。确保根据需要清理资源。如果删除与 VPC 连接的开发环境时出错，则必须[分离](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#detach_eni)过时连接，并在确认未使用该连接后将其[删除](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#delete_eni)。

# 使用 SSH 连接到开发环境
<a name="devenvironment-connect-ssh"></a>

您可以使用 SSH 连接到您的开发环境以不受限制地执行操作，例如端口转发、上传和下载文件以及使用其他 IDEs。

**注意**  
如果要在关闭 IDE 选项卡或窗口后继续使用 SSH 一段较长时间，请务必为开发环境设置较高的超时值，这样它就不会因在 IDE 中处于非活动状态而停止。

**先决条件**
+ 您需要下列操作系统之一：
  + Windows 10 或更高版本且已启用 OpenSSH
  + macOS 和 Bash 版本 3 或更高版本
  + 带 `yum`、`dpkg` 或 `rpm` 包管理器以及 Bash 版本 3 或更高版本的 Linux
+ 您还需要 AWS CLI 版本 2.9.4 或更高版本。<a name="devenvironment-connect-ssh-steps"></a>

**使用 SSH 连接到开发环境**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 导航到要在其中使用 SSH 连接到开发环境的项目。

1. 在导航窗格中，选择**代码**。

1. 选择**开发环境**。

1. 使用 SSH 选择要连接到的正在运行的开发环境。

1. 选择**通过 SSH 连接**，选择所需的操作系统，然后执行以下操作：
   + 如果尚未这样做，请在指定的终端中粘贴并执行第一条命令。此命令将下载脚本并在本地环境中执行以下修改，以便您能够使用 SSH 连接到开发环境：
     + 安装会[话管理器插件 AWS CLI](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html)
     + 修改您的本地 AWS Config 并添加 CodeCatalyst 个人资料，以便您可以执行 SSO 登录。有关更多信息，请参阅 [设置为 AWS CLI 与一起使用 CodeCatalyst](set-up-cli.md)。
     + 修改您的本地 SSH 配置并添加使用 SSH 连接到开发环境所需的配置。
     + 在`~/.aws/codecatalyst-dev-env` 目录中添加 SSH 客户端用于连接到开发环境的脚本。此脚本调用 [CodeCatalyst StartDevEnvironmentSession API](https://docs.aws.amazon.com/codecatalyst/latest/APIReference/API_StartDevEnvironmentSession.html) 并使用 AWS Systems Manager Session Manager 插件与您的开发环境建立 AWS Systems Manager 会话，本地 SSH 客户端使用该会话安全地连接到远程开发环境。
   + 使用第二个命令 CodeCatalyst 使用 AWS SSO 登录 Amazon。此命令请求和检索凭证，以便`~/.aws/codecatalyst-dev-env`目录中的脚本可以调用 [CodeCatalyst StartDevEnvironmentSession API](https://docs.aws.amazon.com/codecatalyst/latest/APIReference/API_StartDevEnvironmentSession.html)。每当您的凭证过期时，都应执行此命令。当您在模式（ssh<destination>）中执行最后一条命令时，如果您的凭证已过期或者您尚未按照此步骤中的说明执行 SSO 登录，则会收到错误。
   + 使用第三条命令通过 SSH 连接到您指定的开发环境。此命令具有以下结构：

     ```
     ssh codecatalyst-dev-env=<space-name>=<project-name>=<dev-environment-id>
     ```

     您还可以使用此命令执行 SSH 客户端所允许的其他操作，例如端口转发或上传和下载文件：
     + 端口转发：

       ```
       ssh -L <local-port>:127.0.0.1:<remote-port> codecatalyst-dev-env=<space-name>=<project-name>=<dev-environment-id>
       ```
     + 将文件上传到开发环境的主目录：

       ```
       scp -O </path-to-local-file> codecatalyst-dev-env=<space-name>=<project-name>=<dev-environment-id>:</path-to-remote-file-or-directory>
       ```

# 配置开发环境的 devfile
<a name="devenvironment-devfile"></a>

*devfile* 是一种开放标准，可帮助您在整个团队中自定义开发环境。devfile 是一个 YAML 文件，用于对所需的开发工具进行编码。通过配置开发文件，您可以预先确定所需的项目工具和应用程序库，然后 Amazon CodeCatalyst 将它们安装到您的开发环境中。存储库与为它创建的 devfile 相对应，您可以为每个存储库创建一个单独的 devfile。您的开发环境支持命令和事件，并提供默认的通用 devfile 映像。

如果您使用空蓝图创建项目，则可以手动创建 devfile。如果您使用不同的蓝图创建项目，则会自动 CodeCatalyst 创建一个 devfile。开发环境的 `/projects` 目录存储从源存储库中提取的文件和 devfile。`/home` 目录（首次创建开发环境时，该目录为空）存储您在使用开发环境时创建的文件。开发环境的 `/projects` 和 `/home` 目录中的所有内容都将持久存储。

**注意**  
仅在更改 devfile 名称或 devfile 组件名称时，`/home` 文件夹才会更改。如果更改 devfile 或 devfile 组件名称，则 `/home` 目录的内容将被替换，并且无法恢复之前的 `/home` 目录数据。

如果您创建的开发环境的源存储库中的根目录不包含 devfile，或者创建的开发环境不具有源存储库，则系统会自动将默认的通用 devfile 应用于源存储库。所有 IDEs用户都使用相同的默认通用 devfile 镜像。 CodeCatalyst 目前支持 devfile 版本 2.0.0。有关 devfile 的更多信息，请参阅 [Devfile schema - Version 2.0.0](https://devfile.io/docs/2.0.0/devfile-schema)。

**注意**  
您只能在 devfile 中包含公共容器映像。

请注意，与 VPC 连接的开发环境仅支持以下 devfile 映像：
+ 通用映像
+ 私有 Amazon ECR 映像（如果存储库与 VPC 位于同一区域）

**Topics**
+ [编辑开发环境的存储库 devfile](devenvironment-devfile-moving.md)
+ [支持的 Devfile 功能 CodeCatalyst](#devenvironment-devfile-support)
+ [开发环境的 devfile 示例](#devenvironment-devfile-example)
+ [使用恢复模式排查存储库 devfile 的问题](#devenvironment-devfile-recovery)
+ [为开发环境指定通用 devfile 映像](devenvironment-universal-image.md)
+ [Devfile 命令](devenvironment-devfile-commands.md)
+ [Devfile 事件](devenvironment-devfile-events.md)
+ [Devfile 组件](devenvironment-devfile-components.md)

# 编辑开发环境的存储库 devfile
<a name="devenvironment-devfile-moving"></a>

使用以下过程编辑开发环境的存储库 devfile。

## 在中编辑开发环境的存储库开发文件 CodeCatalyst
<a name="devenvironment-devfile-procedure"></a><a name="devenvironment-devfile-steps"></a>

**编辑存储库 devfile**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 导航到包含要编辑其 devfile 的源存储库的项目。

1. 在导航窗格中，选择**代码**。

1. 选择**源存储库**。

1. 选择包含要编辑的 devfile 的源存储库。

1. 从文件列表中选择 `devfile.yaml` 文件。

1. 选择**编辑**。

1. 编辑 devfile。

1. 选择**提交**，或者创建拉取请求，以便团队成员能够审查和批准更改。

**注意**  
如果您编辑 devfile，则必须重新启动 devfile 以使更改生效。这可以通过运行 `/aws/mde/mde start --location devfile.yaml` 来完成。如果启动 devfile 时出现问题，它将进入恢复模式。但是，如果您编辑与 VPC 连接的开发环境关联的 devfile，则必须重新启动开发环境才能使更改生效。

您可以通过运行 `/aws/mde/mde status` 来查看正在使用的 devfile。位置字段包含 devfile 相对于环境的 `/projects` 文件夹的路径。

```
{
            "status": "STABLE",
            "location": "devfile.yaml"
        }
```

您还可以将 `/projects/devfile.yaml` 中的默认 devfile 移至您的源代码存储库。要更新 devfile 的位置，请使用以下命令：`/aws/mde/mde start --location repository-name/devfile.yaml`。

## 在 IDE 中编辑开发环境的存储库 devfile
<a name="devenvironment-devfile-ide"></a>

要更改开发环境的配置，您必须编辑 devfile。我们建议您在支持的 IDE 中编辑开发文件，然后更新您的开发环境，但也可以从中源存储库的根目录编辑开发文件。 CodeCatalyst如果您在受支持的 IDE 中编辑 devfile，则必须提交更改并将其推送到源存储库或创建拉取请求，以便团队成员能够审查和批准 devfile 编辑内容。
+ [在中编辑开发环境的存储库 devfile AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/devenvironment-cloud9.title.html#ide-toolkits-edit-devfile-cloud9)
+ [在 VS Code 中编辑开发环境的存储库 devfile](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/codecatalyst-devenvironment.html#codecatalyst-devenvironment-devfile)
+ [在中编辑开发环境的存储库 devfile JetBrains](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/codecatalyst-overview.html#codecatalyst-overview-default)

## 支持的 Devfile 功能 CodeCatalyst
<a name="devenvironment-devfile-support"></a>

CodeCatalyst 在 2.0.0 版本上支持以下开发文件功能。有关 devfile 的更多信息，请参阅 [Devfile schema - Version 2.0.0](https://devfile.io/docs/2.0.0/devfile-schema)。


| 功能 | Type | 
| --- | --- | 
|  `exec`  |  命令  | 
|  `postStart`  |  事件  | 
|  `container`  |  组件  | 
|  `args`  |  组件属性  | 
|  `env`  |  组件属性  | 
|  `mountSources`  |  组件属性  | 
|  `volumeMounts`  |  组件属性  | 

## 开发环境的 devfile 示例
<a name="devenvironment-devfile-example"></a>

以下是简单 devfile 的示例。

```
schemaVersion: 2.0.0
metadata:
  name: al2
components:
  - name: test
    container:
      image: public.ecr.aws/amazonlinux/amazonlinux:2
      mountSources: true
      command: ['sleep', 'infinity']
  - name: dockerstore
commands:
  - id: setupscript
    exec:
      component: test
      commandLine: "chmod +x script.sh"
      workingDir: /projects/devfiles
  - id: executescript
    exec:
      component: test
      commandLine: "/projects/devfiles/script.sh"
  - id: yumupdate
    exec:
      component: test
      commandLine: "yum -y update --security"
events:
  postStart:
    - setupscript
    - executescript
    - yumupdate
```

将捕获 devfile 的启动、命令和事件日志并将其存储在 `/aws/mde/logs` 中。要调试 devfile 行为，请使用有效的 devfile 启动开发环境并访问日志。

## 使用恢复模式排查存储库 devfile 的问题
<a name="devenvironment-devfile-recovery"></a>

如果启动 devfile 时出现问题，它将进入恢复模式，这样您仍能连接到您的环境并修复 devfile。在恢复模式中，运行 `/aws/mde/mde status` 将不会包含 devfile 的位置。

```
{
            "status": "STABLE"
        }
```

您可以查看 `/aws/mde/logs` 下的日志中的错误，修复 devfile，然后重试运行 `/aws/mde/mde start`。

# 为开发环境指定通用 devfile 映像
<a name="devenvironment-universal-image"></a>

默认*通用映像*包括可用于 IDE 的最常用的编程语言和相关工具。如果未指定图像，则 CodeCatalyst 提供此图像并包含由维护的工具 CodeCatalyst。要接收有关新映像版本的通知，请参阅[使用 SNS 订阅通用映像通知](#devenvironment-universal-notifications)。

Amazon CodeCatalyst 积极支持以下开发者文件镜像：


| 映像版本 | 映像标识符 | 
| --- | --- | 
| Universal image 4.0 | public.ecr.aws/aws-mde/universal-image:4.0 | 
| Universal image 5.0 | public.ecr.aws/aws-mde/universal-image:5.0 | 

**注意**  
您还可以使用 `public.ecr.aws/aws-mde/universal-image:latest` 获取最新映像，当前为 `public.ecr.aws/aws-mde/universal-image:5.0`。

CodeCatalyst 已弃用以下图片。您仍然可以使用这些映像，但它们不会缓存在构建主机上，因此将导致开发环境的启动时间更长。


| 映像版本 | 映像标识符 | 弃用日期 | 
| --- | --- | --- | 
| Universal image 1.0 | public.ecr.aws/aws-mde/universal-image:1.0 | 2024 年 8 月 16 日 | 
| Universal image 2.0 | public.ecr.aws/aws-mde/universal-image:2.0 | 2024 年 8 月 16 日 | 
| Universal image 3.0 | public.ecr.aws/aws-mde/universal-image:3.0 | 2025 年 7 月 30 日 | 

**注意**  
如果你使用的是 AWS Cloud9，升级到后自动完成功能将不适用于 PHP、Ruby 和 CSS。`universal-image:3.0`

**Topics**
+ [使用 SNS 订阅通用映像通知](#devenvironment-universal-notifications)
+ [通用映像 4.0 运行时版本](#devenvironment-universal-runtimes-4.0)
+ [通用映像 5.0 运行时版本](#devenvironment-universal-runtimes-5.0)

## 使用 SNS 订阅通用映像通知
<a name="devenvironment-universal-notifications"></a>

CodeCatalyst 提供通用的图像通知服务。您可以使用它来订阅亚马逊简单通知服务 (SNS) Simple Notification Service 主题，该主题将在 CodeCatalyst 通用图像更新发布时通知您。有关 SNS 主题的更多信息，请参阅 [What is Amazon Simple Notification Service?](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)。

每当发布新的通用图像时，我们都会向订阅者发送通知；本节介绍如何订阅 CodeCatalyst 通用图像更新。

**示例消息**

```
{
    "Type": "Notification",
    "MessageId": "123456789",
    "TopicArn": "arn:aws:sns:us-east-1:1234657890:universal-image-updates",
    "Subject": "New Universal Image Release",
    "Message": {
        "v1": {
            "Message": "A new version of the Universal Image has been released. You are now able to launch new DevEnvironments using this image.",
            "image ": {
                "release_type": "MAJOR VERSION",
                "image_name": "universal-image",
                "image_version": "2.0",
                "image_uri": "public.ecr.aws/amazonlinux/universal-image:2.0"
            }
        }
    },
    "Timestamp": "2021-09-03T19:05:57.882Z",
    "UnsubscribeURL": "example url"
}
```

**使用 Amazon SNS 控制台订阅 CodeCatalyst 通用图像更新**

1. 打开 Amazon SNS 控制台以显示[控制面板](https://console.aws.amazon.com/sns/v2/home)。

1. 在导航栏中，选择您的 AWS 区域。

1. 在导航窗格中，选择**订阅**，然后选择**创建订阅**。

1. 在**主题 ARN** 中，输入 `arn:aws:sns:us-east-1:089793673375:universal-image-updates`。

1. 在**协议**中，选择**电子邮件**。

1. 在**端点**中，提供一个电子邮件地址。此电子邮件地址将用于接收通知。

1. 选择**创建订阅**。

1. 您将收到一封主题为 “AWS 通知-订阅确认” 的确认电子邮件。打开这封电子邮件，然后选择**确认订阅**。

**使用 Amazon SNS 控制台取消订阅 CodeCatalyst 通用图像更新**

1. 打开 Amazon SNS 控制台以显示[控制面板](https://console.aws.amazon.com/sns/v2/home)。

1. 在导航栏中，选择您的 AWS 区域。

1. 在导航窗格中，选择**订阅**，然后选择要取消的订阅。

1. 选择**操作**，然后选择**删除订阅**。

1. 选择**删除**。

## 通用映像 4.0 运行时版本
<a name="devenvironment-universal-runtimes-4.0"></a>

下表列出了对 `universal-image:4.0` 可用的运行时。


**`universal-image:4.0` 运行时版本**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codecatalyst/latest/userguide/devenvironment-universal-image.html)

## 通用映像 5.0 运行时版本
<a name="devenvironment-universal-runtimes-5.0"></a>

下表列出了对 `universal-image:5.0` 可用的运行时。


**`universal-image:5.0` 运行时版本**  

| 运行时名称  | 版本 | 特定主要和最新次要版本 | 
| --- | --- | --- | 
| aws cli |  2.25  |  `aws-cli: 2.x`  | 
| docker compose |  2.34  |  `docker-compose: 2.x`  | 
| dotnet |  8.0  |  `dotnet: 8.x`  | 
| golang |  1.24  |  `golang: 1.x`  | 
| java |  corretto21  |  `java: corretto21.x`  | 
| nodejs |  22.0  |  `nodejs: 22.x`  | 
| php |  8.3.16  |  `php: 8.x`  | 
| python |  3.12  |  `python: 3.x`  | 
| ruby |  3.4.2  |  `ruby: 3.x`  | 
| terraform |  1.10.5  |  `terraform: 1.x`  | 

# Devfile 命令
<a name="devenvironment-devfile-commands"></a>

目前， CodeCatalyst 仅支持你的开发文件中的`exec`命令。有关更多信息，请参阅 Devfile.io 文档中的 [Adding commands](https://devfile.io/docs/2.0.0/adding-commands)。

以下示例说明如何在 devfile 中指定 `exec` 命令。

```
commands:
  - id: setupscript
    exec:
      component: test
      commandLine: "chmod +x script.sh"
      workingDir: /projects/devfiles
  - id: executescript
    exec:
      component: test
      commandLine: "./projects/devfiles/script.sh"
  - id: updateyum
    exec:
      component: test
      commandLine: "yum -y update --security"
```

连接到开发环境后，您可以通过终端执行定义的命令。

```
/aws/mde/mde command <command-id>
/aws/mde/mde command executescript
```

对于长时间运行的命令，您可以使用流标志 `-s` 来实时输出命令的执行。

```
/aws/mde/mde -s command <command-id>
```

**注意**  
`command-id` 必须小写。

## 支持的 exec 参数 CodeCatalyst
<a name="devenvironment-exec-support"></a>

CodeCatalyst 在 devfile 版本 2.0.0 上支持以下`exec`参数。
+ `commandLine`
+ `component`
+ `id`
+ `workingDir`

# Devfile 事件
<a name="devenvironment-devfile-events"></a>

目前， CodeCatalyst 仅支持开发文件中的`postStart`事件。有关更多信息，请参阅 devFile.io 文档[postStartObject](https://devfile.io/docs/2.0.0/adding-event-bindings#post-start-object)中的。

以下示例说明如何在 devfile 中添加 `postStart` 事件绑定。

```
commands:
  - id: executescript
    exec:
      component: test
      commandLine: "./projects/devfiles/script.sh"
  - id: updateyum
    exec:
      component: test
      commandLine: "yum -y update --security"
events:
  postStart:
    - updateyum
    - executescript
```

启动后，您的开发环境将按照指定的 `postStart` 命令的定义顺序来执行这些命令。如果命令失败，开发环境将继续运行，并且执行输出将存储在 `/aws/mde/logs` 下的日志中。

# Devfile 组件
<a name="devenvironment-devfile-components"></a>

目前， CodeCatalyst 仅支持开发文件中的`container`组件。有关更多信息，请参阅 Devfile.io 文档中的 [Adding components](https://devfile.io/docs/2.0.0/adding-components)。

以下示例说明如何将启动命令添加到 devfile 中的容器。

```
components:
  - name: test
    container:
      image: public.ecr.aws/amazonlinux/amazonlinux:2
      command: ['sleep', 'infinity']
```

**注意**  
当容器具有短效入口命令时，您必须包含 `command: ['sleep', 'infinity']` 以使容器保持运行。

CodeCatalyst 还支持容器组件中的以下属性：`args``env`、`mountSources`、和`volumeMounts`。

# 将 VPC 连接关联到开发环境
<a name="devenvironment-using-vpc"></a>

*VPC 连接*是一种 CodeCatalyst 资源，其中包含您的工作流程访问 VPC 所需的所有配置。空间管理员可以代表空间成员在 Amazon CodeCatalyst 控制台中添加自己的 VPC 连接。通过添加 VPC 连接，空间成员可以运行工作流操作和创建符合网络规则的开发环境，并能访问已关联 VPC 中的资源。

**重要**  
具有 VPC 连接的开发环境不支持[链接到的第三方源存储库 CodeCatalyst](source-repositories-link.md)。

只有在创建开发环境后才能将开发环境关联到 VPC 连接。创建开发环境后，无法更改关联到开发环境的 VPC 连接。如果要使用其他 VPC 连接，则必须删除当前的开发环境并创建新的开发环境。

**注意**  
开发环境只能与具有项目访问权限的 AWS 账户的 VPC 连接关联。有关更多信息，请参阅《A *mazon CodeCatalyst 管理员*指南》中的[配置受项目限制的账户连接](https://docs.aws.amazon.com/codecatalyst/latest/adminguide/managing-accounts-restriction.html)。

请注意，开发环境在创建时会使用多种 AWS 资源和服务。这意味着开发环境可以连接到以下 AWS 服务：
+ Amazon CodeCatalyst
+ AWS SSM
+ AWS KMS
+ Amazon ECR
+ Amazon CloudWatch
+ Amazon ECS

**注意**  
AWS Toolkit 不支持使用关联的 VPC 连接创建开发环境。另请注意，如果您使用除之外的 IDE AWS Cloud9，则加载时间可能约为五分钟。

您必须具有**空间管理员**角色或**高级用户**角色才能在空间级别管理 VPC 连接。有关更多信息 VPCs，请参阅《*CodeCatalyst 管理员指南》 VPCs CodeCatalyst*[中的 “管理 Amazon](https://docs.aws.amazon.com/codecatalyst/latest/adminguide/managing-vpcs.html)”。

# 中开发环境的配额 CodeCatalyst
<a name="devenvironment-limits"></a>

下表描述了 Amazon 中开发环境的配额和限制 CodeCatalyst。有关 Amazon 配额的更多信息 CodeCatalyst，请参阅[CodeCatalyst 的配额](quotas.md)。


|  |  | 
| --- |--- |
| 每月开发环境小时数 | 开发环境的小时数受空间的总体存储限制的影响。有关更多信息，请参阅 [Pricing](https://codecatalyst.aws/explore/pricing) 和[排查开发环境的问题](devenvironments-troubleshooting.md)。 | 
| 每个空间的开发环境存储量 | 开发环境存储受空间的总体存储限制的影响。有关更多信息，请参阅 [Pricing](https://codecatalyst.aws/explore/pricing) 和[排查开发环境的问题](devenvironments-troubleshooting.md)。 | 
| 开发环境计算量  | 开发环境计算受空间的总体存储限制的影响。有关更多信息，请参阅 [Pricing](https://codecatalyst.aws/explore/pricing) 和[排查开发环境的问题](devenvironments-troubleshooting.md)。 | 