

 AWS Cloud9 不再向新客户提供。 AWS Cloud9 的现有客户可以继续正常使用这项服务。[了解详情](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

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

# 从 Amazon EBS 卷中移出 AWS Cloud9 IDE
<a name="move-environment"></a>

您可以将 AWS Cloud9 开发环境从一个 Amazon EC2 实例移动到另一个 Amazon EC2 实例。例如，您可以执行以下操作之一：
+ 从受损的或以意料之外（与正常运行的实例相比）方式运行的 Amazon EC2 实例中传输环境。
+ 将环境从现有的实例传输到已安装最新系统更新的实例。
+ 增加或减少实例的计算资源（由于该环境在当前实例上已过度使用或使用不充分）。

您可以通过迁移到新的 AWS Cloud9 EC2 环境从一个 AWS Cloud9 支持的 AMI 升级到另一个受支持的 AMI，同时保留项目文件。您可能想要升级到另一个版本的 AMI，因为：
+ 当前环境的 AMI 已达到 end-of-life，不再受支持。
+ 所需的程序包在当前 AMI 中已过时。

您还可以调整与用于环境的与 Amazon EC2 实例关联的 Amazon Elastic Block Store（Amazon EBS）卷的大小。例如，您可以执行以下操作之一或两个操作均执行：
+ 增加卷的大小，因为实例上的存储空间不足。
+ 减小卷的大小，因为您不希望为不使用的额外存储空间付费。

在移动环境或调整其大小之前，您可用尝试停止环境中一些正在运行的进程或向环境中添加交换文件。有关处理内存不足或 CPU 使用率高的更多信息，请参阅[*故障排除*](troubleshooting.md#troubleshooting-ide-low-memory)。

**注意**  
本主题仅介绍将从环境一个 Amazon EC2 实例移动到另一个实例或调整 Amazon EBS 卷的大小。要调整您自己的其中一个服务器中的环境，或者要更改您自己的其中一个服务器的存储空间，请参考服务器的文档。

最后，您可以加密 Amazon EBS 资源，以确保两者的安全， data-at-rest以及实例 data-in-transit与其连接的 EBS 存储之间的安全。

## 移动环境
<a name="move-environment-move"></a>

在开始移动过程之前，请注意以下条件：
+ 您不能将环境移动到相同类型的 Amazon EC2 实例。在您进行移动时，必须为新实例选择不同的 Amazon EC2 实例类型。
**重要**  
如果您将环境移至其他 Amazon EC2 实例类型，则当前版本 AWS Cloud9 中还必须支持该实例类型 AWS 区域。要查看每个区域中可用的实例类型，请转到 **Configure settings**（配置设置）页面，该页面在[使用控制台创建 EC2 环境](create-environment-main.md#create-environment-console)时显示。您在**实例类型**部分中的选择由控制台右上角的选择决定。 AWS 区域 
+ 您必须先停止与环境关联的 Amazon EC2 实例，然后才能更改实例类型。当实例停止时，您和任何成员都不能使用与已停止实例关联的环境。
+ AWS 将实例移动到新硬件，但是，实例的 ID 不会改变。
+ 如果实例在 Amazon VPC 中运行且具有公有 IPv4 地址，则 AWS 释放该地址并为该实例提供新的公有 IPv4 地址。该实例保留其私有 IPv4 地址和任何弹性 IP IPv6 地址或地址。
+ 当实例停止时，请计划停机时间。此过程可能需要几分钟时间。

**移动环境**

1. （可选）如果新实例类型需要现有实例上未安装的驱动程序，则连接到您的实例并安装这些驱动程序。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[调整实例大小的兼容性](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-resize.html#resize-limitations)。

1. 关闭当前显示环境的所有 Web 浏览器选项卡。
**重要**  
如果您不关闭当前显示环境的所有 Web 浏览器选项卡，则 AWS Cloud9 可能会干扰此过程的完成。具体而言， AWS Cloud9 可能会在此过程中尝试在错误的时间重启与环境关联的 Amazon EC2 实例。在此过程的最后一步完成之前，该实例必须保持停止状态。

1. 如果您尚未登录 AWS 管理控制台，请登录[https://console.aws.amazon.com](https://console.aws.amazon.com/)。

   我们建议您使用自己的管理员级证书登录。 AWS 账户如果您无法执行此操作，请咨询您的 AWS 账户 管理员。

1. 打开 Amazon EC2 控制台。为此，请在 **Services（服务）**列表中，选择 **EC2**。

1. 在 AWS 导航栏中，选择 AWS 区域 包含要移动的环境（例如，**美国东部（俄亥俄州）**）。

1. 在服务导航窗格中，展开 **Instances（实例）**，然后选择 **Instances（实例）**。

1. 在实例列表中，选择与您要移动的环境关联的实例。对于 EC2 环境，实例名称以 `aws-cloud9-` 开头，后跟环境名称。例如，如果环境名为 `my-demo-environment`，实例名称以 `aws-cloud9-my-demo-environment` 开头。

1. 如果**实例状态**不是**已停止**，请依次选择**操作**、**实例状态**、**停止**。当屏幕上出现提示时，请选择 **Yes, Stop（是，停止）**。停止实例可能需要几分钟时间。

1. 在 **Instance State（实例状态）**为 **stopped（已停止）**且实例仍处于选中状态的情况下，选择 **Actions（操作）**> **Instance Settings（实例设置）**> **Change Instance Type（更改实例类型）**。

1. 在 **Change Instance Type（更改实例类型）**对话框中，在 **Instance Type（实例类型）**处选择环境使用的新实例类型。
**注意**  
如果列表中未显示您所需的实例类型，则说明它与实例的配置不兼容。例如，由于虚拟化类型，该实例可能不兼容。

1. （可选）如果您选择的实例类型支持 EBS 优化，则选择 **EBS-optimized（EBS 优化）**以启用 EBS 优化，或取消选择 **EBS-optimized（EBS 优化）**以禁用 EBS 优化。
**注意**  
如果您选择的实例类型默认情况下已经过 EBS 优化，则 **EBS-optimized（EBS 优化）**已选中，您无法清除它。

1. 选择 **Apply（应用）**以接受新设置。
**注意**  
如果您在本过程的前面部分没有对 **Instance Type（实例类型）**选择其他实例类型，则在您选择 **Apply（应用）**后不会有任何效果。

1. 重新打开环境。有关更多信息，请参阅 [在中打开环境 AWS Cloud9](open-environment.md)。

有关前述过程的更多信息，请参阅《Amazon EC2 用户指南》**中的[更改实例类型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-resize.html)。

## AWS Cloud9 将 EC2 环境移至不同的亚马逊系统映像 (AMI)
<a name="moving-ec2-environ-to-ami"></a>

 

本主题介绍如何将 AWS Cloud9 EC2 环境从一个亚马逊 Linux AMI 迁移到另一个 AWS Cloud9 受支持的 AMI。

**注意**  
如果您想将环境迁移到新实例而不更新操作系统版本，请参阅[移动环境](#move-environment-move)。

可以使用以下过程之一在环境之间迁移数据：

**通过将归档下载到本地计算机来移动环境**

1. 使用不同的基础映像在同一可用区中创建新环境：

   1. 完成[创建 EC2 环境](create-environment-main.md)部分中的步骤以创建新环境。
**注意**  
选择**平台**时，请选择要将环境迁移到的平台。

   1. 默认情况下，使用 10 GiB 的卷创建环境。如果您没有足够的空间将归档上传或解压缩到新环境，请完成[调整环境使用的 Amazon EBS 卷大小](move-environment-resize.md)过程中的步骤来调整 Amazon EBS 卷大小。

1. 在 AWS Cloud9 IDE 中打开要迁移的环境。

1.  AWS Cloud9 IDE 加载后，从菜单中选择 “**文件**” > “**下载项目**”，下载包含环境项目目录内容的存档。

1. 在新环境中打开 AWS Cloud9 IDE。

1. 选择**文件** > **上传本地文件...** 以上传归档。

1. （可选）要将旧 `.c9` 目录备份到 `.c9.backup`，请在环境终端中运行以下命令：

   ```
   cp .c9 .c9.backup
   ```

   如果想稍后恢复配置文件，则可能需要这些备份文件。

1. 要将归档解压缩，请运行以下命令：

   ```
   tar xzvf <old_environment_name>.tar.gz -C ~/
   ```

1. 要从项目目录中删除归档，请运行以下命令：

   ```
   rm <old_environment_name>.tar.gz
   ```

   确保新环境按预期运行。

1. 现在，您可以删除旧环境。

**使用 Amazon EBS 卷移动环境**

如果无法下载归档，或如果生成的归档太大，则可以使用 Amazon EBS 卷进行迁移。此外，您还可通过此方法复制位于 `~/environment` 目录之外的文件。

1. 关闭在现有环境中打开的所有 AWS Cloud9 IDE 选项卡。

1. 完成以下步骤以停止现有实例：

   1. 在 AWS Cloud9 控制台中，选择要导航的环境以查看其详细信息。

   1. 在**环境详细信息**页面的 **EC2 实例**选项卡下，选择**管理 EC2 实例**。

   1. 在 EC2 控制台中，选择实例以导航到实例详细信息。

   1. 确保**实例状态**设置为**已停止**。如果不是，请从**实例状态**下拉列表中选择**停止实例**。当出现提示时，请选择**停止**。停止实例可能需要几分钟时间。

1. 使用不同的基础映像在同一可用区中创建新环境：

   1. 完成[创建 EC2 环境](create-environment-main.md)部分中的步骤以创建新环境。
**注意**  
选择**平台**时，请选择要将环境迁移到的平台。

   1. 默认情况下，使用 10 GiB 的卷创建环境。如果您没有足够的空间将文件从源卷移动到新环境，请完成[调整环境使用的 Amazon EBS 卷大小](move-environment-resize.md)过程中的步骤来调整 Amazon EBS 卷的大小。

1. 完成以下步骤，将卷与现有实例分离：

   1. 在**实例摘要**页面上，选择**存储**选项卡并选择卷。所选卷的设备名称必须与**根设备详细信息**部分的**根设备名称**中指定的名称相同。

   1. 在卷详细信息页面上，选择**操作** > **分离卷**。

   1. 成功分离卷后，请选择**操作** > **附加卷**，然后从下拉列表中查找并选择新环境的实例。您选择的 Amazon EC2 实例的名称必须包含前缀`aws-cloud9`为的 AWS Cloud9 环境名称。

1. 在新环境中打开 AWS Cloud9 IDE。

1. 环境加载后，要识别新附加的卷的设备，请在终端中运行以下命令：

   ```
   lsblk
   ```

   在以下示例输出中，根设备 `nvme0n1p1` 的分区 `nvme0n1` 已挂载，因此还必须挂载 `nvme1n1p1` 分区。其设备的完整路径为 `/dev/nvme1n1p1`：

   ```
   Admin:~/environment $ lsblk
   NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
   nvme0n1       259:0    0  10G  0 disk 
   ├─nvme0n1p1   259:2    0  10G  0 part /
   ├─nvme0n1p127 259:3    0   1M  0 part 
   └─nvme0n1p128 259:4    0  10M  0 part /boot/efi
   nvme1n1       259:1    0  10G  0 disk 
   ├─nvme1n1p1   259:5    0  10G  0 part 
   └─nvme1n1p128 259:6    0   1M  0 part
   ```
**注意**  
在终端中运行此命令时，输出会有所不同。

1. 在环境终端中完成以下步骤以挂载现有卷：

   1. 要创建一个临时目录以挂载卷的分区，请运行以下命令：

      ```
      MOUNT_POINT=$(mktemp -d)
      ```

   1. 根据 `lsblk` 命令的示例输出，指定以下要挂载设备的路径：

      ```
      MOUNT_DEVICE=/dev/nvme1n1p1
      ```
**注意**  
在终端中运行此命令时，输出会有所不同。

   1. 要挂载现有卷，请运行以下命令：

      ```
      sudo mount $MOUNT_DEVICE $MOUNT_POINT
      ```

   1. 完成以下步骤以验证是否正确挂载了现有卷：

      1. 要确保卷包含在输出中，请运行以下命令：

         ```
         df -h
         ```

      1. 要验证卷内容，请运行以下命令：

         ```
         ls $MOUNT_POINT/home/ec2-user/environment/
         ```

1. （可选）要将旧 `.c9` 目录备份到 `.c9.backup`，请在环境终端中运行以下命令：

   ```
   cp .c9 .c9.backup
   ```

   如果想稍后恢复配置文件，则可能需要这些备份文件。

1. 要从现有卷中复制旧环境，请运行以下命令：

   ```
   cp -R $MOUNT_POINT/home/ec2-user/environment ~
   ```
**注意**  
如果需要，您还可以使用上述命令复制环境目录之外的文件或目录。

   确保新环境按预期运行。

1. 要卸载之前的设备，请运行以下两个命令之一：

   ```
   sudo umount $MOUNT_DEVICE
   ```

   ```
   sudo umount $MOUNT_POINT
   ```

1. 从**操作**下拉列表中选择**分离卷**，以分离您在**步骤 3** 中附加的卷。

1. 现在，您可以删除旧环境及其卷。
**注意**  
由于该卷不再附加到环境的 Amazon EC2 实例，因此您需要手动将其删除。可以通过在**卷详细信息**页面上选择**删除**来执行此操作。