

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

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

# 在环境中工作 AWS Cloud9
<a name="environments"></a>

*开发环境*是存储项目文件和运行工具来开发应用程序的地方。 AWS Cloud9 

AWS Cloud9 提供两种类型的开发环境：*EC2 环境*和 *SSH 环境*。为了理解开发环境之间的主要相似和不同之处，请参阅 [EC2 环境与中的 SSH 环境的比较 AWS Cloud9](ec2-env-versus-ssh-env.md)。

阅读以下一个或多个主题 AWS Cloud9 ，学习如何在环境中工作。

**Topics**
+ [创建环境](create-environment.md)
+ [使用 Systems Manager 访问非入口 EC2 实例](ec2-ssm.md)
+ [打开环境](open-environment.md)
+ [AWS 服务 来自环境的呼叫](credentials.md)
+ [更改环境设置](change-environment.md)
+ [使用共享环境](share-environment.md)
+ [移动环境 Amazon EBS 卷](move-environment.md)
+ [删除环境](delete-environment.md)

# 在中创建环境 AWS Cloud9
<a name="create-environment"></a>

要创建 AWS Cloud9 开发环境，请根据您的计划使用方式按照提供的步骤之一进行操作 AWS Cloud9。


****  

|  | 
| --- |
|  如果您不确定选择什么，我们建议 [创建 EC2 环境](create-environment-main.md)。 要快速设置，请创建一个 EC2 环境。 AWS Cloud9 会在您的中自动创建和设置一个新的 Amazon EC2 实例 AWS 账户。 AWS Cloud9 还会自动为您将新实例连接到环境。 为了理解开发环境之间的主要相似和不同之处，请参阅 [EC2 环境与中的 SSH 环境的比较 AWS Cloud9](ec2-env-versus-ssh-env.md)。  | 


****  

|  **源代码提供者**  |  **开发环境主机提供者**  |  **相关步骤**  | 
| --- | --- | --- | 
|  您  |  AWS Cloud9  |  [创建 EC2 环境](create-environment-main.md)  | 
|  您  |  您  |  [创建 SSH 环境](create-environment-ssh.md)  | 
|   [Amazon Lightsail](https://aws.amazon.com/lightsail) 或您  |  您，通过使用 Lightsail  |   [在 IDE 中使用 Amazon Lightsail 实例 AWS Cloud9](lightsail-instances.md)   | 
|  您（使用 [AWS CodePipeline](https://aws.amazon.com/codepipeline)）  |  AWS Cloud9 或者你  |  创建[EC2](create-environment-main.md)或 SS [H](create-environment-ssh.md) 环境，然后 [在 AWS Cloud9 IDE AWS CodePipeline 中使用](codepipeline-repos.md)   | 
|  您（使用 [AWS CodeCommit](https://aws.amazon.com/codecommit)）  |  AWS Cloud9 或者你  |   [AWS CodeCommit 的教程 AWS Cloud9](sample-codecommit.md)   | 
|  您（使用 [GitHub](https://github.com/)）  |  AWS Cloud9 或者你  |  创建[EC2](create-environment-main.md)或 [SSH](create-environment-ssh.md) 环境，然后使用 [Git 面板界面](source-control-gitpanel.md)   | 

**Topics**
+ [创建 EC2 环境](create-environment-main.md)
+ [创建 SSH 环境](create-environment-ssh.md)

# 创建 EC2 环境
<a name="create-environment-main"></a>

在此过程中， AWS Cloud9 创建一个 EC2 环境和一个新的 Amazon EC2 实例，并将该环境连接到该实例。 AWS Cloud9 管理此实例的生命周期，包括根据需要启动、停止和重启实例。如果您删除此环境，则 AWS Cloud9 会自动终止此实例。

您可以在[AWS Cloud9 控制台](#create-environment-console)中创建 AWS Cloud9 EC2 开发环境，也可以使用[代码](#create-environment-code)创建开发环境。

**注意**  
完成此过程可能会导致向您收取费用 AWS 账户。这包括可能向亚马逊收取的费用 EC2。有关更多信息，请参阅 [Amazon EC2 定价](https://aws.amazon.com/ec2/pricing/)。

**警告**  
与 AWS Cloud9 AWS Control Tower 主动控制 [CT 存在兼容性问题。 EC2.PR.8。](https://docs.aws.amazon.com/controltower/latest/userguide/ec2-rules.html#ct-ec2-pr-8-description)如果启用此控件，则无法在中创建 EC2 环境 AWS Cloud9。有关此问题的更多信息，请参阅[故障排除 AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/troubleshooting.html#control-tower-rule)。

## 先决条件
<a name="create-env-ec2-prereq"></a>

完成中的步骤，[设置 AWS Cloud9](setting-up.md)以便您可以登录 AWS Cloud9 控制台并创建环境。

## 使用控制台创建 EC2 环境
<a name="create-environment-console"></a>

1. 登录 AWS Cloud9 控制台：
   + 如果你是唯一一个使用你的用户， AWS 账户 或者你是 IAM 用户 AWS 账户，请转到[https://console.aws.amazon.com/cloud9/](https://console.aws.amazon.com/cloud9/)。
   + 如果您的组织使用 AWS IAM Identity Center，请向 AWS 账户 管理员询问登录说明。
   + 如果您是课堂中的学生，请联系您的导师以获取登录说明。

1. 登录 AWS Cloud9 控制台后，在顶部导航栏中选择一个 AWS 区域 来创建环境。有关可用列表的信息 AWS 区域，请参见[AWS Cloud9](https://docs.aws.amazon.com/general/latest/gr/rande.html#cloud9_region)中的*AWS 一般参考*。  
![\[AWS AWS Cloud9 控制台中的区域选择器\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/consolas_region_new_UX.png)

1. 在显示的位置之一选择大型 **Create environment（创建环境）**按钮。

   如果您还没有 AWS Cloud9 环境，则该按钮会显示在欢迎页面上。  
![\[AWS Cloud9 控制台中的欢迎页面\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/create_welcome_env_new_UX.png)

   如果您已经有 AWS Cloud9 环境，则按钮如下所示。  
![\[AWS Cloud9 控制台中的 “创建环境” 按钮\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/console_create_env_new_UX.png)

1. 在 **Create environment**（创建环境）页面上，在 **Name**（名称）中输入环境的名称。

1. 要为您的环境添加描述，请在 **Description**（描述）字段中输入内容。

1. 对于**环境类型**，选择**新建 EC2 实例**以创建 Amazon EC2 环境：
   + **新 EC2 实例**-启动 AWS Cloud9 可以直接通过 SSH 连接的新 Amazon EC2 实例。您可以使用 Systems Manager 与新的 Amazon EC2 实例进行交互，有关更多信息，请参阅[使用访问无入口 EC2 实例 AWS Systems Manager](ec2-ssm.md)。
   + **现有计算**-启动需要 SSH 登录详细信息的现有 Ama EC2 zon 实例，Amazon EC2 实例必须具有入站安全组规则。
     + 如果您选择 **Existing compute**（现有计算）选项，则会自动创建服务角色。您可以在设置屏幕底部的备注中查看服务角色的名称。
**注意**  
对于使用现有计算的 Amazon EC2 实例创建的 AWS Cloud9 环境，将无法自动关闭。
**警告**  
为您的环境创建 Amazon EC2 实例可能会导致亚马逊向您 AWS 账户 收取费用 EC2。使用 Systems Manager 来管理与您的 EC2 实例的连接无需支付额外费用。

1. 对于**实例类型**，请选择一种实例类型，其中包含您CPUs 认为要执行的任务所需的 RAM 和 v 量。
**警告**  
选择具有更多 RAM 和 v 的实例类型CPUs 可能会导致您 AWS 账户 为 Amazon 支付额外费用 EC2。有关哪种实例类型适合您的工作负载的信息，请参阅 [Amazon EC2 实例类型](https://aws.amazon.com/ec2/instance-types/)页面。

1. 对于**平台**，选择你想要的亚马逊 EC2 实例类型：亚马逊 **Linux 2023、亚马逊 Linux** **2** 或 **Ubuntu 22.0** 4 LTS。 AWS Cloud9 创建实例，然后将环境连接到该实例。
**重要**  
我们建议您为自己的 EC2 环境选择**亚马逊 Linux 2023** 选项。在提供安全、稳定和高性能的运行时系统环境之外，Amazon Linux 2023 AMI 还包括到 2024 年的长期支持。  
有关更多信息，请参阅 [AL2023 页面](https://aws.amazon.com/linux/amazon-linux-2023/)。

1. 为 **Timeout**（超时）选择时间段。此选项决定 AWS Cloud9 在处于非活动状态多长时间之后进入休眠。当所有连接到 IDE 的环境的 Web 浏览器实例都关闭后，将 AWS Cloud9 等待指定的时间，然后关闭该环境的 Amazon EC2 实例。
**警告**  
选择较长的时间段可能会导致在您的 AWS 账户中产生更多费用。

1. 在 **Network settings**（网络设置）面板上，从以下两个选项中选择如何访问您的环境：
   + **AWS Systems Manager (SSM)**-此方法使用 SSM 访问环境，无需打开入站端口。
   + **Secure Shell (SSH)** – 此方法使用 SSH 访问环境，需要打开入站端口。

1. <a name="create-environment-vpc-step"></a>选择 **VPC 设置**以显示您的环境的 Amazon Virtual Private Cloud 和子网。 AWS Cloud9 使用亚马逊虚拟私有云（亚马逊 VPC）与新创建的亚马逊 EC2 实例通信。在本教程中，我们不建议您更改预先选择的默认设置。使用默认设置时， AWS Cloud9 尝试使用默认 VPC，其单个子网与新环境相同，区域 AWS 账户 与新环境相同。根据 Amazon VPC 的设置方式，请按照以下一系列说明之一进行操作。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/create-environment-main.html)
**重要**  
如果您选择 **Existing Compute**（现有计算）作为您的环境类型，您可以将实例启动到公有子网或私有子网中。  
**公有子网**：将互联网网关附加到子网，以允许实例 SSM 代理与 Systems Manager 通信。
**私有子网**：创建 NAT 网关以使实例能够与互联网和其他 AWS 服务通信。
目前，您无法使用[AWS 托管临时证书](security-iam.md#auth-and-access-control-temporary-managed-credentials)来允许 EC2 环境 AWS 服务 代表 AWS 实体（例如 IAM 用户）进行访问。  
 有关配置子网的更多信息，请参阅 [AWS Cloud9 开发环境的 VPC 设置](vpc-settings.md)。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/create-environment-main.html)

   有关这些选择的更多信息，请参阅 [AWS Cloud9 开发环境的 VPC 设置](vpc-settings.md)。

1. 通过为每个标签提供 **Key**（键）和 **Value**（值），添加最多 50 个标签。要执行此操作，请选择 **Add new tag**（添加新标签）。这些标签作为资源标签附加到 AWS Cloud9 环境，并传播到以下底层资源： CloudFormation 堆栈、Amazon EC2 实例和 Amazon EC2 安全组。要了解有关标签的更多信息，请参阅 *[IAM 用户指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/)*中的[使用 AWS 资源标签控制访问权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)以及本指南中的[高级信息](tags.md)。
**警告**  
如果您在创建标签后更新这些标签，则更改不会传播到底层资源。有关更多信息，请参阅[标签](tags.md)高级信息中的 [将标签更新传播到底层资源](tags.md#tags-propagate)。

1. 选择 **Create**（创建）以创建您的环境，然后系统会将您重定向到主页。如果成功创建了帐户，则 AWS Cloud9 控制台顶部会出现一个绿色的闪光条。您可以选择新环境并选择 **Open in Cloud9**（在 Cloud9 中打开）以启动 IDE。  
![\[AWS Cloud9 AWS Cloud9 控制台中的 IDE 选择器\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/cloud9-ide-open.png)

   如果帐户创建失败，则 AWS Cloud9 控制台顶部会出现一个红色的闪光条。您可能会因为 Web 浏览器、 AWS 访问权限、实例或关联的网络的问题而未能创建账户。您可以在 [AWS Cloud9 故障排除](troubleshooting.md#troubleshooting-env-loading)部分找到有关可能的修复方法的信息。
**注意**  
AWS Cloud9 同时支持 IMDSv1 和 IMDSv2。我们建议采用 IMDSv2 ，因为与之相比，它提供了更高的安全级别 IMDSv1。有关优势的更多信息 IMDSv2，请参阅[AWS 安全博客](https://aws.amazon.com/blogs/security/defense-in-depth-open-firewalls-reverse-proxies-ssrf-vulnerabilities-ec2-instance-metadata-service/)。有关如何过渡到 IMDSv2 从的信息 IMDSv1，请参阅《*Amazon Linux 实例 EC2用户指南》中的过渡到使用实例*[元数据服务版本 2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-transition-to-version-2.html)。
**注意**  
如果您的环境使用代理来访问 Internet，则必须向其提供代理详细信息， AWS Cloud9 这样它才能安装依赖关系。有关更多信息，请参阅 [无法安装依赖项](troubleshooting.md#proxy-failed-dependencies)。

## 使用代码创建环境
<a name="create-environment-code"></a>

要使用代码在中创建 EC2 环境 AWS Cloud9，请调用 AWS Cloud9 创建 EC2 环境操作，如下所示。


****  

|  |  | 
| --- |--- |
|  AWS CLI  |   [create-environment-ec2](https://docs.aws.amazon.com/cli/latest/reference/cloud9/create-environment-ec2.html)   | 
|  适用于 C\$1\$1 的 AWS SDK  |   [CreateEnvironmentEC2请求](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_create_environment_e_c2_request.html)，[CreateEnvironmentEC2结果](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_create_environment_e_c2_result.html)   | 
|  适用于 Go 的 AWS SDK  |   [CreateEnvironmentEC2](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.CreateEnvironmentEC2)，[CreateEnvironmentEC2请求](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.CreateEnvironmentEC2Request)，[CreateEnvironmentEC2WithContext](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.CreateEnvironmentEC2WithContext)  | 
|  适用于 Java 的 AWS SDK  |   CreateEnvironmentEC2请求， CreateEnvironmentEC2结果   | 
|  适用于 JavaScript 的 AWS SDK  |   [创建环境 EC2](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Cloud9.html#createEnvironmentEC2-property)   | 
|  适用于 .NET 的 AWS SDK  |   [CreateEnvironmentEC2请求](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TCreateEnvironmentEC2Request.html)、[CreateEnvironmentEC2响应](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TCreateEnvironmentEC2Response.html)   | 
|  适用于 PHP 的 AWS SDK  |   [创建环境 EC2](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloud9-2017-09-23.html#createenvironmentec2)   | 
|  AWS SDK for Python (Boto)  |   [create\$1environment\$1ec2](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/cloud9.html#Cloud9.Client.create_environment_ec2)   | 
|  适用于 Ruby 的 AWS SDK  |   [create\$1environment\$1ec2](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/Cloud9/Client.html#create_environment_ec2-instance_method)   | 
|  AWS Tools for Windows PowerShell  |   [New-C9EnvironmentEC2](https://docs.aws.amazon.com/powershell/latest/reference/items/New-C9EnvironmentEC2.html)   | 
|  AWS Cloud9 API  |   [CreateEnvironmentEC2](https://docs.aws.amazon.com/cloud9/latest/APIReference/API_CreateEnvironmentEC2.html)   | 

**注意**  
如果您的环境使用代理来访问 Internet，则必须向其提供代理详细信息， AWS Cloud9 这样它才能安装依赖关系。有关更多信息，请参阅 [无法安装依赖项](troubleshooting.md#proxy-failed-dependencies)。

# 创建 SSH 环境
<a name="create-environment-ssh"></a>

您可以使用 AWS Cloud9 控制台创建 AWS Cloud9 SSH 开发环境。您无法使用 CLI 创建 SSH 环境。

## 先决条件
<a name="prerequisites"></a>
+ 首先确保您已完成 [设置 AWS Cloud9](setting-up.md) 中的步骤。这样，您便可以登录到 AWS Cloud9 控制台并创建环境。
+ 确定要连接到环境的现有云计算 EC2 实例（例如，您的中的 Amazon 实例 AWS 账户）或您 AWS Cloud9 自己的服务器。
+ 确保现有实例或您自己的服务器满足所有 [SSH 托管要求](ssh-settings.md#ssh-settings-requirements)。这包括安装特定版本的 Python、Node.js 和其他组件；对于您希望的登录后 AWS Cloud9 开始目录设置特定权限；以及设置任何关联的 Amazon Virtual Private Cloud。

## 创建 SSH 环境
<a name="create-the-envsshtitle"></a>

1. 确保您已完成上述先决条件。

1. 使用 SSH 客户端连接到现有实例或您自己的服务器（如果您尚未连接）。这确保了您可以向实例或服务器添加必要的公有 SSH 密钥值。这些内容将在此过程的稍后介绍。
**注意**  
要连接到现有的 AWS 云 计算实例，请参阅以下一项或多项资源：  
对于亚马逊 EC2，请参阅《*亚马逊 EC2 用户指南》*中的 “[连接到您的 Linux 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html)”。
有关 Amazon Lightsail，请参阅 [Amazon Lightsail 文档](https://lightsail.aws.amazon.com/ls/docs/how-to/article/lightsail-how-to-connect-to-your-instance-virtual-private-server)中的*连接到基于 Linux/Unix 的 Lightsail 实例*。
有关信息 AWS Elastic Beanstalk，请参阅《*AWS Elastic Beanstalk 开发人员指南》*中的[列出和连接到服务器实例](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.ec2connect.html)。
有关信息 AWS OpsWorks，请参阅《*AWS OpsWorks 用户指南》*[中的 “使用 SSH 登录 Linux 实例](https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-ssh.html)”。
有关其他 AWS 服务，请参阅该特定服务的文档。
要连接到您自己的服务器，请使用 SSH。已经在 macOS 和 Linux 操作系统上安装了 SSH。要在 Windows 上使用 SSH 连接到服务器，您必须安装 [PuTTY](https://www.putty.org/)。

1. 登录 AWS Cloud9 控制台，网址为[https://console.aws.amazon.com/cloud9/](https://console.aws.amazon.com/cloud9/)。

1. 登录 AWS Cloud9 控制台后，在顶部导航栏中选择一个 AWS 区域 来创建环境。有关可用列表的信息 AWS 区域，请参见[AWS Cloud9](https://docs.aws.amazon.com/general/latest/gr/rande.html#cloud9_region)中的*AWS 一般参考*。  
![\[AWS Cloud9 控制台中的区域选择器\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/consolas_region_new_UX.png)

1. 如果您是第一次创建开发环境，则将显示欢迎页面。在 “**新建 AWS Cloud9 环境**” 面板中，选择 “**创建环境**”。

   如果您之前创建过开发环境，您也可以展开屏幕左侧的窗格。选择 **Your environments**（您的环境），然后选择 **Create environment**（创建环境）。

   在**欢迎**页面：  
![\[如果显示欢迎页面，则选择“Create environment（创建环境）”按钮\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/create_welcome_env_new_UX.png)

   或在 **Your environment（您的环境）**页面内：  
![\[如果未显示欢迎页面，则选择“Create environment（创建环境）”按钮\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/console_create_env_new_UX.png)

1. 在 **Create environment**（创建环境）页面上，输入环境的名称。

1. 在 **Description（描述）**中输入对环境的描述。在本教程中，请使用 `This environment is for the AWS Cloud9 tutorial.`

1. 对于 **Environment type**（环境类型），请从以下选项中选择 **Existing Compute**（现有计算）：
   + **新 EC2 实例**-启动 AWS Cloud9 可以直接通过 SSH 或 SSM 连接的 Amazon EC2 实例。
   + **现有计算**-启动需要 SSH 登录详细信息以及端口 22 才能打开的现有 Amazon EC2 实例。 AWS Cloud9 通过连接到实例[AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html)。
     + 如果您选择 **Existing compute**（现有计算）选项，则会自动创建服务角色。您可以在界面下方的 **Systems Manager 访问的服务角色和实例配置文件**部分查看服务角色名称。有关更多信息，请参阅 [使用访问无入口 EC2 实例 AWS Systems Manager](ec2-ssm.md)。
**警告**  
为您的环境创建 EC2 实例可能会导致您收取 Amazon AWS 账户 费用 EC2。使用 Systems Manager 来管理与您的 EC2 实例的连接无需支付额外费用。
**警告**  
AWS Cloud9 使用 SSH 公钥安全地连接到您的服务器。要建立安全连接，请将我们的公有密钥添加到您的 `~/.ssh/authorized_keys` 文件中，并在以下步骤中提供您的登录凭证。选择 **Copy key to clipboard**（将密钥复制到剪贴板）以复制 SSH 密钥，或选择 **View public SSH key**（查看 SSH 公有密钥）以查看密钥。

1. 在 **Existing compute**（现有计算）面板上，对于 **User**（用户），请输入您在此过程中之前连接到实例或服务器时使用的登录名。例如，对于 AWS 云 计算实例，该登录名可能为 `ec2-user`、`ubuntu` 或 `root`。
**注意**  
我们建议将登录名与实例或服务器上的管理权限或管理员用户关联。更具体地说，我们建议此登录名应在实例或服务器上拥有 Node.js 安装。要进行此检查，请在实例或服务器的终端上运行命令 **`ls -l $(which node)`**（如果您使用的是 `nvm`，请运行 **`ls -l $(nvm which node)`**）。此命令会显示 Node.js 安装的拥有者名称。它还会显示安装的权限、组名称和位置。

1. 对于 **Host**（主机），请输入公有 IP 地址（首选）或者实例或服务器的主机名。

1. 在 “**端**口” 中，输入您 AWS Cloud9 要用来尝试连接到实例或服务器的端口。您也可保留默认端口。

1. 选择 **Additional details - optional**（其他详细信息 – 可选）以显示环境路径、node.js 二进制文件路径和 SSH 跳转主机信息。

1. 在**环境路径**中，输入您要 AWS Cloud9 从中启动的实例或服务器上的目录路径。您之前在此步骤的先决条件中确定了这一点。如果将此项留空， AWS Cloud9 将使用实例或服务器在登录之后通常开始使用的目录。这通常为主目录或默认目录。

1. 对于 **Path to Node.js binary path**（Node.js 二进制文件路径），请输入路径信息以指定实例或服务器上指向 Node.js 二进制文件的路径。要获取路径，您可以在实例或服务器上运行命令 **`which node`**（在使用 `nvm` 时为 **`nvm which node`**）。例如，路径可能为 `/usr/bin/node`。如果将此项留空， AWS Cloud9 在尝试连接时，将尝试猜测 Node.js 二进制文件所在的位置。

1. 对于 **SSH jump host**（SSH 跳转主机），输入有关实例或服务器使用的跳转主机的信息。使用格式 `USER_NAME@HOSTNAME:PORT_NUMBER`（例如 `ec2-user@ip-192-0-2-0:22`）。

   跳转主机必须满足以下要求：
   + 它必须可使用 SSH 通过公有互联网访问。
   + 它必须允许任意 IP 地址通过指定端口的入站访问。
   + 复制到现有实例或服务器上 `~/.ssh/authorized_keys` 文件中的公有 SSH 密钥值还必须复制到跳转主机上的 `~/.ssh/authorized_keys` 文件中。
   + 必须安装有 Netcat。

1. 通过为每个标签提供**键**和**值**，添加最多 50 个标签。要执行此操作，请选择 **Add new tag**（添加新标签）。这些标签作为资源标签附加到 AWS Cloud9 环境，并传播到以下底层资源： CloudFormation 堆栈、Amazon EC2 实例和 Amazon EC2 安全组。要了解有关标签的更多信息，请参阅 *[IAM 用户指南中的[使用 AWS 资源标签控制访问权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)以及本指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/)*中有关标签的[高级信息](tags.md)。
**警告**  
如果您在创建标签后更新这些标签，则更改不会传播到底层资源。有关更多信息，请参阅[标签](tags.md)高级信息中的 [将标签更新传播到底层资源](tags.md#tags-propagate)。

1. 选择 **Create**（创建）以创建您的环境，然后系统会将您重定向到主页。成功创建帐户后， AWS Cloud9 控制台顶部会出现一个绿色的闪光条。您可以选择新环境并选择 **Open in Cloud9**（在 Cloud9 中打开）以启动 IDE。  
![\[AWS Cloud9 AWS Cloud9 控制台中的 IDE 选择器\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/cloud9-ide-open.png)

   如果未能创建账户，则 AWS Cloud9 控制台顶部会出现一个红色的闪光条。由于您的网络浏览器、 AWS 访问权限、实例或关联网络存在问题，您的账户可能无法创建。您可以在 [AWS Cloud9 故障排除](troubleshooting.md#troubleshooting-env-loading)部分找到有关可能修复导致账户失败问题的信息。

**注意**  
如果您的环境使用代理来访问 Internet，则必须向其提供代理详细信息， AWS Cloud9 这样它才能安装依赖关系。有关更多信息，请参阅 [无法安装依赖项](troubleshooting.md#proxy-failed-dependencies)。

# 使用访问无入口 EC2 实例 AWS Systems Manager
<a name="ec2-ssm"></a>

为 EC2 环境创建的 “无入口 EC2 实例” 可以 AWS Cloud9 连接到其 Amazon EC2 实例，而无需在该实例上打开任何入站端口。使用控制台、命令行界面或 [CloudFormation 堆栈](#cfn-role-and-permissions)创建 EC2 环境时，可以选择非入口选项。有关如何使用控制台或命令行界面创建环境的更多信息，请参阅[步骤 1：创建环境](tutorials-basic.md#tutorial-create-environment)。

**重要**  
使用 Systems Manager 会话管理器管理与 EC2 实例的连接不会产生额外费用。

在  控制台的 **Create environment**（创建环境）部分选择环境类型时，您可以选择需要入站连接的新 EC2 实例，也可以选择不需要以下各项的新的非入口 EC2 实例：
+ **[New EC2 instance](create-environment-main.md#create-environment-console)**（新 EC2 实例）– 选择此设置时，实例的安全组具有允许传入的网络流量的规则。将传入的网络流量限制为[已获批连接 AWS Cloud9 的 IP 地址](ip-ranges.md)。开放的入站端口 AWS Cloud9 允许通过 SSH 连接到其实例。如果您使用 S AWS ystems Manager 会话管理器，则无需打开入站端口（无入口）即可通过 SSM 访问您的 Amazon EC2 实例。此方法仅适用于新 Amazon EC2 实例。有关更多信息，请参阅 [在 EC2 环境中使用 Systems Manager 的益处](#ssm-benefits)。
+ **[Existing compute](create-environment-main.md#create-environment-console)**（现有计算）– 通过此设置，可以访问需要 SSH 登录详细信息的现有 Amazon EC2 实例，该实例必须具有对应的入站安全组规则。如果您选择此选项，则会自动创建服务角色。您可以在设置屏幕底部的备注中查看服务角色的名称。

如果使用 [AWS CLI](tutorials-basic.md#tutorial-create-environment) 创建环境，您可以在调用 `create-environment-ec2` 命令时设置 `--connection-type CONNECT_SSM` 选项来配置非入口 EC2 实例。有关创建所需的服务角色和实例配置文件的更多信息，请参阅 [使用管理 Systems Manager 的实例配置文件 AWS CLI](#aws-cli-instance-profiles)。

使用非入口 EC2 实例完成创建环境后，请确认以下事项：
+ Systems Manager 会话管理器具有代表您对 EC2 实例执行操作的权限。有关更多信息，请参阅 [管理 Systems Manager 权限](#service-role-ssm)。
+ AWS Cloud9 用户可以访问会话管理器管理的实例。有关更多信息，请参阅 [授予用户访问由会话管理器管理的实例的权限](#access-ec2-session)。

## 在 EC2 环境中使用 Systems Manager 的益处
<a name="ssm-benefits"></a>

允许[会话管理器](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html)处理与其 EC2 实例 AWS Cloud9 之间的安全连接有两个主要好处：
+ 无需为实例打开入站端口
+ 将实例启动到公有子网或私有子网内的选项

------
#### [ No open inbound ports ]

与其 EC2 实例 AWS Cloud9 之间的安全连接由[会话管理器](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html)处理。会话管理器是一项完全托管的 S AWS Cloud9 ystems Manager 功能，无需打开入站端口即可连接到其 EC2 实例。

**重要**  
使用 Systems Manager 进行非入口连接的选项目前仅在创建新的 EC2 环境时可用。

 随着会话管理器会话的启动，将建立与目标实例的连接。建立连接后，环境现在可以通过 Systems Manager 服务与实例进行交互。Systems Manager 服务通过 Systems Manager Agent ([SSM Agent](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html)) 与实例交互。

原定设置情况下，SSM Agent 安装在 EC2 环境使用的所有实例上。

------
#### [ Private/public subnets ]

当在 **Network settings (advanced) 网络设置（高级）**部分中为实例选择子网时，如果环境实例通过 Systems Manager 访问，则可以选择私有子网或公有子网。

![\[为您的环境选择新的非入口 EC2 实例\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/private-subnet-option.png)


**私有子网**

对于私有子网，请确保实例仍然可以连接到 SSM 服务。此操作可以通过[在公有子网中设置 NAT 网关](https://aws.amazon.com/premiumsupport/knowledge-center/nat-gateway-vpc-private-subnet)或者[为 Systems Manager 配置 VPC 终端节点](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-systems-manager-vpc-endpoints)完成。

使用 NAT 网关的优点在于它可以防止互联网启动到私有子网中的实例的连接。为您的环境的实例分配了一个私有 IP 地址，而不是公有 IP 地址。因此，NAT 网关会将流量从实例转发到互联网或其他 AWS 服务，然后将响应发送回实例。

对于 VPC 选项，请为 Systems Manager 创建至少三个所需的*接口端点*：*com.amazonaws.region.ssm*、*com.amazonaws.region.ec2messages* 和 *com.amazonaws.region.ssmmessages*。有关更多信息，请参阅 *AWS Systems Manager 用户指南*中的[创建 Systems Manager 的 VPC 终端节点](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-create-vpc.html#sysman-setting-up-vpc-create)。

**重要**  
目前，如果您的环境的 EC2 实例启动到私有子网，则无法使用[AWS 托管临时证书](security-iam.md#auth-and-access-control-temporary-managed-credentials)允许 EC2 环境代表 AWS 实体（例如 IAM 用户）访问 AWS 服务。

**公有子网**

如果您的开发环境使用 SSM 访问 EC2 实例，请确保该实例被启动到的公有子网分配了公有 IP 地址。为此，您可以指定自己的 IP 地址或启用公有 IP 地址的自动分配。有关修改自动分配 IP 设置所涉及的步骤，请参阅 *Amazon VPC 用户指南*中的[您的 VPC 中的 IP 地址](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html)。

有关为环境实例配置私有子网和公有子网的更多信息，请参阅 [为创建子网 AWS Cloud9](vpc-settings.md#vpc-settings-create-subnet)。

------

## 管理 Systems Manager 权限
<a name="service-role-ssm"></a>

默认情况下，Systems Manager 没有在您的 EC2 实例上执行操作的权限。通过 AWS Identity and Access Management (IAM) 实例配置文件提供访问权限。（实例配置文件是一个容器，可在启动时将 IAM 角色信息传递给 EC2 实例。）

当您使用 AWS Cloud9 控制台创建无入口 EC2 实例时，系统会自动为您创建服务角色 (`AWSCloud9SSMAccessRole`) 和 IAM 实例配置文件 (`AWSCloud9SSMInstanceProfile`)。（您可以在 IAM 管理控制台中查看 `AWSCloud9SSMAccessRole`。实例配置文件不会显示在 IAM 控制台中。） 

**重要**  
如果您首次使用创建无入口 EC2 环境 AWS CLI，则必须明确定义所需的服务角色和实例配置文件。有关更多信息，请参阅 [使用管理 Systems Manager 的实例配置文件 AWS CLI](#aws-cli-instance-profiles)。

**重要**  
如果您正在创建 AWS Cloud9 环境并使用附加`AWSCloud9Administrator`或`AWSCloud9User`策略的 Amazon EC2 Systems Manager，则还必须附加具有特定 IAM 权限的自定义策略，请参阅[用于创建 SSM 环境的自定义 IAM 策略](security-iam.md#custom-policy-ssm-environment)。这是由于 `AWSCloud9Administrator` 和 `AWSCloud9User` 策略存在权限问题。

为了提供额外的安全保护， AWS Cloud9 服务相关角色的`AWSCloud9ServiceRolePolicy`策略中存在`PassRole`限制。`AWSServiceRoleforAWSCloud9`在您将 IAM 角色*传递*到服务时，则允许该服务代入该角色并代表您执行操作。在这种情况下，该`PassRole`权限可确保 AWS Cloud9 只能将`AWSCloud9SSMAccessRole`角色（及其权限）传递给 EC2 实例。这将可以在 EC2 实例上执行的操作限制为仅 AWS Cloud9要求的操作。

**注意**  
如果您不再需要使用 Systems Manager 来访问实例，您可以删除 `AWSCloud9SSMAccessRole` 服务角色。有关更多信息，请参阅 *IAM 用户指南*中的[删除角色或实例配置文件](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_delete.html)。

### 使用管理 Systems Manager 的实例配置文件 AWS CLI
<a name="aws-cli-instance-profiles"></a>

您还可以使用 AWS CLI创建非入口 EC2 环境。当您调用 `create-environment-ec2` 时，将 `--connection-type` 选项设置为 `CONNECT_SSM`。

如果您使用此选项，则 `AWSCloud9SSMAccessRole` 服务角色和 `AWSCloud9SSMInstanceProfile` 不会自动创建。因此，要创建所需的服务配置文件和实例配置文件，请执行下列操作之一：
+ 使用控制台创建 EC2 环境，然后 `AWSCloud9SSMAccessRole` 服务角色和 `AWSCloud9SSMInstanceProfile` 之后将自动创建。创建后，服务角色和实例配置文件可用于其他使用 AWS CLI创建的 EC2 环境。
+ 运行以下 AWS CLI 命令以创建服务角色和实例配置文件。

  ```
  aws iam create-role --role-name AWSCloud9SSMAccessRole --path /service-role/ --assume-role-policy-document '{"Version": "2012-10-17",		 	 	 "Statement": [{"Effect": "Allow","Principal": {"Service": ["ec2.amazonaws.com","cloud9.amazonaws.com"]      },"Action": "sts:AssumeRole"}]}'
  aws iam attach-role-policy --role-name AWSCloud9SSMAccessRole --policy-arn arn:aws:iam::aws:policy/AWSCloud9SSMInstanceProfile
  aws iam create-instance-profile --instance-profile-name AWSCloud9SSMInstanceProfile --path /cloud9/
  aws iam add-role-to-instance-profile --instance-profile-name AWSCloud9SSMInstanceProfile --role-name AWSCloud9SSMAccessRole
  ```

## 授予用户访问由会话管理器管理的实例的权限
<a name="access-ec2-session"></a>

要打开通过 Systems Manager 连接到 EC2 实例的 AWS Cloud9 环境，用户必须拥有 API 操作权限`StartSession`。此操作为会话管理器会话启动与托管 EC2 实例的连接。您可以使用 AWS Cloud9 特定的托管策略（推荐）或编辑 IAM 策略并添加必要的权限来授予用户访问权限。


****  

| 方法 | 说明 | 
| --- | --- | 
|  使用 AWS Cloud9特定的托管策略  |  我们建议使用 AWS 托管策略允许用户访问由 Systems Manager 管理的 EC2 实例。托管策略为标准 AWS Cloud9 用例提供了一组权限，并且可以轻松地附加到 IAM 实体。 所有托管式策略还包括运行 `StartSession` API 操作的权限。以下是专用于的托管策略 AWS Cloud9： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/ec2-ssm.html)  如果您正在创建 AWS Cloud9 环境并使用附加`AWSCloud9Administrator`或`AWSCloud9User`策略的 Amazon EC2 Systems Manager，则还必须附加具有特定 IAM 权限的自定义策略，请参阅[用于创建 SSM 环境的自定义 IAM 策略](security-iam.md#custom-policy-ssm-environment)。这是由于 `AWSCloud9Administrator` 和 `AWSCloud9User` 策略存在权限问题。  有关更多信息，请参阅 [AWS 的托管策略 AWS Cloud9](security-iam.md#auth-and-access-control-managed-policies)。  | 
|  编辑 IAM 策略并添加所需的策略语句  |  要编辑现有策略，您可以添加对于 `StartSession` API 的权限。要使用 AWS 管理控制台 或编辑策略 AWS CLI，请按照 IAM *用户指南*中[编辑 IAM 策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/#edit-managed-policy-console)提供的说明进行操作。 编辑策略时，添加允许要运行的 `ssm:startSession` API 操作的 [policy statement](#policy-statement)（请参阅下面的内容）。  | 

您可以使用以下权限运行 `StartSession` API 操作。`ssm:resourceTag`条件键指定可以为任何实例 (`Resource: arn:aws:ec2:*:*:instance/*`) 启动会话管理器会话，前提是该实例是 AWS Cloud9 EC2 开发环境 (`aws:cloud9:environment`)。

**注意**  
以下托管式策略还包括这些策略语句：`AWSCloud9Administrator`、`AWSCloud9User` 和 `AWSCloud9EnvironmentMember`。

```
{
            "Effect": "Allow",
            "Action": "ssm:StartSession",
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "StringLike": {
                    "ssm:resourceTag/aws:cloud9:environment": "*"
                },
                "StringEquals": {
                    "aws:CalledViaFirst": "cloud9.amazonaws.com"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:document/*"
            ]
        }
```

## CloudFormation 用于创建无入口的 EC2 环境
<a name="cfn-role-and-permissions"></a>

使用 [CloudFormation 模板](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloud9-environmentec2.html)定义非入口 Amazon EC2 开发环境，请在创建堆栈之前执行以下操作：

1. 创建 `AWSCloud9SSMAccessRole` 服务角色和 `AWSCloud9SSMInstanceProfile` 实例配置文件。有关更多信息，请参阅 [使用 CloudFormation 模板创建服务角色和实例配置文件](#creating-cfn-instance-profile)。

1. 更新调用 IAM 实体的策略 CloudFormation。这样，此实体可以启动连接到 EC2 实例的会话管理器会话。有关更多信息，请参阅 [将 Systems Manager 权限添加到 IAM 策略](#updating-IAM-policy)。

### 使用 CloudFormation 模板创建服务角色和实例配置文件
<a name="creating-cfn-instance-profile"></a>

您需要创建服务角色 `AWSCloud9SSMAccessRole` 和实例配置文件 `AWSCloud9SSMInstanceProfile` 以使 Systems Manager 能够管理支持您的开发环境的 EC2 实例。

如果您之前创建`AWSCloud9SSMAccessRole`并`AWSCloud9SSMInstanceProfile`通过创建无入口的 EC2 环境[with the console](#using-the-console)或[运行 AWS CLI 命令](#aws-cli-instance-profiles)，则服务角色和实例配置文件已经可供使用。

**注意**  
假设您尝试为无入口的 EC2 环境创建 CloudFormation 堆栈，但没有先创建所需的服务角色和实例配置文件。那么，不会创建堆栈，并显示以下错误消息：  
账户中不存在实例 AWSCloud9SSMInstance配置文件。

首次使用创建无入口 EC2 环境时 CloudFormation，可以在模板中将`AWSCloud9SSMAccessRole`和定义`AWSCloud9SSMInstanceProfile`为 IAM 资源。

摘自示例模板的此内容显示了如何定义这些资源。该`AssumeRole`操作会返回安全证书，这些证书提供对 AWS Cloud9 环境及其 EC2 实例的访问权限。

```
AWSTemplateFormatVersion: 2010-09-09
Resources: 
  AWSCloud9SSMAccessRole:
    Type: AWS::IAM::Role
    Properties: 
      AssumeRolePolicyDocument:
        Version: 2012-10-17		 	 	 
        Statement:
          - Effect: Allow
            Principal:
              Service:
              - cloud9.amazonaws.com
              - ec2.amazonaws.com
            Action:
              - 'sts:AssumeRole'
      Description: 'Service linked role for AWS Cloud9'
      Path: '/service-role/'
      ManagedPolicyArns: 
        - arn:aws:iam::aws:policy/AWSCloud9SSMInstanceProfile
      RoleName: 'AWSCloud9SSMAccessRole'

  AWSCloud9SSMInstanceProfile:
    Type: "AWS::IAM::InstanceProfile"
    Properties: 
      InstanceProfileName: AWSCloud9SSMInstanceProfile
      Path: "/cloud9/"
      Roles: 
        - 
          Ref: AWSCloud9SSMAccessRole
```

### 将 Systems Manager 权限添加到 IAM 策略
<a name="updating-IAM-policy"></a>

在 [CloudFormation 模板](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloud9-environmentec2.html)中[定义服务角色和实例配置文件](#creating-cfn-instance-profile)后，请确保创建堆栈的 IAM 实体具有启动会话管理器会话的权限。会话是使用会话管理器建立的与 EC2 实例的连接。

**注意**  
如果您没有在为非入口 EC2 环境创建堆栈之前添加启动会话管理器会话的权限，则会返回 `AccessDeniedException` 错误。

通过调用 CloudFormation，向 IAM 实体的策略添加以下权限。

```
{
            "Effect": "Allow",
            "Action": "ssm:StartSession",
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "StringLike": {
                    "ssm:resourceTag/aws:cloud9:environment": "*"
                },
                "StringEquals": {
                    "aws:CalledViaFirst": "cloudformation.amazonaws.com"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:document/*"
            ]
        }
```

## 为 Amazon S3 配置 VPC 终端节点以下载依赖项
<a name="configure-s3-endpoint"></a>

如果您 AWS Cloud9 环境的 EC2 实例无法访问互联网，请为指定的 Amazon S3 存储桶创建 VPC 终端节点。此存储桶包含保留 IDE 所需的依赖项 up-to-date。

为 Amazon S3 设置 VPC 端点还涉及自定义访问策略。您希望访问策略仅允许访问包含要下载的依赖项的可信 S3 桶。

**注意**  
您可以使用、或 Amazon VPC API 创建和配置 VPC 终端节点。 AWS 管理控制台 AWS CLI以下过程说明如何使用控制台界面创建 VPC 端点。<a name="create-s3-endpoint"></a>

## 为 Amazon S3 创建和配置 VPC 终端节点
<a name="create-s3-endpoint"></a>

1. 在中 AWS 管理控制台，前往 Amazon VPC 的控制台页面。

1. 在导航窗格中，选择 **Endpoints（端点）**。

1. 在 **Endpoints（端点）**页面中，选择 **Create Endpoint（创建端点）**。

1. 在 **Create Endpoint**（创建端点）页面中，在搜索字段中输入“s3”，然后按 **Return**（返回）以列出 Amazon S3 在当前 AWS 区域内可用的端点。

1. 从返回的 Amazon S3 端点列表中选择 **Gateway（网关）**类型。

1. 接下来，选择包含您环境的 EC2 实例的 VPC。

1. 现在选择 VPC 的路由表。这样，关联的子网可以访问端点。您环境的 EC2 实例位于其中一个子网中。

1. 在 **Policy**（策略）部分，选择 **Custom**（自定义）选项，并将标准策略替换为以下策略。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
         {
             "Sid": "Access-to-C9-bucket-only",
             "Effect": "Allow",
             "Principal": "*",
             "Action": "s3:GetObject",
             "Resource": "arn:aws:s3:::{bucket_name}/content/dependencies/*"
         }
     ]
   }
   ```

------

   对于 `Resource` 元素，将 `{bucket_name}` 替换为您的 AWS 区域内可用的桶的实际名称。例如，如果您 AWS Cloud9 在欧洲（爱尔兰）地区使用，则需要指定以下内容：`"Resource": "arn:aws:s3:::static-eu-west-1-prod-static-hld3vzaf7c4h/content/dependencies/`。

   下表列出了可用 AWS 区域 位置 AWS Cloud9 的存储桶名称。  
**区域中的 AWS Cloud9 亚马逊 S3 存储桶**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/ec2-ssm.html)

1. 选择**创建端点**。

   如果您提供了正确的配置信息，则会出现一条消息，显示已创建的端点的 ID。

1. 要检查您的 IDE 是否可以访问 Amazon S3 存储桶，请在菜单栏选择 **Window（窗口）**> **New Terminal（新建终端）**以启动终端会话。然后，运行下面的命令，同时将 `{bucket_name}` 替换为您的区域的桶名称。

   ```
   ping {bucket_name}.s3.{region}.amazonaws.com.
   ```

   例如，如果您在美国东部（弗吉尼亚州北部）区域为 S3 桶创建了端点，则运行以下命令。

   ```
   ping static-us-east-1-prod-static-mft1klnkc4hl.s3.us-east-1.amazonaws.com
   ```

   如果 ping 得到响应，则确认 IDE 可以访问该存储桶及其依赖项。

有关此功能的更多信息，请参阅*AWS PrivateLink指南*[中的 Amazon S3 终端节点](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html)。

## 为私有连接配置 VPC 终端节点
<a name="configure-no-egress"></a>

当您将实例启动到带有 **access using Systems Manager**（使用 Systems Manager 访问）选项的子网内，则其安全组没有允许传入网络流量的入站规则。但是，安全组具有出站规则，以允许来自实例的出站流量。这是下载使 AWS Cloud9 IDE 保持最新状态所需的软件包和库所必需的。

要防止实例的出站和入站流量，请为 Systems Manager 创建和配置 Amazon VPC 端点。使用接口 VPC 终端节点（接口终端节点），您可以连接到由提供支持的服务[AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-share-your-services.html)。 AWS PrivateLink 是一种可用于使用私有 IP 地址私有访问 Amazon EC2 和 System APIs s Manager 的技术。要将 VPC 终端节点配置为使用 Systems Manager，请按照此[知识中心资源](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-systems-manager-vpc-endpoints/)提供的说明进行操作。

**警告**  
假设您配置的安全组不允许入站或出站网络流量。然后，支持您的 AWS Cloud9 IDE 的 EC2 实例无法访问互联网。您需要创建一个[适用于您的 VPC 的 Amazon S3 端点](#configure-s3-endpoint)，以允许访问包含在可信 S3 桶中的依赖项。此外，如果没有互联网接入 AWS 服务 AWS Lambda，有些内容（例如）可能无法按预期运行。  
使用 AWS PrivateLink，通过 VPC 终端节点处理的每 GB 会产生数据处理费用。这与流量的来源或目的地无关。有关更多信息，请参阅[AWS PrivateLink 定价](https://aws.amazon.com/privatelink/pricing/)。

# 在中打开环境 AWS Cloud9
<a name="open-environment"></a>

此过程介绍如何在 AWS Cloud9中打开环境。

**注意**  
此过程假设您已经创建了 AWS Cloud9 开发环境。要创建环境，请参阅[创建环境](create-environment.md)。

1. 按如下方式登录 AWS Cloud9 控制台：
   + 如果您是唯一使用您的用户， AWS 账户 或者您是 IAM 用户 AWS 账户，请转到[https://console.aws.amazon.com/cloud9/](https://console.aws.amazon.com/cloud9/)。
   + 如果您的组织使用 AWS IAM Identity Center，请向 AWS 账户 管理员询问登录说明。
**重要**  
如果您[注销 AWS 账户，则](https://aws.amazon.com/premiumsupport/knowledge-center/sign-out-account/)之后仍可 AWS Cloud9 在 5 分钟内访问 IDE。然后，当所需权限到期时，将拒绝访问。

1. 在顶部导航栏中，选择环境所在 AWS 区域 的位置。  
![\[AWS 区域 AWS Cloud9 控制台中的选择器\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/consolas_region_new_UX.png)

1. 在环境列表中，对于要打开的环境，请执行以下操作之一：
   + 在卡片的内部，选择 **Open in Cloud9**（在 Cloud9 中打开）链接。
   + 选择卡片，然后选择 **Open in Cloud9**（在 Cloud9 中打开）按钮。  
![\[使用“Open in Cloud9”（在 Cloud9 中打开）按钮选择环境\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/console_create_env_new_UX.png)

如果控制台中未显示您的环境，请尝试执行以下一个或多个操作来显示它。
+ 在 **Environments**（环境）页面的下拉菜单栏中，选择以下一项或多项。
  + 选择**我的环境**以显示您的 AWS 实体在选定 AWS 区域 和中拥有的所有环境 AWS 账户。
  + 选择 “**与我共享**” 以显示您的 AWS 实体在所选 AWS 区域 环境中受邀进入的所有环境 AWS 账户。
  + 选择 “**所有账户环境**” 以显示所选环境中的所有环境 AWS 区域 以及 AWS 账户 您的 AWS 实体有权显示的所有环境。
+ 如果认为您是某个环境的成员，但在 **Shared with you**（已与您共享）列表中未显示该环境，请与该环境的拥有者联系。
+ 在顶部导航栏中，选择其他导航栏 AWS 区域。

# AWS 服务 从中的环境中呼叫 AWS Cloud9
<a name="credentials"></a>

您可以 AWS 服务 从 AWS Cloud9 开发环境中调用。例如，您可以执行以下操作：
+ 在 Amazon Simple Storage Service (Amazon S3) 存储桶中上传和下载数据。
+ 通过 Amazon Simple Notification Service (Amazon SNS) 主题发送广播通知。
+ 在 Amazon DynamoDB (DynamoDB) 数据库中读取和写入数据。

您可以通过多种方式 AWS 服务 从您的环境中调用。例如，您可以使用 AWS Command Line Interface (AWS CLI) 或从终端会话中运行命令。 AWS CloudShell 您也可以从您在环境中运行的代码调用 AWS 服务 。您可以通过使用编程语言（例如JavaScript、、、PythonRubyPHPGo、和）来 AWS SDKs 实现此目的C\$1\$1。有关更多信息，请参阅[AWS CLI 和 aws-shell 示例](sample-aws-cli.md)、《[AWS Command Line Interface 用户指南》](https://docs.aws.amazon.com/cli/latest/userguide/)和。[AWS SDKs](https://aws.amazon.com/developer/tools/#sdk)

每次调用 AWS CLI AWS CloudShell、或您的代码时， AWS 服务 AWS CloudShell、或您的代码都必须在调用时提供一组 AWS 访问凭证。 AWS CLI这些凭证确定调用方是否具有相应的权限以进行调用。如果凭证没有包括合适的权限，则调用失败。

可以通过几种方法为您的环境提供凭证。下表介绍了一些方法。


****  

| 环境类型 | 方法 | 
| --- | --- | 
|  EC2  |  使用 AWS 托管临时证书。 我们建议在 EC2 环境中使用这种方法。 AWS 托管临时凭证代表您管理 EC2 环境中的 AWS 访问证书，同时还要遵循 AWS 安全最佳实践。  **如果您使用的是 EC2 环境，可以跳过本主题的其余部分。这是因为环境中已经为您设置了 AWS 托管临时证书。** 有关更多信息，请参阅 [AWS 托管式临时凭证](security-iam.md#auth-and-access-control-temporary-managed-credentials)。  | 
|  EC2  |  将一个 IAM 实例配置文件附加到实例。 仅在出于某种原因无法使用 AWS 托管临时证书时才使用此方法。与 AWS 托管临时证书类似，实例配置文件代表您管理 AWS 访问证书。不过，您必须自行创建和管理实例配置文件，并将其附加到 Amazon EC2 实例。 有关说明，请参阅[创建和使用实例配置文件管理临时凭证](#credentials-temporary)。  | 
|  EC2 或 SSH  |  将您的永久 AWS 访问凭证存储在环境中。 这种方法不如使用临时 AWS 访问凭证安全。不过，这是 SSH 环境支持的唯一方法。 有关说明，请参阅[在环境中创建和存储永久访问凭证](#credentials-permanent-create)。  | 
|  EC2 或 SSH  |  将您的永久 AWS 访问凭证直接插入您的代码中。 我们不鼓励采用这种方法，因为它不遵循 AWS 安全最佳实践。 由于我们不建议使用该方法，因此，在本主题中没有介绍该方法。  | 

## 创建和使用实例配置文件管理临时凭证
<a name="credentials-temporary"></a>

**注意**  
您不能将此过程用于 AWS Cloud9 SSH 开发环境。请向前跳到[在环境中创建和存储永久访问凭证](#credentials-permanent-create)。  
我们建议您使用 AWS 托管临时证书，而不是实例配置文件。仅当由于某种原因您无法使用 AWS 托管临时证书时，请按照以下说明进行操作。有关更多信息，请参阅 [AWS 托管式临时凭证](security-iam.md#auth-and-access-control-temporary-managed-credentials)。

此过程使用 IAM 和 Amazon EC2 创建 IAM 实例配置文件，并将其附加到连接到您环境的 Amazon EC2 实例。该实例配置文件代表您管理临时凭证。此过程假定您已经在 AWS Cloud9中创建了一个环境。要创建一个环境，请参阅[创建环境](create-environment.md)。

您可以使用 [IAM 和 Amazon EC2 控制台](#credentials-temporary-create-console)或 [AWS Command Line Interface (AWS CLI) ](#credentials-temporary-create-cli)完成这些任务。

### 使用 IAM 控制台创建实例配置文件
<a name="credentials-temporary-create-console"></a>

**注意**  
如果您已具有一个包含实例配置文件的 IAM 角色，请向前跳到[使用 Amazon EC2 控制台将实例配置文件附加到实例](#credentials-temporary-attach-console)。

1. 登录 IAM 控制台，网址为 [https://console.aws.amazon.com/iam](https://console.aws.amazon.com/iam)。

   对于该步骤，我们建议您使用您的 AWS 账户中的管理员级别凭证登录。如果您无法执行此操作，请咨询您的 AWS 账户 管理员。

1. 在导航栏中，选择 **Roles（角色）**。
**注意**  
您无法使用 IAM 控制台创建实例配置文件本身。您必须创建一个包含实例配置文件的 IAM 角色。

1. 选择 **Create role（创建角色）**。

1. 在 **Select type of trusted entity**（选择可信实体的类型）页面中，在已选择 **AWS 服务**的情况下，在 **Choose the service that will use this role**（选择将使用此角色的服务）中选择 **EC2**。

1. 在**选择您的使用案例**中选择 **EC2**。

1. 选择 **Next: Permissions（下一步：权限）**。

1. 在**附加权限策略**页面的策略列表中，选中旁边的复选框 **AdministratorAccess**，然后选择**下一步：查看**。
**注意**  
该**AdministratorAccess**政策允许不受限制地访问您的 AWS 账户所有 AWS 操作和资源。只应将它用于实验目的。有关更多信息，请参阅 *IAM 用户指南*中的 [IAM 策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。

1. 在 **Review**（查看）页面上，为 **Role Name**（角色名称）键入角色的名称（例如 `my-demo-cloud9-instance-profile`）。

1. 选择 **Create role（创建角色）**。

向前跳到[使用 Amazon EC2 控制台将实例配置文件附加到实例](#credentials-temporary-attach-console)。

### 使用创建实例配置文件 AWS CLI
<a name="credentials-temporary-create-cli"></a>

**注意**  
如果您已具有一个包含实例配置文件的 IAM 角色，请向前跳到[使用 AWS CLI将实例配置文件附加到实例](#credentials-temporary-attach-cli)。  
对于本主题，我们建议您在中 AWS CLI 使用管理员级别的凭据进行配置。 AWS 账户如果您无法执行此操作，请咨询您的 AWS 账户 管理员。

**注意**  
如果您使用的是[AWS 托管临时凭证](security-iam.md#auth-and-access-control-temporary-managed-credentials)，则不能在 AWS Cloud9 IDE 中使用终端会话来运行本节中的部分或全部命令。为了解决 AWS 安全最佳实践， AWS 托管临时证书不允许运行某些命令。相反，您可以从单独安装的 AWS Command Line Interface (AWS CLI) 中运行这些命令。

1. 在中 AWS 为实例配置文件所需的 IAM 角色定义信任关系。为此，请创建并保存一个包含以下内容的文件（如 `my-demo-cloud9-instance-profile-role-trust.json`）。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "",
         "Effect": "Allow",
         "Principal": {
           "Service": "ec2.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

1. 通过使用终端或命令提示符，切换到刚在其中保存该文件的目录。

1. 为实例配置文件创建一个 IAM 角色。为此，请运行 IAM `create-role` 命令。执行此操作时，请指定新 IAM 角色的名称（例如 `my-demo-cloud9-instance-profile-role`），以及刚刚保存的文件的名称。

   ```
   aws iam create-role --role-name my-demo-cloud9-instance-profile-role --assume-role-policy-document file://my-demo-cloud9-instance-profile-role-trust.json
   ```

1. 将 AWS 访问权限附加到实例配置文件 IAM 角色。为此，请运行 IAM `attach-role-policy` 命令。指定现有 IAM 角色的名称和命名的 AWS 托管策略的 Amazon 资源名称 (ARN)。`AdministratorAccess`

   ```
   aws iam attach-role-policy --role-name my-demo-cloud9-instance-profile-role --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
   ```
**注意**  
该**AdministratorAccess**政策允许不受限制地访问您的 AWS 账户所有 AWS 操作和资源。只应将它用于实验目的。有关更多信息，请参阅 *IAM 用户指南*中的 [IAM 策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。

1. 创建实例配置文件。为此，请运行 IAM `create-instance-profile` 命令，并指定新实例配置文件的名称 (如 `my-demo-cloud9-instance-profile`)。

   ```
   aws iam create-instance-profile --instance-profile-name my-demo-cloud9-instance-profile
   ```

1. 将 IAM 角色附加到实例配置文件。为此，请运行 IAM `add-role-to-instance-profile`，并指定现有 IAM 角色和实例配置文件的名称。

   ```
   aws iam add-role-to-instance-profile --role-name my-demo-cloud9-instance-profile-role --instance-profile-name my-demo-cloud9-instance-profile
   ```

向前跳到[使用 AWS CLI创建实例配置文件](#credentials-temporary-create-cli)。

### 使用 Amazon EC2 控制台将实例配置文件附加到实例
<a name="credentials-temporary-attach-console"></a>

1. 登录亚马逊 EC2 控制台，网址为 [https://console.aws.amazon.com/ec2](https://console.aws.amazon.com/ec2)。

   对于该步骤，我们建议您使用您的 AWS 账户中的管理员级别凭证登录。如果您无法执行此操作，请咨询您的 AWS 账户 管理员。

1. 在导航栏中，确保区域选择器显示的 AWS 区域 与您环境的区域匹配。例如，如果您在美国东部（俄亥俄州）区域中创建了环境，请在此处的区域选择器中选择 **US East (Ohio)** [美国东部（俄亥俄州）]。

1. 选择**正在运行的实例**链接，或者在导航窗格中展开**实例**，然后选择**实例**。

1. 在实例列表中，选择 **Name（名称）**包含您的环境名称的实例。例如，如果您的环境名称为`my-demo-environment`，请选择**名称**包含的实例**my-demo-environment**。

1. 依次选择 **Actions**（操作）、**Security**（安全）和 **Modify IAM role**（修改 IAM 角色）。
**注意**  
虽然您将一个角色附加到实例，但该角色包含一个实例配置文件。

1. 在 **Modify IAM role**（修改 IAM 角色）页面中，为 **IAM role**（IAM 角色）选择您确定的角色名称或在上一过程中创建的角色名称，然后选择 **Apply**（应用）。

1. 回到环境中， AWS CLI 使用运行`aws configure`命令或 AWS CloudShell 使用运行`configure`命令。不要为 **AWS 访问密钥 ID** 或 **AWS 秘密访问密钥**指定任何值（在出现每个提示后按 `Enter`）。对于**默认区域名称**，请指定离您 AWS 区域 最近的区域或您的 AWS 资源所在的区域。例如，对于美国东部（俄亥俄）区域，请指定 `us-east-2`。有关区域的列表，请参阅**《Amazon Web Services 一般参考》中的 [AWS 区域 and Endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html)。（可选）为 **Default output format（默认输出格式）**指定一个值（如 `json`）。

现在，您可以开始 AWS 服务 从您的环境中进行呼叫。要使用 AWS CLI、或两者进行调用 aws-shell AWS 服务，请参阅[AWS CLI 和 aws-shell 示例](sample-aws-cli.md)。要从您的代码中调用 AWS 服务 ，请参阅其他[教程和示例](tutorials.md)。

### 使用实例配置文件将实例配置文件附加到实例 AWS CLI
<a name="credentials-temporary-attach-cli"></a>

**注意**  
如果您使用的是[AWS 托管临时凭证](security-iam.md#auth-and-access-control-temporary-managed-credentials)，则不能在 AWS Cloud9 IDE 中使用终端会话来运行本节中的部分或全部命令。为了解决 AWS 安全最佳实践， AWS 托管临时证书不允许运行某些命令。相反，您可以从单独安装的 AWS Command Line Interface (AWS CLI) 中运行这些命令。

1. 运行 Amazon EC2 `associate-iam-instance-profile` 命令。为环境指定实例配置文件的名称以及 Amazon EC2 实例的 AWS 区域 ID 和 ID。

   ```
   aws ec2 associate-iam-instance-profile --iam-instance-profile Name=my-demo-cloud9-instance-profile --region us-east-2 --instance-id i-12a3b45678cdef9a0
   ```

   在上述命令中，将 `us-east-2` 替换为实例的 AWS 区域 ID，并将 `i-12a3b45678cdef9a0` 替换为实例的 ID。

   例如，要获取实例 ID，您可以运行 Amazon EC2 `describe-instances` 命令，并指定环境的名称和 AWS 区域 ID。

   ```
   aws ec2 describe-instances --region us-east-2 --filters Name=tag:Name,Values=*my-environment* --query "Reservations[*].Instances[*].InstanceId" --output text
   ```

   在上述命令中，将 `us-east-2` 替换为实例的 AWS 区域 ID，并将 `my-environment` 替换为环境名称。

1. 回到环境中， AWS CLI 使用运行`aws configure`命令或aws-shell使用运行`configure`命令。不要为 **AWS 访问密钥 ID** 或 **AWS 秘密访问密钥**指定任何值。在出现每个提示后按 `Enter`。对于**默认区域名称**，请指定离您 AWS 区域 最近的区域或您的 AWS 资源所在的区域。例如，对于美国东部（俄亥俄）区域，请指定 `us-east-2`。有关区域的列表，请参阅**《Amazon Web Services 一般参考》中的 [AWS Regions and Endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html)。（可选）为 **Default output format（默认输出格式）**指定一个值（如 `json`）。

现在，您可以开始 AWS 服务 从您的环境中进行呼叫。要使用 AWS CLI、或两者进行调用 aws-shell AWS 服务，请参阅[AWS CLI 和 aws-shell 示例](sample-aws-cli.md)。要从您的代码中调用 AWS 服务 ，请参阅其他[教程和示例](tutorials.md)。

## 在环境中创建和存储永久访问凭证
<a name="credentials-permanent-create"></a>

**注意**  
如果您使用的是 AWS Cloud9 EC2 开发环境，我们建议您使用 AWS 托管临时凭证而不是 AWS 永久访问证书。要使用 AWS 托管临时证书，请参阅[AWS 托管的临时证书](security-iam.md#auth-and-access-control-temporary-managed-credentials)。

在本节中，您将使用 AWS Identity and Access Management (IAM) 生成一组永久证书。 AWS CLIaws-shell、或您的代码在调用时可以使用这组证书 AWS 服务。该套装包括 AWS 访问密钥 ID 和私有访问 AWS 密钥，它们是您的用户所独有的 AWS 账户。如果您已经有 AWS 访问密钥 ID 和私有访问 AWS 密钥，请记下这些证书，然后跳到在[环境中存储永久访问证书](#credentials-permanent-create-store)。

您可以使用 [IAM 控制台](#credentials-permanent-create-console)或 [AWS CLI](#credentials-permanent-create-cli) 创建一组永久凭证。

### 授予编程式访问权限
<a name="credentials-permanent-create-console"></a>

如果用户想在 AWS 外部进行交互，则需要编程访问权限 AWS 管理控制台。授予编程访问权限的方式取决于正在访问的用户类型 AWS。

要向用户授予编程式访问权限，请选择以下选项之一。


****  

| 哪个用户需要编程式访问权限？ | 目的 | 方式 | 
| --- | --- | --- | 
| IAM | （推荐）使用控制台凭证作为临时凭证，签署对 AWS CLI AWS SDKs、或的编程请求 AWS APIs。 |  按照您希望使用的界面的说明进行操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/credentials.html)  | 
|  人力身份 （在 IAM Identity Center 中管理的用户）  | 使用临时证书签署向 AWS CLI AWS SDKs、或发出的编程请求 AWS APIs。 |  按照您希望使用的界面的说明进行操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/credentials.html)  | 
| IAM | 使用临时证书签署向 AWS CLI AWS SDKs、或发出的编程请求 AWS APIs。 | 按照 IAM 用户指南中的将[临时证书与 AWS 资源配合使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)中的说明进行操作。 | 
| IAM | （不推荐使用）使用长期凭证签署向 AWS CLI AWS SDKs、或发出的编程请求 AWS APIs。 |  按照您希望使用的界面的说明进行操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/credentials.html)  | 

### 使用创建永久访问证书 AWS CLI
<a name="credentials-permanent-create-cli"></a>

**注意**  
在本节中，我们建议您在中 AWS CLI 使用管理员级别的凭据进行配置。 AWS 账户如果您无法执行此操作，请咨询您的 AWS 账户 管理员。

**注意**  
如果您使用的是[AWS 托管临时凭证](security-iam.md#auth-and-access-control-temporary-managed-credentials)，则不能在 AWS Cloud9 IDE 中使用终端会话来运行本节中的部分或全部命令。为了解决 AWS 安全最佳实践， AWS 托管临时证书不允许运行某些命令。相反，您可以从单独安装的 AWS Command Line Interface (AWS CLI) 中运行这些命令。

运行 IAM `create-access-key` 命令为用户创建新的 AWS 访问 AWS 密钥和相应的私有访问密钥。

```
aws iam create-access-key --user-name MyUser
```

在上述命令中，将 `MyUser` 替换为用户的名称。

在一个安全位置中，保存显示的 `AccessKeyId` 和 `SecretAccessKey` 值。运行 IAM `create-access-key` 命令后，这是您唯一一次可以使用查看用户的 AWS 私有访问密钥。 AWS CLI 要在以后需要为用户生成新的 AWS 私有访问密钥，请参阅 I *AM 用户指南*中的[创建、修改和查看访问密钥 (API、CLI PowerShell)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_CreateAccessKey_CLIAPI)。

### 在环境中存储永久访问凭证
<a name="credentials-permanent-create-store"></a>

在此过程中，您将使用 AWS Cloud9 IDE 在您的环境中存储您的永久 AWS 访问凭证。此过程假设您已经在中创建了一个环境 AWS Cloud9，打开了该环境，并且正在您的 Web 浏览器中显示 AWS Cloud9 IDE。有关更多信息，请参阅[创建环境](create-environment.md)和[打开环境](open-environment.md)。

**注意**  
以下过程介绍了如何使用环境变量存储您的永久访问凭证。如果您的环境中aws-shell安装了 AWS CLI 或，则可以改为使用 AWS CLI 或的**`configure`**命令aws-shell来存储您的永久访问凭证。**`aws configure`**有关说明，请参阅 *AWS Command Line Interface 用户指南*中的[快速配置](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#cli-quick-configuration)。

1. 打开环境后，在 AWS Cloud9 IDE 中启动一个新的终端会话（如果尚未启动）。要启动新的终端会话，请在菜单栏上选择 **Window（窗口）**> **New Terminal（新建终端）**。

1. 运行每个以下命令（每次运行一个命令），以设置表示您的永久访问凭证的本地环境变量。在这些命令中，之后`AWS_ACCESS_KEY_ID:`，输入您的 AWS 访问密钥 ID。之后`AWS_SECRET_ACCESS_KEY`，输入您的 AWS 私有访问密钥。之后`AWS_DEFAULT_REGION_ID`，输入与您 AWS 区域 最近的（或您的首选 AWS 区域）关联的 AWS 区域 标识符。有关可用的标识符列表，请参阅**《Amazon Web Services 一般参考》中的 [AWS 区域 and Endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html)。例如，对于美国东部（俄亥俄州），请使用 `us-east-2`。

   ```
   export AWS_ACCESS_KEY_ID=
   export AWS_SECRET_ACCESS_KEY=
   export AWS_DEFAULT_REGION=
   ```

1. 请注意，上述环境变量仅适用于当前终端会话。要使这些环境变量在终端会话之间可用，您必须将其作为用户环境变量添加到 shell 配置文件中，如下所示。

   1. 在 IDE 的 **Environment（环境）**窗口中，选择齿轮图标，然后选择 **Show Home in Favorites（在收藏夹中显示主页）**。重复该步骤，然后选择 **Show Hidden Files（显示隐藏的文件）**。

   1. 打开 `~/.bashrc` 文件。

   1. 在文件末尾输入或粘贴以下代码。在这些命令中，之后`AWS_ACCESS_KEY_ID:`，输入您的 AWS 访问密钥 ID。之后`AWS_SECRET_ACCESS_KEY`，输入您的 AWS 私有访问密钥。之后`AWS_DEFAULT_REGION_ID`，输入与您 AWS 区域 最近的（或您的首选 AWS 区域）关联的 AWS 区域 标识符。有关可用的标识符列表，请参阅**《Amazon Web Services 一般参考》中的 [AWS 区域 and Endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html)。例如，对于美国东部（俄亥俄州）区域，请使用 `us-east-2`。

      ```
      export AWS_ACCESS_KEY_ID=
      export AWS_SECRET_ACCESS_KEY=
      export AWS_DEFAULT_REGION=
      ```

   1. 保存该文件。

   1. 获取 `~/.bashrc` 文件以加载这些新环境变量。

      ```
      . ~/.bashrc
      ```

现在，您可以开始 AWS 服务 从您的环境中进行呼叫。要使用 AWS CLI 或调用 AWS 服务，请参阅[AWS CLI 和 aws-shell 示例](sample-aws-cli.md)。aws-shell要从您的代码中调用 AWS 服务 ，请参阅其他[教程和示例](tutorials.md)。

# 在中更改环境设置 AWS Cloud9
<a name="change-environment"></a>

您可以更改 AWS Cloud9 开发环境的首选项或设置。
+  [更改环境首选项](#change-environment-single) 
+  [使用控制台更改环境设置](#change-environment-description) 
+  [使用代码更改环境设置](#change-environment-description-code) 

## 更改环境首选项
<a name="change-environment-single"></a>

1. 打开您要更改其设置的环境。要打开环境，请参阅[打开环境](open-environment.md)。

1. 在 AWS Cloud9 IDE 的菜单栏上 **AWS Cloud9**，选择 “**首选项”**。

1. 在 **Preferences（首选项）** 窗口中，选择 **Project Settings（项目设置）**。

1. 根据需要更改任意可用项目设置。这包括 **Code Editor (Ace)（代码编辑器 (Ace)）** 和 **Find in Files（在文件中查找）**等设置。

**注意**  
有关更多信息，请参阅[您可以进行的项目设置更改](settings-project-change.md)。

### 在 AWS Cloud9 IDE 中调整环境的超时时间
<a name="change-environment-timeout"></a>

以下步骤概述了如何在 AWS Cloud9 IDE 中更新 Amazon EC2 环境的超时时间。这个时间将是环境停止之前所能持续的时间。

1. 打开要配置的环境。

1. 在 **AWS Cloud9 IDE** 中，在菜单栏上依次选择 **AWS Cloud9**、**首选项**。

1. 在**首选项**窗口中，滚动至 **Amazon EC2 实例**部分。

1. 从可用列表中选择超时值并更新。

## 使用控制台更改环境设置
<a name="change-environment-description"></a>

1. 按如下方式登录 AWS Cloud9 控制台：
   + 如果您是唯一使用您的个人 AWS 账户 或者您是 IAM 用户 AWS 账户，请转到[https://console.aws.amazon.com/cloud9/](https://console.aws.amazon.com/cloud9/)。
   + 如果您的组织使用 AWS IAM Identity Center，请 AWS 账户 咨询您的管理员以获取登录说明。

1. 在顶部导航栏中，选择环境所在 AWS 区域 的位置。  
![\[AWS AWS Cloud9 控制台中的区域选择器\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/consolas_region_new_UX.png)

1. 在环境列表中，对于要更改其设置的环境，请执行以下操作之一。
   + 选择环境的选项卡标题。然后，在下一页中选择 **Delete**（删除）。
   + 选择环境的卡，然后选择 **View details**（查看详细信息）按钮。

1. 进行更改，然后选择 **Save changes（保存更改）**。

   您可以使用 AWS Cloud9 控制台更改以下设置。
   + 对于 EC2 环境，可更改 **Name（名称）**和 **Description（描述）**。
   + 对于 SSH 环境：可更改 **Name（名称）**、**Description（描述）**、**User（用户）**、**Host（主机）**、**Port（端口）**、**Environment path（环境路径）**、**Node.js binary path（Node.js 二进制文件路径）** 和 **SSH jump host（SSH 跳转主机）**。

   要更改其他设置，请执行以下操作。
   + 对于 EC2 环境，请执行以下操作之一。
     + 您无法更改 **Type（类型）**、**Security groups（安全组）**、**VPC**、**Subnet（子网）**、**Environment path（环境路径）**或 **Environment ARN（环境 ARN）**。
     + 对于 **Permissions**（权限）或 **Number of members**（成员数），请参阅[更改环境成员的访问角色](share-environment-change-access.md)、[删除用户](share-environment-change-access.md)、[邀请 IAM 用户](share-environment.md#share-environment-invite-user)和[删除其他环境成员](share-environment-delete-member.md)。
     + 对于 **EC2 instance type（EC2 实例类型）**、**Memory（内存）** 或 **vCPU**，请参阅[移动环境或调整大小](move-environment.md)。
   + 对于 SSH 环境，请执行以下操作之一。
     + 您无法更改 **Type（类型）**或 **Environment ARN（环境 ARN）**。
     + 对于 **Permissions（权限）**或 **Number of members（成员数）**，请参阅[更改环境成员的访问角色](share-environment-change-access.md)、[删除用户](share-environment-change-access.md)、[邀请 IAM 用户](share-environment.md#share-environment-invite-user)和[删除其他环境成员](share-environment-delete-member.md)。

如果控制台中未显示您的环境，请尝试执行以下一个或多个操作来显示它。
+ 在 **Environments**（环境）页面的下拉菜单栏中，选择以下一项或多项。
  + 选择**我的环境**以显示您的 AWS 实体在选定 AWS 区域 和中拥有的所有环境 AWS 账户。
  + 选择 “**与我共享**” 以显示您的 AWS 实体在所选 AWS 区域 环境中受邀进入的所有环境 AWS 账户。
  + 选择 “**所有账户环境**” 以显示所选环境中的所有环境 AWS 区域 以及 AWS 账户 您的 AWS 实体有权显示的所有环境。
+ 如果认为您是某个环境的成员，但在 **Shared with you**（已与您共享）列表中未显示该环境，请与该环境的拥有者联系。
+ 在顶部导航栏中，选择其他导航栏 AWS 区域。

## 使用代码更改环境设置
<a name="change-environment-description-code"></a>

要使用代码更改中环境的设置 AWS Cloud9，请按如下方式调用 AWS Cloud9 更新环境操作。


****  

|  |  | 
| --- |--- |
|  AWS CLI  |   [update-environment](https://docs.aws.amazon.com/cli/latest/reference/cloud9/update-environment.html)   | 
|  适用于 C\$1\$1 的 AWS SDK  |   [UpdateEnvironmentRequest](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_update_environment_request.html), [UpdateEnvironmentResult](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_update_environment_result.html)   | 
|  适用于 Go 的 AWS SDK  |   [UpdateEnvironment](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.UpdateEnvironment), [UpdateEnvironmentRequest](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.UpdateEnvironmentRequest), [UpdateEnvironmentWithContext](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.UpdateEnvironmentWithContext)   | 
|  适用于 Java 的 AWS SDK  |   [UpdateEnvironmentRequest](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloud9/model/UpdateEnvironmentRequest.html), [UpdateEnvironmentResult](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloud9/model/UpdateEnvironmentResult.html)   | 
|  适用于 JavaScript 的 AWS SDK  |   [updateEnvironment](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Cloud9.html#updateEnvironment-property)   | 
|  适用于 .NET 的 AWS SDK  |   [UpdateEnvironmentRequest](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TUpdateEnvironmentRequest.html), [UpdateEnvironmentResponse](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TUpdateEnvironmentResponse.html)   | 
|  适用于 PHP 的 AWS SDK  |   [updateEnvironment](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloud9-2017-09-23.html#updateenvironment)   | 
|  AWS SDK for Python (Boto)  |   [update\$1environment](https://boto3.readthedocs.io/en/latest/reference/services/cloud9.html#Cloud9.Client.update_environment)   | 
|  适用于 Ruby 的 AWS SDK  |   [update\$1environment](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/Cloud9/Client.html#update_environment-instance_method)   | 
|  AWS Tools for Windows PowerShell  |   [Update-C9Environment](https://docs.aws.amazon.com/powershell/latest/reference/items/Update-C9Environment.html)   | 
|  AWS Cloud9 API  |   [UpdateEnvironment](https://docs.aws.amazon.com/cloud9/latest/APIReference/API_UpdateEnvironment.html)   | 

# 在中使用共享环境 AWS Cloud9
<a name="share-environment"></a>

*共享环境*是邀请多个用户参与的 AWS Cloud9 开发环境。本主题提供有关在共享环境中共享环境 AWS Cloud9 以及如何参与共享环境的说明。

要邀请用户参加您拥有的环境，请按照其中一组过程操作。根据要邀请的用户类型进行选择。
+ 如果您是与环境 AWS 账户 相同的用户，则应[邀请与环境使用相同帐户的用户](#share-environment-invite-user)。
+ 如果您是与环境 AWS 账户 相同的 AWS Cloud9 管理员，特别是 AWS 账户 root 用户、管理员用户或`AWSCloud9Administrator`附加了 AWS 托管策略的用户，则应亲自邀请管理 AWS Cloud9 员，参见[邀请与环境同一个账户的用户](#share-environment-invite-user)，或者让 AWS Cloud9 管理员邀请自己（或同一个账户中的其他人 AWS 账户），参见让与[环境同一个账户的 AWS Cloud9 管理员邀请自己或其他](#share-environment-admin-user)人。

## 共享环境使用案例
<a name="share-environment-about"></a>

共享环境非常适合以下使用案例。
+ **配对编程**（**也称为*对等编程***）**：**这是指，两个用户在单个环境中一起处理相同的代码。在配对编程中，通常一个用户编写代码，同时另一个用户观察正在编写的代码。观察者为代码编写者提供即时输入和反馈。在完成项目期间，他们的位置经常发生变换。如果没有共享环境，结对编程人员团队通常坐在一台计算机前面。每次只有一个用户可以编写代码。在共享环境中，两个用户可以坐在自己的计算机前面。此外，他们可以同时编写代码，即使他们在不同的办公室工作也是如此。
+ **计算机科学课程：**当老师或助教要访问学生的环境时，这非常有用。这样做可以检查学生的家庭作业或实时解决其环境的问题。学生还可以与同学一起在单个环境中实时编写代码，以便共同完成共享家庭作业项目。即使他们可能位于不同的位置并使用不同的计算机操作系统和 Web 浏览器类型，他们也可以完成该任务。
+ 任何其他情况 - 多个用户需要实时协作处理相同的代码。

## 关于环境成员访问角色
<a name="share-environment-member-roles"></a>

在共享环境或参与中的共享环境之前 AWS Cloud9，您应该了解共享环境的访问权限级别。我们将这些权限级别称为*环境成员访问角色*。

*中的共享环境 AWS Cloud9 提供三种环境成员访问角色：*所有者*、*读/写*和只读。*
+ 拥有者拥有环境的完全控制权。每个环境有且仅有一个拥有者，其是环境创建者。拥有者可以执行以下操作。
  + 添加、更改和删除环境的成员
  + 打开、查看和编辑文件
  + 运行代码
  + 更改 环境设置
  + 与其他成员聊天
  + 删除现有的聊天消息

  在 AWS Cloud9 IDE 中，将显示具有**读写**权限的环境所有者。
+  read/write 成员可以执行以下操作。
  + 打开、查看和编辑文件
  + 运行代码
  + 在 AWS Cloud9 IDE 中更改各种环境设置
  + 与其他成员聊天
  + 删除现有的聊天消息

  在 AWS Cloud9 IDE 中，显示 read/write 成员具有**读写访问权限**。
+ 只读成员可以执行以下操作。
  + 打开和查看文件
  + 与其他成员聊天
  + 删除现有的聊天消息

  在 AWS Cloud9 IDE 中，只读成员以**只读**权限显示。

用户必须满足以下任一条件，然后才能成为环境拥有者或成员。
+ 用户是 **AWS 账户 根用户**。
+ 用户是**管理员用户**。有关更多信息，请参阅 [IAM 用户指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-set-up.html#create-an-admin)中的*创建您的第一个 IAM 管理员用户和组*。
+ 用户是**属于 IAM 群组**的**用户、担任角色**的**用户或担任角色的联合用户**，*并且*该群组或角色已关联 AWS 托管策略`AWSCloud9Administrator`或`AWSCloud9User`（或`AWSCloud9EnvironmentMember`仅限成员）。有关更多信息，请参阅 [AWS 托管式（预定义）策略](security-iam.md#auth-and-access-control-managed-policies)。
  + 要将上述任一托管式策略附加到 IAM 组，您可以使用 [AWS 管理控制台](#share-environment-member-roles-console) 或 [AWS 命令行界面 (AWS CLI)](#share-environment-member-roles-cli)，如以下过程所述。
  + 您可以在 IAM 中创建一个角色（该角色具有前面的托管式策略之一），供用户或联合用户代入。有关更多信息，请参阅《IAM 用户指南》**中的[创建角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html)。要让用户或联合身份用户代入角色，请参阅 *IAM 用户指南*中的[使用 IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html)中的带入角色相关内容。

### 使用控制台将的 AWS 托管策略附加 AWS Cloud9 到群组
<a name="share-environment-member-roles-console"></a>

以下过程概述了如何使用控制台将的 AWS 托管策略附加 AWS Cloud9 到群组。

1. 如果您尚未登录 AWS 管理控制台，请登录。

   对于该步骤，我们建议您使用您的 AWS 账户中的 IAM 管理员级别凭证登录。如果您无法执行此操作，请咨询您的 AWS 账户 管理员。

1. 打开 IAM 控制台。为此，请在控制台导航栏中选择 **Services（服务）**。然后，选择 **IAM**。

1. 选择 **Groups（组）**。

1. 选择组的名称。

1. 在 **Permissions（权限）**选项卡中，在 **Manged Policies（托管式策略）**处，选择 **Attach Policy（附加策略）**。

1. 在策略名称列表中，选中以下框之一。
   +  **AWSCloud9用户**（首选）或**AWSCloud9管理员**，允许组中的每个用户成为环境所有者
   +  **AWSCloud9EnvironmentMember** 以允许组中的每个用户仅成为成员

   （如果在列表中看不到某个策略名称，请在**搜索**框中键入策略名称以显示该策略。）

1. 选择**附加策略**。

### 使用将的 AWS 托管策略附加 AWS Cloud9 到群组 AWS CLI
<a name="share-environment-member-roles-cli"></a>

**注意**  
如果您使用的是[AWS 托管临时凭证](security-iam.md#auth-and-access-control-temporary-managed-credentials)，则无法在 AWS Cloud9 IDE 中使用终端会话来运行本节中的部分或全部命令。为了解决 AWS 安全最佳实践， AWS 托管临时证书不允许运行某些命令。相反，您可以从单独安装的 AWS Command Line Interface (AWS CLI) 中运行这些命令。

运行 IAM `attach-group-policy` 命令将的 AWS 托管策略附加 AWS Cloud9 到群组。指定组名称和策略的 Amazon 资源名称（ARN）。

```
aws iam attach-group-policy --group-name MyGroup --policy-arn arn:aws:iam::aws:policy/POLICY_NAME
```

在上述命令中，将 `MyGroup` 替换为组的名称。`POLICY_NAME`替换为以下 AWS 托管策略之一的名称。
+  `AWSCloud9User`（首选）或 `AWSCloud9Administrator` 以允许组中的每个用户成为环境拥有者
+  `AWSCloud9EnvironmentMember` 以允许组中的每个用户仅成为成员

## 邀请与环境位于相同账户中的用户
<a name="share-environment-invite-user"></a>

按照本节中的说明与同一账户中的用户共享您在自己中 AWS 账户 拥有的 AWS Cloud9 开发环境。

1. 假设您要邀请的用户*不是*以下类型的用户之一。确保您要邀请的用户已经具有相应的环境成员访问角色。有关说明，请参阅[关于环境成员访问角色](#share-environment-member-roles)。
   + **AWS 账户 根用户**。
   + **管理员用户**。
   + **属于 IAM 群组**的**用户、担任角色的**用户或**担任角色的联合用户**，*且*该群组或角色已`AWSCloud9Administrator`附加 AWS 托管策略。

1. 打开您拥有并希望邀请用户加入的环境（如果尚未打开该环境）。

1. 在 AWS Cloud9 IDE 的菜单栏中，执行以下任一操作。
   + 依次选择 **Window (窗口)、Share (共享)**。
   + 选择 **Share (共享)**（位于 **Preferences (首选项)** 齿轮图标旁边）。  
![\[AWS Cloud9 IDE 菜单栏中的 “共享” 命令\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/ide-share.png)

1. 在 **Share this environment (共享此环境)** 对话框中，为 **Invite Members (邀请成员)** 键入以下各项之一。
   + 要邀请 **IAM 用户**，请输入该用户的名称。
   + 要邀请 **AWS 账户 根用户**，请输入 `arn:aws:iam::123456789012:root`。`123456789012`用您的 AWS 账户 身份证替换。
   + 要邀请**具有代入角色的用户**或**具有代入角色的联合用户**，请输入 `arn:aws:sts::123456789012:assumed-role/MyAssumedRole/MyAssumedRoleSession`。`123456789012`用您的 AWS 账户 ID 替换为代入的角色的名称。`MyAssumedRole`将 `MyAssumedRoleSession` 替换为代入角色的会话名称。

1. 要使该用户成为只读成员，请选择 **R**。要使该用户成为读取/写入成员，请选择 **RW**。

1. 选择**邀请**。
**注意**  
如果您将此用户设为 read/write 成员，则会显示一个对话框，其中包含有关可能将您的 AWS 安全证书置于危险之中的信息。以下信息提供了有关该问题的更多背景信息。  
您只应与信任的人员共享环境。  
 read/write 成员可能能够使用您环境中的 AWS CLI AWS CloudShell、或 AWS SDK 代码来 AWS 代表您执行操作。此外，如果您将永久 AWS 访问凭证存储在环境中，则该成员可能会复制这些凭证并在环境之外使用它们。  
从您的环境中移除永久 AWS 访问凭证并改用临时 AWS 访问凭证并不能完全解决此问题。这能降低成员复制这些临时凭证并在环境外部使用的可能性（因为这些临时凭证仅在有限的时间内有效）。但是，临时证书仍然允许 read/write 成员代表您 AWS 从环境中执行操作。

1. 与用户联系，并告诉他们可以打开并开始使用该环境。

## 让与环境同一个账号的 AWS Cloud9 管理员邀请自己或其他人
<a name="share-environment-admin-user"></a>

**注意**  
如果您使用的是[AWS 托管临时凭证](security-iam.md#auth-and-access-control-temporary-managed-credentials)，则无法在 AWS Cloud9 IDE 中使用终端会话来运行本节中的部分或全部命令。为了解决 AWS 安全最佳实践， AWS 托管临时证书不允许运行某些命令。相反，您可以从单独安装的 AWS Command Line Interface (AWS CLI) 中运行这些命令。

以下类型的用户可以邀请其自己（或相同 AWS 账户中的其他用户）加入相同账户中的任何环境。
+ **AWS 账户 根用户**。
+ **管理员用户**。
+ **属于 IAM 群组**的**用户、担任角色的**用户或**担任角色的联合用户**，*且*该群组或角色已`AWSCloud9Administrator`附加 AWS 托管策略。

假设受邀用户*不是*上述类型的用户之一。确保该用户已经拥有相应的环境成员访问角色。有关说明，请参阅[关于环境成员访问角色](#share-environment-member-roles)。

要邀请用户，请使用 AWS CLI 或运行 AWS Cloud9 `create-environment-membership`命令。 AWS CloudShell 

```
aws cloud9 create-environment-membership --environment-id 12a34567b8cd9012345ef67abcd890e1 --user-arn USER_ARN --permissions PERMISSION_LEVEL
```

在上述命令中，将 `12a34567b8cd9012345ef67abcd890e1` 替换为环境的 ID。将 `PERMISSION_LEVEL` 替换为 `read-write` 或 `read-only`。并将 `USER_ARN` 替换为以下各项之一：
+ 要邀请 **IAM 用户**，请输入 `arn:aws:iam::123456789012:user/MyUser`。`123456789012`替换为您的 AWS 账户 ID，然后`MyUser`替换为用户名。
+ 要邀请 **AWS 账户 根用户**，请输入 `arn:aws:iam::123456789012:root`。`123456789012`用您的 AWS 账户 身份证替换。
+ 要邀请**具有代入角色的用户**或**具有代入角色的联合用户**，请输入 `arn:aws:sts::123456789012:assumed-role/MyAssumedRole/MyAssumedRoleSession`。`123456789012`用您的 AWS 账户 身份证替换。将 `MyAssumedRole` 替换为代入角色的名称。并且，将 `MyAssumedRoleSession` 替换为代入角色的会话名称。

例如，要邀请账户 ID 的 AWS 账户 root 用户`123456789012`以成员身份加入一个以 ID `12a34567b8cd9012345ef67abcd890e1` 为 read/write 成员的环境，请运行以下命令。

```
aws cloud9 create-environment-membership --environment-id 12a34567b8cd9012345ef67abcd890e1 --user-arn arn:aws:iam::123456789012:root --permissions read-write
```

**注意**  
如果您使用的是 AWS CloudShell，请省略前面的命令中的前`aws`缀。

# 打开共享环境
<a name="share-environment-open"></a>

要打开共享环境，您可以使用 AWS Cloud9 控制面板。使用 AWS Cloud9 IDE 在共享环境中执行操作和完成工作。示例是处理文件和与其他团队成员聊天。

1. 确保将相应的访问策略附加到您的用户的组或角色。有关更多信息，请参阅[关于环境成员访问角色](share-environment.md#share-environment-member-roles)。

1. 按如下方式登录 AWS Cloud9 控制台：
   + 如果您是唯一使用您的个人 AWS 账户 或者您是 IAM 用户 AWS 账户，请转到[https://console.aws.amazon.com/cloud9/](https://console.aws.amazon.com/cloud9/)。
   + 如果您的组织使用 IAM Identity Center，请 AWS 账户 咨询您的管理员以获取登录说明。
   + 如果您是课堂中的学生，请联系您的导师以获取登录说明。

1. 从 AWS Cloud9 控制面板打开共享环境。有关更多信息，请参阅[打开 AWS Cloud9中的环境](open-environment.md)。

您可以使用 **Collaborate（协作）**窗口与其他成员进行交互，如本主题的其余部分中所述。

**注意**  
如果未显示 **Collaborate**（协作）窗口，请选择 **Collaborate**（协作）。如果未显示 **Collaborate（协作）**按钮，请在菜单栏上依次选择 **Window（窗口）、Collaborate（协作）**。

![\[AWS Cloud9 IDE 中的 “协作” 窗口\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/ide-collaborate.png)


# 查看环境成员列表
<a name="share-environment-members-list"></a>

在打开共享环境的情况下，如果未显示成员列表，请在 **Collaborate（协作）**窗口中展开 **Environment Members（环境成员）**。

每个成员旁边的圆圈指示其在线状态，如下所示：
+ 活动成员具有绿色圆圈。
+ 离线成员具有灰色圆圈。
+ 空闲成员具有橙色圆圈。

![\[AWS Cloud9 IDE 中的成员在线状态\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/ide-collaborate-status.png)


要使用代码获取环境成员列表，请调用 AWS Cloud9 描述环境成员资格操作，如下所示。


****  

|  |  | 
| --- |--- |
|  AWS CLI  |   [describe-environment-memberships](https://docs.aws.amazon.com/cli/latest/reference/cloud9/describe-environment-memberships.html)   | 
|  适用于 C\$1\$1 的 AWS SDK  |   [DescribeEnvironmentMembershipsRequest](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_describe_environment_memberships_request.html), [DescribeEnvironmentMembershipsResult](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_describe_environment_memberships_result.html)   | 
|  适用于 Go 的 AWS SDK  |   [DescribeEnvironmentMemberships](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.DescribeEnvironmentMemberships), [DescribeEnvironmentMembershipsRequest](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.DescribeEnvironmentMembershipsRequest), [DescribeEnvironmentMembershipsWithContext](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.DescribeEnvironmentMembershipsWithContext)   | 
|  适用于 Java 的 AWS SDK  |   [DescribeEnvironmentMembershipsRequest](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloud9/model/DescribeEnvironmentMembershipsRequest.html), [DescribeEnvironmentMembershipsResult](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloud9/model/DescribeEnvironmentMembershipsResult.html)   | 
|  适用于 JavaScript 的 AWS SDK  |   [describeEnvironmentMemberships](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Cloud9.html#describeEnvironmentMemberships-property)   | 
|  适用于 .NET 的 AWS SDK  |   [DescribeEnvironmentMembershipsRequest](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TDescribeEnvironmentMembershipsRequest.html), [DescribeEnvironmentMembershipsResponse](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TDescribeEnvironmentMembershipsResponse.html)   | 
|  适用于 PHP 的 AWS SDK  |   [describeEnvironmentMemberships](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloud9-2017-09-23.html#describeenvironmentmemberships)   | 
|  AWS SDK for Python (Boto)  |   [describe\$1environment\$1memberships](https://boto3.readthedocs.io/en/latest/reference/services/cloud9.html#Cloud9.Client.describe_environment_memberships)   | 
|  适用于 Ruby 的 AWS SDK  |   [describe\$1environment\$1memberships](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/Cloud9/Client.html#describe_environment_memberships-instance_method)   | 
|  AWS Tools for Windows PowerShell  |   [Get-C9EnvironmentMembershipList](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-C9EnvironmentMembershipList.html)   | 
|  AWS Cloud9 API  |   [DescribeEnvironmentMemberships](https://docs.aws.amazon.com/cloud9/latest/APIReference/API_DescribeEnvironmentMemberships.html)   | 

# 打开环境成员的活动文件
<a name="share-environment-active-file"></a>

此步骤说明如何打开环境成员的活动文件。

在打开共享环境的情况下，在菜单栏中选择成员名称。然后，选择 **Open Active File**（打开活动的文件）。

![\[AWS Cloud9 IDE 中的 “打开活动文件” 命令\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/ide-collaborate-active-file.png)


# 打开环境成员的打开文件
<a name="share-environment-open-file"></a>

此步骤说明如何打开环境成员的打开文件。

1. 在打开共享环境的情况下，如果未显示成员列表，请在 **Collaborate（协作）**窗口中展开 **Environment Members（环境成员）**。

1. 展开要在您的环境中打开其文件的用户的名称。

1. 打开（双击）要打开的文件的名称。

![\[在 AWS Cloud9 IDE 中打开团队成员的文件\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/ide-collaborate-open-file.png)


# 转到环境成员的活动光标
<a name="share-environment-active-cursor"></a>

此步骤说明如何浏览环境成员的活动光标。

1. 在打开共享环境的情况下，如果未显示成员列表，请在 **Collaborate（协作）**窗口中展开 **Environment Members（环境成员）**。

1. 打开成员名称的上下文（右键单击）菜单，然后选择 **Show Location**（显示位置）。

# 在共享的环境中管理聊天
<a name="chat-delete-share-environment"></a>

本主题介绍如何与其他环境成员聊天，如何在共享的环境中查看聊天消息，以及如何从共享的环境中删除聊天消息。

## 与其他环境成员聊天
<a name="share-environment-chat"></a>

在打开共享环境的情况下，在 **Collaborate（协作）**窗口底部的 **Enter your message here（在此处输入您的消息）**框中键入您的聊天消息，然后按 `Enter`。

![\[AWS Cloud9 IDE 中的聊天区域\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/ide-collaborate-chat.png)


## 在共享的环境中查看聊天消息
<a name="share-environment-chat-view"></a>

在打开共享环境的情况下，如果未显示聊天消息列表，请在 **Collaborate**（协作）窗口中展开 **Group Chat**（群聊）。

## 从共享的环境中删除聊天消息
<a name="share-environment-chat-delete"></a>

在打开共享环境的情况下，在 **Collaborate**（协作）窗口中，对于 **Group Chat**（群聊）中的聊天消息打开上下文（右键单击）菜单。然后，选择 **Delete Message**（删除消息）。

**注意**  
在删除聊天消息时，将从环境中为所有成员删除该消息。

## 从共享的环境中删除所有聊天消息
<a name="share-environment-chat-delete-all"></a>

在打开共享环境的情况下，在 **Collaborate**（协作）窗口中，在 **Group Chat**（群聊）中的任何位置打开上下文（右键单击）菜单。然后，选择 **Clear history**（清除历史记录）。

**注意**  
在删除所有聊天消息时，将从环境中为所有成员删除这些消息。

# 更改环境成员的访问角色
<a name="share-environment-change-access"></a>

此步骤说明如何更改环境成员的访问角色。您也可以使用代码来更改访问角色和更新 AWS Cloud9 环境成员资格。

1. 打开您拥有并包含要更改其访问角色的成员的环境（如果尚未打开该环境）。有关更多信息，请参阅[打开 AWS Cloud9中的环境](open-environment.md)。

1. 如果未显示成员列表，请在 **Collaborate**（协作）窗口中展开 **Environment Members**（环境成员）。

1. 执行以下任一操作：
   + 在要更改其访问角色的成员名称旁边，选择 **R** 或 **RW** 以使该成员分别成为拥有者或读取/写入成员。
   + 要将 read/write 成员更改为只读，请打开成员名称的上下文（右键单击）菜单，然后选择 “**撤消写入权限**”。
   + 要将只读成员更改为读取/写入，请对于成员名称打开上下文（右键单击）菜单，然后选择 **Grant Read\$1Write Access**（授予读取\$1写入访问权限）。
**注意**  
如果您将此用户设为 read/write 成员，则会显示一个对话框，其中包含有关可能将您的 AWS 安全证书置于危险之中的信息。除非您相信该用户会 AWS 代表您采取行动，否则请不要将该用户设为 read/write 会员。有关更多信息，请参阅[邀请与环境位于相同账户中的用户](share-environment.md#share-environment-invite-user)中的相关说明。

要使用代码更改环境成员的访问角色，请调用 AWS Cloud9 更新环境成员资格操作，如下所示。


****  

|  |  | 
| --- |--- |
|  AWS CLI  |   [update-environment-membership](https://docs.aws.amazon.com/cli/latest/reference/cloud9/update-environment-membership.html)   | 
|  适用于 C\$1\$1 的 AWS SDK  |   [UpdateEnvironmentMembershipRequest](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_update_environment_membership_request.html), [UpdateEnvironmentMembershipResult](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_update_environment_membership_result.html)   | 
|  适用于 Go 的 AWS SDK  |   [UpdateEnvironmentMembership](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.UpdateEnvironmentMembership), [UpdateEnvironmentMembershipRequest](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.UpdateEnvironmentMembershipRequest), [UpdateEnvironmentMembershipWithContext](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.UpdateEnvironmentMembershipWithContext)   | 
|  适用于 Java 的 AWS SDK  |   [UpdateEnvironmentMembershipRequest](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloud9/model/UpdateEnvironmentMembershipRequest.html), [UpdateEnvironmentMembershipResult](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloud9/model/UpdateEnvironmentMembershipResult.html)   | 
|  适用于 JavaScript 的 AWS SDK  |   [updateEnvironmentMembership](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Cloud9.html#updateEnvironmentMembership-property)   | 
|  适用于 .NET 的 AWS SDK  |   [UpdateEnvironmentMembershipRequest](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TUpdateEnvironmentMembershipRequest.html), [UpdateEnvironmentMembershipResponse](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TUpdateEnvironmentMembershipResponse.html)   | 
|  适用于 PHP 的 AWS SDK  |   [updateEnvironmentMembership](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloud9-2017-09-23.html#updateenvironmentmembership)   | 
|  AWS SDK for Python (Boto)  |   [update\$1environment\$1membership](https://boto3.readthedocs.io/en/latest/reference/services/cloud9.html#Cloud9.Client.update_environment_membership)   | 
|  适用于 Ruby 的 AWS SDK  |   [update\$1environment\$1membership](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/Cloud9/Client.html#update_environment_membership-instance_method)   | 
|  AWS Tools for Windows PowerShell  |   [Update-C9EnvironmentMembership](https://docs.aws.amazon.com/powershell/latest/reference/items/Update-C9EnvironmentMembership.html)   | 
|  AWS Cloud9 API  |   [UpdateEnvironmentMembership](https://docs.aws.amazon.com/cloud9/latest/APIReference/API_UpdateEnvironmentMembership.html)   | 

# 从共享的环境中删除您的用户
<a name="share-environment-delete-you"></a>

此步骤说明如何从共享的环境中删除您的用户。

**注意**  
如果您是环境拥有者，则无法从环境中删除您的用户。  
如果从环境中删除您的用户，并不会从 IAM 中删除该用户。

1. 在打开共享环境的情况下，如果未显示成员列表，请在 **Collaborate（协作）**窗口中展开 **Environment Members（环境成员）**。

1. 执行以下任一操作：
   + 在 **You (您)** 旁边，选择垃圾桶图标。
   + 打开 **You**（您）的上下文（右键单击）菜单，然后选择 **Leave environment**（离开环境）。

1. 在出现提示时，选择 **Leave (退出)**。

要使用代码将您的用户从共享环境中移除，请按如下方式调用 AWS Cloud9 删除环境成员资格操作。


****  

|  |  | 
| --- |--- |
|  AWS CLI  |   [delete-environment-membership](https://docs.aws.amazon.com/cli/latest/reference/cloud9/delete-environment-membership.html)   | 
|  适用于 C\$1\$1 的 AWS SDK  |   [DeleteEnvironmentMembershipRequest](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_delete_environment_membership_request.html), [DeleteEnvironmentMembershipResult](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_delete_environment_membership_result.html)   | 
|  适用于 Go 的 AWS SDK  |   [DeleteEnvironmentMembership](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.DeleteEnvironmentMembership), [DeleteEnvironmentMembershipRequest](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.DeleteEnvironmentMembershipRequest), [DeleteEnvironmentMembershipWithContext](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.DeleteEnvironmentMembershipWithContext)   | 
|  适用于 Java 的 AWS SDK  |   [DeleteEnvironmentMembershipRequest](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloud9/model/DeleteEnvironmentMembershipRequest.html), [DeleteEnvironmentMembershipResult](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloud9/model/DeleteEnvironmentMembershipResult.html)   | 
|  适用于 JavaScript 的 AWS SDK  |   [deleteEnvironmentMembership](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Cloud9.html#deleteEnvironmentMembership-property)   | 
|  适用于 .NET 的 AWS SDK  |   [DeleteEnvironmentMembershipRequest](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TDeleteEnvironmentMembershipRequest.html), [DeleteEnvironmentMembershipResponse](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TDeleteEnvironmentMembershipResponse.html)   | 
|  适用于 PHP 的 AWS SDK  |   [deleteEnvironmentMembership](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloud9-2017-09-23.html#deleteenvironmentmembership)   | 
|  AWS SDK for Python (Boto)  |   [delete\$1environment\$1membership](https://boto3.readthedocs.io/en/latest/reference/services/cloud9.html#Cloud9.Client.delete_environment_membership)   | 
|  适用于 Ruby 的 AWS SDK  |   [delete\$1environment\$1membership](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/Cloud9/Client.html#delete_environment_membership-instance_method)   | 
|  AWS Tools for Windows PowerShell  |   [Remove-C9EnvironmentMembership](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-C9EnvironmentMembership.html)   | 
|  AWS Cloud9 API  |   [DeleteEnvironmentMembership](https://docs.aws.amazon.com/cloud9/latest/APIReference/API_DeleteEnvironmentMembership.html)   | 

# 删除另一个环境成员
<a name="share-environment-delete-member"></a>

此步骤说明如何从环境中删除您的用户以外的任何成员。

**注意**  
要从环境中删除您的用户以外的任何成员，您必须使用环境拥有者的凭证登录到 AWS Cloud9 。  
删除成员并不会从 IAM 中删除该用户。

1. 打开包含要删除的成员的环境（如果尚未打开该环境）。有关更多信息，请参阅[打开 AWS Cloud9中的环境](open-environment.md)。

1. 如果未显示成员列表，请在 **Collaborate（协作）**窗口中展开 **Environment Members（环境成员）**。

1. 请执行以下操作之一：
   + 在要删除的成员名称旁边，选择垃圾桶图标。
   + 打开要删除的成员名称的上下文（右键单击）菜单，然后选择 **Revoke Access**（撤消访问权限）。

1. 在出现提示时，选择 **Remove Member (删除成员)**。

要使用代码从环境中移除成员，请按如下方式调用 AWS Cloud9 删除环境成员资格操作。


****  

|  |  | 
| --- |--- |
|  AWS CLI  |   [delete-environment-membership](https://docs.aws.amazon.com/cli/latest/reference/cloud9/delete-environment-membership.html)   | 
|  适用于 C\$1\$1 的 AWS SDK  |   [DeleteEnvironmentMembershipRequest](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_delete_environment_membership_request.html), [DeleteEnvironmentMembershipResult](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_delete_environment_membership_result.html)   | 
|  适用于 Go 的 AWS SDK  |   [DeleteEnvironmentMembership](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.DeleteEnvironmentMembership), [DeleteEnvironmentMembershipRequest](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.DeleteEnvironmentMembershipRequest), [DeleteEnvironmentMembershipWithContext](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.DeleteEnvironmentMembershipWithContext)   | 
|  适用于 Java 的 AWS SDK  |   [DeleteEnvironmentMembershipRequest](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloud9/model/DeleteEnvironmentMembershipRequest.html), [DeleteEnvironmentMembershipResult](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloud9/model/DeleteEnvironmentMembershipResult.html)   | 
|  适用于 JavaScript 的 AWS SDK  |   [deleteEnvironmentMembership](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Cloud9.html#deleteEnvironmentMembership-property)   | 
|  适用于 .NET 的 AWS SDK  |   [DeleteEnvironmentMembershipRequest](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TDeleteEnvironmentMembershipRequest.html), [DeleteEnvironmentMembershipResponse](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TDeleteEnvironmentMembershipResponse.html)   | 
|  适用于 PHP 的 AWS SDK  |   [deleteEnvironmentMembership](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloud9-2017-09-23.html#deleteenvironmentmembership)   | 
|  AWS SDK for Python (Boto)  |   [delete\$1environment\$1membership](https://boto3.readthedocs.io/en/latest/reference/services/cloud9.html#Cloud9.Client.delete_environment_membership)   | 
|  适用于 Ruby 的 AWS SDK  |   [delete\$1environment\$1membership](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/Cloud9/Client.html#delete_environment_membership-instance_method)   | 
|  AWS Tools for Windows PowerShell  |   [Remove-C9EnvironmentMembership](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-C9EnvironmentMembership.html)   | 
|  AWS Cloud9 API  |   [DeleteEnvironmentMembership](https://docs.aws.amazon.com/cloud9/latest/APIReference/API_DeleteEnvironmentMembership.html)   | 

# 环境共享最佳实践
<a name="share-environment-best-practices"></a>

在共享环境时，我们建议使用以下做法：
+ 仅邀请您信任的 read/write 成员加入您的环境。
+ 对于 EC2 环境， read/write 成员可以使用环境所有者的 AWS 访问凭证从环境调用 AWS 服务。而不使用他们自己的证书。为防止这种情况，环境所有者可以禁用环境的 AWS 托管临时证书。不过，这也会禁止环境拥有者进行调用。有关更多信息，请参阅 [AWS 托管式临时凭证](security-iam.md#auth-and-access-control-temporary-managed-credentials)。
+ 开启 AWS CloudTrail 以跟踪环境中的活动。有关更多信息，请参阅 [AWS CloudTrail 《用户指南》](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)。
+ 不要使用 AWS 账户 root 用户来创建和共享环境。请改用该账户中的 IAM 用户。有关更多信息，请参阅《IAM 用户指南》**中的[仅限首次访问：您的根用户凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_identity-management.html#intro-identity-first-time-access)以及 [IAM 用户](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_identity-management.html#intro-identity-users)。

# 从 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 实例，因此您需要手动将其删除。可以通过在**卷详细信息**页面上选择**删除**来执行此操作。

# 调整环境使用的 Amazon EBS 卷大小
<a name="move-environment-resize"></a>

此步骤说明如何调整 Amazon EBS 卷大小。

1. 针对您要调整其大小的 Amazon EBS 卷，打开与 Amazon EC2 实例关联的环境。

1. 在环境的 AWS Cloud9 IDE 中，创建一个包含以下内容的文件，然后使用扩展名保存该文件`.sh`（例如，`resize.sh`）。
**备注**  
此脚本适用于连接到运行的 EC2 实例、亚马逊 Linux 2 AL2023、Amazon Linux 或Ubuntu服务器且配置为使用的 IMDSv2亚马逊 EBS 卷。  
该脚本还会调整在Nitro基于实例上作为 NVMe 块设备公开的 Amazon EBS 卷的大小。有关基于 Nitro 系统的实例列表，请参阅《Amazon EC2 用户指南》**中的[基于 Nitro 的实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances)。

   ```
   #!/bin/bash
   
   # Specify the desired volume size in GiB as a command line argument. If not specified, default to 20 GiB.
   SIZE=${1:-20}
   
   # Get the ID of the environment host Amazon EC2 instance.
   TOKEN=$(curl -s -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 60")
   INSTANCEID=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/instance-id 2> /dev/null)
   REGION=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/placement/region 2> /dev/null)
   
   # Get the ID of the Amazon EBS volume associated with the instance.
   VOLUMEID=$(aws ec2 describe-instances \
     --instance-id $INSTANCEID \
     --query "Reservations[0].Instances[0].BlockDeviceMappings[0].Ebs.VolumeId" \
     --output text \
     --region $REGION)
   
   # Resize the EBS volume.
   aws ec2 modify-volume --volume-id $VOLUMEID --size $SIZE
   
   # Wait for the resize to finish.
   while [ \
     "$(aws ec2 describe-volumes-modifications \
       --volume-id $VOLUMEID \
       --filters Name=modification-state,Values="optimizing","completed" \
       --query "length(VolumesModifications)"\
       --output text)" != "1" ]; do
   sleep 1
   done
   
   # Check if we're on an NVMe filesystem
   if [[ -e "/dev/xvda" && $(readlink -f /dev/xvda) = "/dev/xvda" ]]
   then
   # Rewrite the partition table so that the partition takes up all the space that it can.
     sudo growpart /dev/xvda 1
   # Expand the size of the file system.
   # Check if we're on AL2 or AL2023
     STR=$(cat /etc/os-release)
     SUBAL2="VERSION_ID=\"2\""
     SUBAL2023="VERSION_ID=\"2023\""
     if [[ "$STR" == *"$SUBAL2"* || "$STR" == *"$SUBAL2023"* ]]
     then
       sudo xfs_growfs -d /
     else
       sudo resize2fs /dev/xvda1
     fi
   
   else
   # Rewrite the partition table so that the partition takes up all the space that it can.
     sudo growpart /dev/nvme0n1 1
   
   # Expand the size of the file system.
   # Check if we're on AL2 or AL2023
     STR=$(cat /etc/os-release)
     SUBAL2="VERSION_ID=\"2\""
     SUBAL2023="VERSION_ID=\"2023\""
     if [[ "$STR" == *"$SUBAL2"* || "$STR" == *"$SUBAL2023"* ]]
     then
       sudo xfs_growfs -d /
     else
       sudo resize2fs /dev/nvme0n1p1
     fi
   fi
   ```

1. 从 IDE 中的终端会话中，切换到包含 `resize.sh` 文件的目录。然后，运行以下任一命令，同时将 `20` 替换为要将 Amazon EBS 卷调整至的期望大小（以 GiB 为单位）：
   + 

     ```
     bash resize.sh 20
     ```
   + 

     ```
     chmod +x resize.sh
     ./resize.sh 20
     ```

# 加密使用的 Amazon EBS 卷 AWS Cloud9
<a name="encrypting-volumes"></a>

本主题介绍如何为 AWS Cloud9 开发环境使用的 EC2 实例加密 Amazon EBS 卷。

Amazon EBS 加密可对以下数据进行加密：
+ 卷中的静态数据
+ 在卷和实例之间移动的所有数据
+ 从卷创建的所有快照
+ 从这些快照创建的所有卷

对于 AWS Cloud9 EC2 开发环境使用的 Amazon EBS 卷，您有两个加密选项：
+ **原定设置加密** – 您可以配置 AWS 账户 对您创建的新 EBS 卷和快照副本进行加密。原定设置情况下，在 AWS 区域级别启用加密。因此，您不能为该区域中的单个卷或快照启用加密。此外，Amazon EBS 对您启动实例时创建的卷进行加密。因此，在创建 EC2 环境之前，必须启用此设置。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[默认加密](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-encryption.html#encryption-by-default)。
+ **加密 EC2 环境使用的现有 Amazon EBS 卷** – 您可以加密已为 EC2 实例创建的指定 Amazon EBS 卷。此选项涉及使用 AWS Key Management Service (AWS KMS) 来管理对加密卷的访问权限。有关相关步骤，请参阅 [加密使用以下内容的现有 Amazon EBS 卷 AWS Cloud9](#encrypting-existing-volume)。

**重要**  
如果您的 AWS Cloud9 IDE 使用默认加密的 Amazon EBS 卷，则 AWS Identity and Access Management 服务相关角色 AWS Cloud9 需要访问这些 EBS 卷 AWS KMS key 的。如果未提供访问权限， AWS Cloud9 IDE 可能无法启动，调试可能会很困难。  
要提供访问权限，请将服务相关角色添加到 Amazon EBS 卷使用的 KMS 密钥中。 AWS Cloud9`AWSServiceRoleForAWSCloud9`有关此任务的更多信息，请参阅*AWS 规范指导*模式中的[创建使用 Amazon EBS 卷和默认加密的 AWS Cloud9 IDE](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/create-an-aws-cloud9-ide-that-uses-amazon-ebs-volumes-with-default-encryption.html)。

## 加密使用以下内容的现有 Amazon EBS 卷 AWS Cloud9
<a name="encrypting-existing-volume"></a>

加密现有 Amazon EBS 卷 AWS KMS 需要使用创建 KMS 密钥。创建要替换的卷的快照后，您可以使用 KMS 密钥对快照的副本进行加密。

接下来，使用该快照创建加密卷。然后，您可以通过将未加密卷从 EC2 实例中分离并附加已加密卷来替换未加密卷。

最后，您必须更新客户托管式密钥的密钥策略，以启用对 AWS Cloud9 服务角色的访问权限。

**注意**  
以下过程重点介绍使用客户托管式密钥对卷进行加密。您也可以在您的账户 AWS 服务 中 AWS 托管式密钥 使用 for a。Amazon EBS 的别名为 `aws/ebs`。如果为加密选择此默认选项，请在创建客户托管式密钥时跳过步骤 1。此外，跳过在其中更新密钥策略的步骤 8。这是因为您无法更改的密钥策略 AWS 托管式密钥。<a name="creating-encrypted-volume"></a>

**对现有 Amazon EBS 卷进行加密**

1. 在 AWS KMS 控制台中，创建对称 KMS 密钥。有关更多信息，请参阅 *AWS Key Management Service 开发人员指南*中的[创建对称 KMS 密钥](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)。

1. 在 Amazon EC2 控制台中，停止由环境使用的 Amazon EBS 支持的实例。您可以[使用控制台或命令行停止实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html)。

1. 在 Amazon EC2 控制台的导航窗格中，选择 **Snapshots**（快照）来[为您想要加密的现有卷创建快照](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-creating-snapshot.html#ebs-create-snapshot)。

1. 在 Amazon EC2 控制台的导航窗格中，选择 **Snapshots（快照）**来[复制快照](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-copy-snapshot.html)。在 **Copy snapshot（复制快照）**对话框中，执行以下操作以启用加密：
   + 选择 **Encrypt this snapshot（加密此快照）**。
   + 在 **Master Key**（主密钥）中，选择您之前创建的 KMS 密钥。（如果您使用的是 AWS 托管式密钥，请保留**（默认）aws/ebs** 设置。）

1. [从已加密快照创建新卷](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-creating-volume.html#ebs-create-volume-from-snapshot)。
**注意**  
从加密快照创建的新 Amazon EBS 卷会自动加密。

1. [将旧的 Amazon EBS 卷](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-detaching-volume.html)与 Amazon EC2 实例分离。

1. [将新的加密卷](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-attaching-volume.html)附到 Amazon EC2 实例上。

1. [使用 AWS 管理控制台 默认视图、策略视图或 AWS KMS API 更新 KMS 密钥的密钥 AWS 管理控制台 策略](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html#key-policy-modifying-how-to)。添加以下密钥策略声明以允许 AWS Cloud9 服务访问 KMS 密钥。`AWSServiceRoleForAWSCloud9`
**注意**  
如果您使用的是 AWS 托管式密钥，请跳过此步骤。

   ```
   {
       "Sid": "Allow use of the key",
       "Effect": "Allow",
       "Principal": {
           "AWS": "arn:{Partition}:iam::{AccountId}:role/aws-service-role/cloud9.amazonaws.com/AWSServiceRoleForAWSCloud9"
       },
       "Action": [
           "kms:Encrypt",
           "kms:Decrypt",
           "kms:ReEncrypt*",
           "kms:GenerateDataKey*",
           "kms:DescribeKey"
       ],
       "Resource": "*"
      },
      {
       "Sid": "Allow attachment of persistent resources",
       "Effect": "Allow",
       "Principal": {
           "AWS": "arn:{Partition}:iam::{AccountId}:role/aws-service-role/cloud9.amazonaws.com/AWSServiceRoleForAWSCloud9"
       },
       "Action": [
           "kms:CreateGrant",
           "kms:ListGrants",
           "kms:RevokeGrant"
       ],
       "Resource": "*",
       "Condition": {
           "Bool": {
               "kms:GrantIsForAWSResource": "true"
           }
       }
   }
   ```

1. 重新启动 Amazon EC2 实例。有关重新启动 Amazon EC2 实例的更多信息，请参阅[停止和启动您的实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html)。

# 删除中的环境 AWS Cloud9
<a name="delete-environment"></a>

要防止因您 AWS 账户 不再使用的 AWS Cloud9 开发环境而持续向您收取任何费用，请删除该环境。
+  [使用控制台删除环境](#delete-environment-console) 
+  [使用代码删除环境](#delete-environment-code) 

## 使用控制台删除环境
<a name="delete-environment-console"></a>

**警告**  
删除环境时， AWS Cloud9 会永久删除该环境。这包括永久删除所有相关设置、用户数据和未提交的代码。删除的环境无法恢复。

1. 登录 AWS Cloud9 控制台：
   + 如果您是唯一使用您的用户， AWS 账户 或者您是 IAM 用户 AWS 账户，请转到[https://console.aws.amazon.com/cloud9/](https://console.aws.amazon.com/cloud9/)。
   + 如果您的组织使用 AWS IAM Identity Center，请向 AWS 账户 管理员询问登录说明。

1. 在顶部导航栏中，选择环境所在 AWS 区域 的位置。  
![\[AWS 区域 AWS Cloud9 控制台中的选择器\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/consolas_region_new_UX.png)

1. 在环境列表中，对于要删除的环境，请执行以下操作之一。
   + 选择环境的选项卡标题。然后，在下一页选择 **Delete**（删除）。  
![\[从环境详细信息页面中删除环境\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/console-delete-env.png)
   + 选择环境的卡，然后选择 **Delete（删除）**按钮。  
![\[从环境列表中删除环境\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/console-delete-env-card.png)

1. 在 **Delete（删除）** 对话框中，键入 `Delete`，然后选择 **Delete（删除）**。
   + **EC2 环境**

     AWS Cloud9 还会终止连接到该环境的 Amazon EC2 实例。
**注意**  
如果账户删除失败，控制台网页的顶部将显示横幅。此外，环境的卡片（如果存在）表示环境删除失败。
   + **SSH 环境**

     如果环境已连接到 Amazon EC2 实例，则 AWS Cloud9 不会终止该实例。如果您稍后不终止该实例，可能会一直对您的 AWS 账户 收取与该实例相关的 Amazon EC2 费用。

1. 如果环境是 SSH 环境，则在云计算实例或连接到该环境的您自己的服务器上 AWS Cloud9 留下隐藏的子目录。如果您要删除它，您现在可以安全地删除该子目录。该子目录的名称为 `.c9`。此子目录位于在创建环境时指定的 **Environment path**（环境路径）目录中。

   如果控制台中未显示您的环境，请尝试执行以下一个或多个操作来显示它。
   + 在 **Environments**（环境）页面的下拉菜单栏中，选择以下一项或多项。
     + 选择**我的环境**以显示您的 AWS 实体在选定 AWS 区域 和中拥有的所有环境 AWS 账户。
     + 选择 “**与我共享**” 以显示您的 AWS 实体在所选 AWS 区域 环境中受邀进入的所有环境 AWS 账户。
     + 选择 “**所有账户环境**” 以显示所选环境中的所有环境 AWS 区域 以及 AWS 账户 您的 AWS 实体有权显示的所有环境。
   + 如果认为您是某个环境的成员，但在 **Shared with you**（已与您共享）列表中未显示该环境，请与该环境的拥有者联系。
   + 在顶部导航栏中，选择其他导航栏 AWS 区域。

## 使用代码删除环境
<a name="delete-environment-code"></a>

**警告**  
删除环境时， AWS Cloud9 会永久删除该环境。这包括永久删除所有相关设置、用户数据和未提交的代码。删除的环境无法恢复。

要使用代码删除中的环境 AWS Cloud9，请按如下方式调用 AWS Cloud9 删除环境操作。


****  

|  |  | 
| --- |--- |
|  AWS CLI  |   [delete-environment](https://docs.aws.amazon.com/cli/latest/reference/cloud9/delete-environment.html)   | 
|  适用于 C\$1\$1 的 AWS SDK  |   [DeleteEnvironmentRequest](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_delete_environment_request.html), [DeleteEnvironmentResult](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_delete_environment_result.html)   | 
|  适用于 Go 的 AWS SDK  |   [DeleteEnvironment](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.DeleteEnvironment), [DeleteEnvironmentRequest](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.DeleteEnvironmentRequest), [DeleteEnvironmentWithContext](https://docs.aws.amazon.com/sdk-for-go/api/service/cloud9/#Cloud9.DeleteEnvironmentWithContext)   | 
|  适用于 Java 的 AWS SDK  |   [DeleteEnvironmentRequest](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloud9/model/DeleteEnvironmentRequest.html), [DeleteEnvironmentResult](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloud9/model/DeleteEnvironmentResult.html)   | 
|  适用于 JavaScript 的 AWS SDK  |   [deleteEnvironment](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Cloud9.html#deleteEnvironment-property)   | 
|  适用于 .NET 的 AWS SDK  |   [DeleteEnvironmentRequest](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TDeleteEnvironmentRequest.html), [DeleteEnvironmentResponse](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TDeleteEnvironmentResponse.html)   | 
|  适用于 PHP 的 AWS SDK  |   [deleteEnvironment](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloud9-2017-09-23.html#deleteenvironment)   | 
|  AWS SDK for Python (Boto)  |   [delete\$1environment](https://boto3.readthedocs.io/en/latest/reference/services/cloud9.html#Cloud9.Client.delete_environment)   | 
|  适用于 Ruby 的 AWS SDK  |   [delete\$1environment](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/Cloud9/Client.html#delete_environment-instance_method)   | 
|  AWS Tools for Windows PowerShell  |   [Remove-C9Environment](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-C9Environment.html)   | 
|  AWS Cloud9 API  |   [DeleteEnvironment](https://docs.aws.amazon.com/cloud9/latest/APIReference/API_DeleteEnvironment.html)   | 