

 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="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`缀。