

 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 environment。 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 AWS Cloud9 中使用Amazon Lightsail執行個體](lightsail-instances.md)   | 
|  您 (使用 [AWS CodePipeline](https://aws.amazon.com/codepipeline))  |  AWS Cloud9 或  |  建立 [EC2](create-environment-main.md) 或 [SSH](create-environment-ssh.md) 環境，以及 [在 IDE AWS Cloud9 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)或使用[程式碼](#create-environment-code)建立 an AWS Cloud9 EC2 開發環境。

**注意**  
完成此程序可能會向您的 收取費用 AWS 帳戶。收費的項目可能包括 Amazon EC2。如需詳細資訊，請參閱 [Amazon EC2 定價](https://aws.amazon.com/ec2/pricing/)。

**警告**  
與 AWS Cloud9 和 AWS Control Tower 主動控制 [http：//CT.EC2.PR](https://docs.aws.amazon.com/controltower/latest/userguide/ec2-rules.html#ct-ec2-pr-8-description).healthnet：//www.healthnet：//www.healthnet：//healthnet：//；//；；；；如果啟用此控制項，您就無法在 中建立 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/)：//www.microsoft.com。
   + 如果您的組織使用 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_tw/cloud9/latest/user-guide/images/consolas_region_new_UX.png)

1. 在其中一個顯示的位置選擇放大的 **Create environment** (建立環境) 按鈕。

   如果您還沒有 AWS Cloud9 環境，按鈕會顯示在歡迎頁面上。  
![\[AWS Cloud9 主控台中的歡迎頁面\]](http://docs.aws.amazon.com/zh_tw/cloud9/latest/user-guide/images/create_welcome_env_new_UX.png)

   如果您已有 AWS Cloud9 環境，按鈕會顯示如下。  
![\[在 AWS Cloud9 主控台中建立環境按鈕\]](http://docs.aws.amazon.com/zh_tw/cloud9/latest/user-guide/images/console_create_env_new_UX.png)

1. 在 **Create environment** (建立環境) 頁面的 **Name** (名稱) 上，輸入環境的名稱。

1. 若要為您的環境新增說明，請輸入至 **Description** (說明) 欄位。

1. 在 **Environment type** (環境類型) 中，選擇 **New EC2 instance** (新的 EC2 執行個體)，建立 Amazon EC2 環境：
   + **EC2 instance** (EC2 執行個體)—啟動 AWS Cloud9 可以直接透過 SSH 進行連線的新 Amazon EC2 執行個體。您可以使用 Systems Manager 與新的 Amazon EC2 執行個體互動，如需詳細資訊，請參閱 [使用 存取無輸入 EC2 執行個體 AWS Systems Manager](ec2-ssm.md)。
   + **Existing compute** (現有運算) – 啟動需要 SSH 登入詳細資訊的現有 Amazon EC2 執行個體，而 Amazon EC2 執行個體必須具有輸入安全群組規則。
     + 如果您選取 **Existing compute** (現有運算) 選項，則會自動建立服務角色。您也可以在設定畫面底部的備註中檢視服務角色名稱。
**注意**  
使用現有運算的 Amazon EC2 執行個體建立 AWS Cloud9 的環境無法使用自動關機。
**警告**  
為您的環境建立 Amazon EC2 執行個體可能會對您的 AWS 帳戶 Amazon EC2 產生費用。使用 Systems Manager 管理 EC2 執行個體的連線不需要額外費用。

1. 對於 **Instance type** (執行個體類型)，請選擇具有您認為想要執行之任務類型所需 RAM 和 vCPU 數量的執行個體類型。
**警告**  
選擇具有更多 RAM 和 vCPUs執行個體類型可能會對 AWS 帳戶 Amazon EC2 的 產生額外費用。如需適合您工作負載的執行個體類型資訊，請參閱 [Amazon EC2 執行個體類型](https://aws.amazon.com/ec2/instance-types/)頁面。

1. 針對**平台**，選擇您想要的 Amazon EC2 執行個體類型：**Amazon Linux 2023**、**Amazon Linux 2** 或 **Ubuntu 22.04 LTS**. 會 AWS Cloud9 建立執行個體，然後將環境連接至執行個體。
**重要**  
建議您為 EC2 環境選擇 **Amazon 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)) – 此方法使用 SSH 存取環境，且需開啟傳入連接埠。

1. <a name="create-environment-vpc-step"></a>選擇 **VPC 設定**，以顯示您環境的 Amazon Virtual Private Cloud 和子網路。 AWS Cloud9 會使用 Amazon Virtual Private Cloud (Amazon VPC) 與新建立的 Amazon EC2 執行個體通訊。在本教學課程中，我們建議您不要變更預先選取的預設設定。使用預設設定時， 會 AWS Cloud9 嘗試使用預設 VPC 搭配其與新環境位於相同 AWS 帳戶 和 區域中的單一子網路。請根據 Amazon VPC 的設定方式，遵循以下其中一組說明操作。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloud9/latest/user-guide/create-environment-main.html)
**重要**  
若您選取 **Existing compute** (現有運算) 做為環境類型，您可以將執行個體啟動至公有或私有子網路中。  
**公有子網路**：將網際網路閘道連接至子網路，以便允許執行個體 SSM Agent 與 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_tw/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_tw/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/)。如需如何從 IMDSv1 轉換為 IMDSv2 的資訊，請參閱《*Amazon EC2 Linux 執行個體使用者指南》中的*[轉換為使用執行個體中繼資料服務第 2 版](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-transition-to-version-2.html)。 IMDSv1
**注意**  
如果您的環境使用代理存取網際網路，您必須提供代理詳細資訊給 ， 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  |   [CreateEnvironmentEC2Request](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_cloud9_1_1_model_1_1_create_environment_e_c2_request.html)、[CreateEnvironmentEC2Result](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)、[CreateEnvironmentEC2Request](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  |   CreateEnvironmentEC2Request、CreateEnvironmentEC2Result   | 
|  適用於 JavaScript 的 AWS SDK  |   [createEnvironmentEC2](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Cloud9.html#createEnvironmentEC2-property)   | 
|  適用於 .NET 的 AWS SDK  |   [CreateEnvironmentEC2Request](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TCreateEnvironmentEC2Request.html)、[CreateEnvironmentEC2Response](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Cloud9/TCreateEnvironmentEC2Response.html)   | 
|  適用於 PHP 的 AWS SDK  |   [createEnvironmentEC2](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloud9-2017-09-23.html#createenvironmentec2)   | 
|  適用於 Python (Boto) 的 AWS SDK  |   [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)   | 

**注意**  
如果您的環境使用代理存取網際網路，您必須提供代理詳細資訊給 ， 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 主控台並建立環境。
+ 識別您要 AWS Cloud9 連線到環境的現有雲端運算執行個體 （例如，您 中的 Amazon EC2 執行個體 AWS 帳戶) 或您自己的伺服器。
+ 確保現有的執行個體或您自己的伺服器符合所有 [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 雲端 運算執行個體，請參閱下列一或多個資源：  
對於 Amazon EC2，請參閱《*Amazon EC2 使用者指南*》中的[連線至您的 Linux 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html)。
針對 Amazon Lightsail，請參閱 *Amazon Lightsail 文件*中的[連線至 Linux/Unix 型Lightsail執行個體](https://lightsail.aws.amazon.com/ls/docs/how-to/article/lightsail-how-to-connect-to-your-instance-virtual-private-server)。
如需 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。SSH 已安裝在 macOS 和 Linux 作業系統。若要在 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_tw/cloud9/latest/user-guide/images/consolas_region_new_UX.png)

1. 如果這是您第一次建立開發環境，畫面會顯示歡迎頁面。在**新增 AWS Cloud9 環境**面板中，選擇**建立環境**。

   如果您先前已建立開發環境，也可以展開畫面左側的窗格。選擇 **Your environments** (您的環境)，然後選擇 **Create environment** (建立環境)。

   在 **welcome** (歡迎) 頁面中：  
![\[如顯示歡迎頁面，請選擇建立環境按鈕\]](http://docs.aws.amazon.com/zh_tw/cloud9/latest/user-guide/images/create_welcome_env_new_UX.png)

   或者在 **Your environments** (您的環境) 頁面中：  
![\[如未顯示歡迎頁面，請選擇建立環境按鈕\]](http://docs.aws.amazon.com/zh_tw/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 登入詳細資訊的現有 Amazon EC2 執行個體，以及要開啟的連接埠 22。透過 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 執行個體可能會對您的 AWS 帳戶 Amazon 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 使用者指南](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_tw/cloud9/latest/user-guide/images/cloud9-ide-open.png)

   若無法建立帳戶， AWS Cloud9 主控台上方會出現紅色閃爍列。由於 Web 瀏覽器、 AWS 存取許可、執行個體或相關聯網路的問題，您的帳戶可能無法建立 。您可以在 [AWS Cloud9 疑難排解區段](troubleshooting.md#troubleshooting-env-loading)找到可行修正方法，解決造成帳戶無法使用的問題。

**注意**  
如果您的環境使用代理存取網際網路，您必須提供代理詳細資訊給 ， 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 Session 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 連線到其執行個體。如果您使用 AWS Systems Manager Session Manager，您可以透過 SSM 存取 Amazon EC2 執行個體，而無需開啟傳入連接埠 （無傳入）。此方法僅適用於新的 Amazon EC2 執行個體。如需詳細資訊，請參閱[為 EC2 環境使用 Systems Manager 的好處](#ssm-benefits)。
+ **[Existing compute](create-environment-main.md#create-environment-console)** (現有運算) – 透過此設定，可存取需要 SSH 登入詳細資訊的現有 Amazon EC2 執行個體，而 Amazon EC2 執行個體必須具有輸入安全群組規則。如果您選取此選項，則會自動建立服務角色。您也可以在設定畫面底部的備註中檢視服務角色名稱。

如果使用 [AWS CLI](tutorials-basic.md#tutorial-create-environment) 建立環境，您可以設定無輸入 EC2 執行個體，方法是在呼叫 `create-environment-ec2` 命令時設定 `--connection-type CONNECT_SSM` 選項。如需詳細了解如何建立必要的服務角色和執行個體描述檔，請參閱 [使用 管理 Systems Manager 的執行個體描述檔 AWS CLI](#aws-cli-instance-profiles)。

完成建立使用無輸入 EC2 執行個體的環境之後，請確認下列項目：
+ Systems Manager Session Manager 具備代表您對 EC2 執行個體執行動作的許可。如需詳細資訊，請參閱[管理 Systems Manager 許可](#service-role-ssm)。
+ AWS Cloud9 使用者可以存取 Session Manager 管理的執行個體。如需詳細資訊，請參閱[讓使用者存取由 Session Manager 管理的執行個體](#access-ec2-session)。

## 為 EC2 環境使用 Systems Manager 的好處
<a name="ssm-benefits"></a>

允許 [Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html) 處理 AWS Cloud9 與其 EC2 執行個體之間的安全連線，可提供兩個主要優點：
+ 不需要為執行個體開啟傳入連接埠
+ 提供在公有或私有子網路中啟動執行個體的選項

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

 AWS Cloud9 與其 EC2 執行個體之間的安全連線由 [Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html) 處理。Session Manager 是一種全受管 Systems Manager 功能，可讓 AWS Cloud9 連接到其 EC2 執行個體，而不需要開啟傳入連接埠。

**重要**  
目前只有在建立新的 EC2 環境時，才能使用 Systems Manager 進行無輸入連線的選項。

 Session Manager 工作階段啟動後，就會與目標執行個體建立連線。現在連線完成後，環境就可以透過 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_tw/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 環境，並使用 Amazon EC2 Systems Manager 連接 `AWSCloud9Administrator`或 `AWSCloud9User`政策，您還必須連接具有特定 IAM 許可的自訂政策，請參閱 [建立 SSM 環境的自訂 IAM 政策](security-iam.md#custom-policy-ssm-environment)。這是因為 `AWSCloud9Administrator`和 `AWSCloud9User`政策的許可問題。

為了獲得額外的安全性保護， AWS Cloud9 服務連結角色 在其`AWSCloud9ServiceRolePolicy`政策中`AWSServiceRoleforAWSCloud9`具有`PassRole`限制。當您*傳遞* IAM 角色給某個服務時，該角色會允許該服務接受角色，並代表您執行動作。在此情況下， `PassRole`許可可確保 只能將`AWSCloud9SSMAccessRole`角色 （及其許可） AWS Cloud9 傳遞至 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` 時，需在 `CONNECT_SSM` 設定 `--connection-type` 選項。

如果您使用此選項，`AWSCloud9SSMAccessRole` 服務角色和 `AWSCloud9SSMInstanceProfile` 不會自動建立。因此，若要建立必要的服務設定檔和執行個體設定檔，請執行下列其中一項操作：
+ 在 `AWSCloud9SSMAccessRole` 服務角色和 `AWSCloud9SSMInstanceProfile` 自動建立之後使用主控台建立 EC2 環境。環境建立後，服務角色和執行個體描述檔就可以供任何其他透過 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
  ```

## 讓使用者存取由 Session Manager 管理的執行個體
<a name="access-ec2-session"></a>

若要開啟透過 Systems Manager 連線至 EC2 執行個體 AWS Cloud9 的環境，使用者必須具有 API 操作 的許可`StartSession`。此操作會啟動與受管 EC2 執行個體的連線，執行 Session Manager 工作階段。您可以使用 AWS Cloud9 特定 受管政策 （建議） 或編輯 IAM 政策並新增必要的許可，為使用者提供存取權。


****  

| Method | Description | 
| --- | --- | 
|  使用 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_tw/cloud9/latest/user-guide/ec2-ssm.html)  如果您要建立 AWS Cloud9 環境，並使用 Amazon EC2 Systems Manager 連接 `AWSCloud9Administrator`或 `AWSCloud9User`政策，您還必須連接具有特定 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)所提供的說明。 ** 編輯政策時，請新增 [policy statement](#policy-statement) (請參閱以下內容) 來允許 `ssm:startSession` API 操作執行。  | 

您可以使用下列許可來執行 `StartSession` API 操作。`ssm:resourceTag` 條件索引鍵指定可在執行個體為 an AWS Cloud9 EC2 開發環境 (`Resource: arn:aws:ec2:*:*:instance/*`) 的條件上，為任何執行個體 () 啟動 Session Manager 工作階段`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 執行個體的 Session Manager 工作階段。如需詳細資訊，請參閱[將 Systems Manager 許可新增至 IAM 政策](#updating-IAM-policy)。

### 使用 CloudFormation 範本建立服務角色和執行個體描述檔
<a name="creating-cfn-instance-profile"></a>

您需要建立服務角色 `AWSCloud9SSMAccessRole` 和執行個體描述檔 `AWSCloud9SSMInstanceProfile`，讓 Systems Manager 能夠管理支援開發環境的 EC2 執行個體。

如果您先前透過`AWSCloud9SSMInstanceProfile`建立無輸入 EC2 環境[with the console](#using-the-console)或[執行中的 AWS CLI 命令](#aws-cli-instance-profiles)建立 `AWSCloud9SSMAccessRole` 和 ，則服務角色和執行個體描述檔已可供使用。

**注意**  
假設您嘗試為無輸入 EC2 環境建立 CloudFormation 堆疊，但未先建立所需的服務角色和執行個體描述檔。然後，不會建立堆疊，並顯示下列錯誤訊息：  
Instance profile AWSCloud9SSMInstanceProfile does not exist in account. (帳戶中不存在執行個體設定檔 AWSCloud9SSMInstanceProfile。)

第一次使用 建立無輸入 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 實體具有啟動 Session Manager 工作階段的許可。工作階段是指使用 Session Manager 建立的 EC2 執行個體連線。

**注意**  
如果您在為無輸入 EC2 環境建立堆疊之前，並未新增啟動 Session Manager 工作階段的許可，系統就會傳回 `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 維持在最新狀態所需的相依性。

為 Amazon S3 設定 VPC 端點也涉及自訂存取政策。您想要存取政策，只在受信任的 S3 儲存貯體包含要下載的相依性時，才允許存取該儲存貯體。

**注意**  
您可以使用 AWS 管理主控台 AWS CLI或 Amazon VPC API 來建立和設定 VPC 端點。下列程序說明如何使用主控台界面來建立 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** (傳回) 以列出目前的 AWS 區域中可用的 Amazon S3 的端點。

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` 元素，以您的 AWS 區域中可用的儲存貯體實際的名稱取代 `{bucket_name}`。例如，如果您 AWS Cloud9 在歐洲 （愛爾蘭） 區域使用 ，請指定下列項目：`"Resource": "arn:aws:s3:::static-eu-west-1-prod-static-hld3vzaf7c4h/content/dependencies/`。

   下表列出 可用的 儲存貯 AWS 區域 體 AWS Cloud9 名稱。  
**AWS Cloud9 區域中的 Amazon S3 儲存貯體**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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 存取) 選項在子網路中啟動執行個體，該執行個體的安全群組不含允許傳入網路流量的傳入規則。但是，安全群組卻有允許從執行個體傳出流量的傳出規則。這是下載讓 IDE AWS Cloud9 保持最新狀態所需的套件和程式庫所必需。

為了防止執行個體的傳出和傳入流量，請為 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 和 Systems Manager APIs。若要將 VPC 端點設為使用 Systems Manager，請遵循此[知識中心資源](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-systems-manager-vpc-endpoints/)中的指示操作。

**警告**  
假設您可以設定一個不允許傳入或傳出網路流量的安全群組。然後，支援 IDE AWS Cloud9 的 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/)：//https：//www.microsoft.com。
   + 如果您的組織使用 AWS IAM Identity Center，請向 AWS 帳戶 管理員要求登入指示。
**重要**  
如果您[登出 AWS 帳戶](https://aws.amazon.com/premiumsupport/knowledge-center/sign-out-account/)，則之後仍可存取 AWS Cloud9 IDE 最多 5 分鐘。當所需的許可到期時，系統會拒絕存取。

1. 在頂端導覽列中，選擇 AWS 區域 環境所在的 。  
![\[AWS 區域 AWS Cloud9 主控台中的選取器\]](http://docs.aws.amazon.com/zh_tw/cloud9/latest/user-guide/images/consolas_region_new_UX.png)

1. 在環境清單中，針對您希望開啟的環境執行下列其中一項動作。
   + 在卡片之內，選擇 **Open in Cloud9** (在 Cloud9 中開啟) 連結。
   + 選取卡片，然後選擇 **Open in Cloud9** (在 Cloud9 中開啟) 按鈕。  
![\[使用在 Cloud9 中開啟按鈕選擇環境\]](http://docs.aws.amazon.com/zh_tw/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 服務 。您可以將 AWS SDKs用於程式設計語言，例如 JavaScript、Python、Ruby、PHP、 Go和 C\$1\$1。如需詳細資訊，請參閱 [AWS CLI 和 aws-shell 範例](sample-aws-cli.md)、[AWS Command Line Interface 使用者指南](https://docs.aws.amazon.com/cli/latest/userguide/)及 [AWS 開發套件](https://aws.amazon.com/developer/tools/#sdk)。

每次 AWS CLI、 AWS CloudShell或您的程式碼呼叫 AWS 服務、 AWS CloudShell、 AWS CLI或您的程式碼時，都必須提供一組 AWS 存取登入資料與呼叫。這些登入資料將判斷呼叫端是否具備適當許可，能夠發出該次呼叫。如果憑證當中不包含適當許可，呼叫即會失敗。

為您的環境提供憑證有好幾種方法。下表說明其中一些方法。


****  

| 環境類型 | 方法 | 
| --- | --- | 
|  EC2  |  使用 AWS 受管臨時登入資料。 我們建議您針對 EC2 environment. AWS managed 臨時登入資料使用此方法，代表您管理 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 命令列界面 (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. 在導覽列中，選擇**角色**。
**注意**  
您無法使用 IAM 主控台單獨建立執行個體描述檔，您必須建立一個包含執行個體描述檔的 IAM 角色。

1. 選擇建**立角色**。

1. 在已選擇 **AWS 服務** 的 **Select type of trusted entity** (選取信任的實體類型) 頁面上，針對 **Choose the service that will use this role** (選擇將使用此角色的服務) 選擇 **EC2**。

1. 從 **Select your use case** (選取您的使用案例) 選擇 **EC2**。

1. 選擇**下一步：許可**。

1. 在 **Attach permissions policies** (附加許可政策) 頁面的政策清單中，選取 **AdministratorAccess** 旁的方塊，然後選擇 **Next: Review** (下一步：檢閱)。
**注意**  
**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. 選擇**建立角色**。

跳至[使用 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)，則無法使用 IDE AWS Cloud9 中的終端機工作階段來執行本節中的部分或全部命令。為了解決 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 Resource Name (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. 請登入 Amazon EC2 主控抬，網址為 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2)。

   對於此步驟，建議您在 AWS 帳戶使用管理員層級憑證來登入。如果您無法執行此操作，請洽詢您的 AWS 帳戶 管理員。

1. 在導覽列中，確認區域選擇器所顯示的 與您環境的 AWS 區域 相符。例如，若您在美國東部 (俄亥俄) 區域建立了環境，請在這裡選擇區域選擇器中的 **US East (Ohio)** (美國東部 (俄亥俄))。

1. 選擇 **Running Instances** (運作中的執行個體) 連結，或從導覽窗格中展開 **Instances** (執行個體)，然後選擇 **Instances** (執行個體)。

1. 從執行個體清單中，選擇 **Name** (名稱) 中包含您環境名稱的執行個體。舉例來說，若您的環境名稱是 `my-demo-environment`，請選擇 **Name** (名稱) 包含 **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 Access Key ID** (AWS 存取金鑰 ID) 或 **AWS Secret Access Key** (AWS 私密存取金鑰) 指定任何值 (每次出現提示後直接按 `Enter`)。針對**預設區域名稱**，指定最 AWS 區域 接近您或您 AWS 資源所在的區域。例如，美國東部 (俄亥俄) 區域請指定 `us-east-2`。如需區域清單，請參閱 中的 [AWS 區域 和 端點](https://docs.aws.amazon.com/general/latest/gr/rande.html)*Amazon Web Services 一般參考*。選擇性指定**預設輸出格式**的值 (例如 `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)，則無法使用 IDE AWS Cloud9 中的終端機工作階段來執行本節中的部分或全部命令。為了解決 AWS 安全最佳實務， AWS 受管臨時登入資料不允許執行某些命令。反之，您可以從個別安裝的 AWS Command Line Interface () 執行這些命令AWS CLI。

1. 執行 Amazon EC2 `associate-iam-instance-profile` 命令。指定執行個體描述檔的名稱，以及環境的 Amazon EC2 執行個體 ID 和 AWS 區域 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 Access Key ID** (AWS 存取金鑰 ID) 或 **AWS Secret Access Key** (AWS 私密存取金鑰) 指定任何值。在其中每個提示之後按下 `Enter`。針對**預設區域名稱**，指定 AWS 區域 最接近您或您 AWS 資源所在的區域。例如，美國東部 (俄亥俄) 區域請指定 `us-east-2`。如需區域清單，請參閱《》中的[AWS 區域和端點](https://docs.aws.amazon.com/general/latest/gr/rande.html)*Amazon Web Services 一般參考*。選擇性指定**預設輸出格式**的值 (例如 `json`)。

您現在可以 AWS 服務 從環境開始呼叫 。若要使用 AWS CLI、 aws-shell或兩者來呼叫 AWS 服務，請參閱 [AWS CLI 和 aws-shell 範例](sample-aws-cli.md)。若要從程式碼呼叫 AWS 服務 ，請參閱我們其他的[教學和範例](tutorials.md)。

## 在環境中建立並存放永久存取憑證
<a name="credentials-permanent-create"></a>

**注意**  
如果您使用的是 an AWS Cloud9 EC2 開發環境，我們建議您使用 AWS 受管臨時憑證，而不是 AWS 永久存取憑證。若要使用 AWS 受管臨時憑證，請參閱 [AWS 受管臨時憑證](security-iam.md#auth-and-access-control-temporary-managed-credentials)。

在本節中，您會使用 AWS Identity and Access Management (IAM) 來產生一組永久登入資料。 AWS CLI、 aws-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_tw/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_tw/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_tw/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)，則無法使用 IDE AWS Cloud9 中的終端機工作階段來執行本節中的部分或全部命令。為了解決 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 CLI 來檢視使用者 AWS 私密存取金鑰的時間。若要稍後視需要為使用者產生新的 AWS 私密存取金鑰，請參閱《*IAM 使用者指南*》中的[建立、修改和檢視存取金鑰 (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 configure` ** 命令 AWS CLI ，或 的 **`configure`**命令aws-shell來儲存永久存取憑證。若要取得指示，請參閱 *AWS Command Line Interface 使用者指南*中的[快速組態](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#cli-quick-configuration)。

1. 在您的環境開啟的情況下，如果尚未啟動，請在 IDE AWS Cloud9 中啟動新的終端機工作階段。若要啟動新終端機工作階段，請在選單列上，選擇 **Window** (視窗)、**New Terminal** (新增終端機)。

1. 執行以下命令，分三次各執行一個命令，其設定的本機環境變數代表了您的永久存取登入資料。在這些命令中，在 之後`AWS_ACCESS_KEY_ID:`，輸入您的 AWS 存取金鑰 ID。在 之後`AWS_SECRET_ACCESS_KEY`，輸入您的 AWS 私密存取金鑰。在 之後`AWS_DEFAULT_REGION_ID`，輸入與您最 AWS 區域 接近 （或您偏好的） 相關聯的 AWS 區域 識別符 AWS 區域。如需可用識別符的清單，請參閱 中的 [AWS 區域 和 端點](https://docs.aws.amazon.com/general/latest/gr/rande.html)*Amazon Web Services 一般參考*。例如，若為美國東部 (俄亥俄)，您會使用 `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 區域。如需可用識別符的清單，請參閱 中的 [AWS 區域 和 端點](https://docs.aws.amazon.com/general/latest/gr/rande.html)*Amazon Web Services 一般參考*。例如，若為美國東部 (俄亥俄) 區域，您會使用 `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-shell呼叫 AWS 服務，請參閱 [AWS CLI 和 aws-shell 範例](sample-aws-cli.md)。若要從程式碼呼叫 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)。

### 調整 IDE AWS Cloud9 中環境的逾時
<a name="change-environment-timeout"></a>

下列步驟概述如何在 IDE 中更新 Amazon EC2 AWS Cloud9 環境的逾時期間。這將是環境停止之前的時間量。

1. 開啟您要設定的環境。

1. 在 **AWS Cloud9 IDE** 的選單列中，選擇**AWS Cloud9****偏好設定**。

1. 在**偏好設定**視窗中，捲動至 **Amazon EC2 執行個體**區段。

1. 從可用清單中選取逾時值並更新。

## 使用主控台變更環境設定
<a name="change-environment-description"></a>

1. 登入 AWS Cloud9 主控台，如下所示：
   + 如果您是使用 的唯一個人， AWS 帳戶 或您是單一 中的 IAM 使用者 AWS 帳戶，請前往 https：//[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_tw/cloud9/latest/user-guide/images/consolas_region_new_UX.png)

1. 在環境清單中，針對您要變更設定的環境，執行下列其中一項操作。
   + 選擇環境的卡片標題。接著在下一頁選擇 **View details** (檢視詳細資訊)。
   + 選取環境的卡片，然後選擇 **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)   | 
|  適用於 Python (Boto) 的 AWS SDK  |   [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 帳戶 根使用者、管理員使用者或`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\$1Write** 存取權。
+ 讀取/寫入成員可以執行下列動作。
  + 開啟、檢視和編輯檔案
  + 執行程式碼
  + 從 IDE AWS Cloud9 中變更各種環境設定
  + 與其他成員聊天
  + 刪除現有的聊天訊息

  在 AWS Cloud9 IDE 中，讀/寫成員會以**讀/寫**存取顯示。
+ 唯讀成員可以執行下列動作。
  + 開啟和檢視檔案
  + 與其他成員聊天
  + 刪除現有的聊天訊息

  在 AWS Cloud9 IDE 中，唯讀成員會以**唯讀**存取顯示。

使用者必須符合下列其中一個條件，才能成為環境擁有者或成員。
+ 使用者為 **AWS 帳戶 根使用者**。
+ 使用者為**管理員使用者**。如需詳細資訊，請參閱 *IAM 使用者指南*中的[建立您的第一個 IAM 管理員使用者和群組](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-set-up.html#create-an-admin)。
+ 使用者是**屬於 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** (許可) 標籤上，針對 **Managed Policies** (受管政策)，選擇 **Attach Policy** (連接政策)。

1. 在政策名稱清單中，選擇下列其中一個方塊。
   +  **AWSCloud9User** (建議使用) 或 **AWSCloud9Administrator** 可讓群組中的每位使用者成為環境擁有者
   +  **AWSCloud9EnvironmentMember** 可讓群組中的每位使用者成為一般成員

   (如果您在清單中看不到這些政策名稱，請在 **Search** (搜尋) 方塊中輸入政策名稱以顯示。)

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)，則無法使用 IDE AWS Cloud9 中的終端機工作階段來執行本節中的部分或全部命令。為了解決 AWS 安全最佳實務， AWS 受管臨時登入資料不允許執行某些命令。反之，您可以從個別安裝的 AWS Command Line Interface () 執行這些命令AWS CLI。

執行 IAM `attach-group-policy`命令，將 的 AWS 受管政策連接至 AWS Cloud9 群組。指定群組名稱和政策的 Amazon Resource Name (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. 在 IDE AWS Cloud9 的選單列中，執行下列其中一項操作。
   + 選擇 **Window, Share** (視窗、共享)。
   + 選擇 **Share** (共享) (位於 **Preferences** (偏好設定) 齒輪圖示旁)。  
![\[IDE AWS Cloud9 選單列中的共用命令\]](http://docs.aws.amazon.com/zh_tw/cloud9/latest/user-guide/images/ide-share.png)

1. 在 **Share this environment** (共享這個環境) 對話方塊的 **Invite Members** (邀請成員) 中，輸入以下其中一個項目。
   + 若要邀請 **IAM 使用者**，請輸入使用者名稱。
   + 若要邀請 **AWS 帳戶 根使用者**，請輸入 `arn:aws:iam::123456789012:root`。`123456789012` 以您的 AWS 帳戶 ID 取代 。
   + 若要邀請**具有所擔任角色的使用者**或**具有所擔任角色的聯合身分使用者**，請輸入 `arn:aws:sts::123456789012:assumed-role/MyAssumedRole/MyAssumedRoleSession`。`123456789012` 以您的 AWS 帳戶 ID 取代 ，`MyAssumedRole`以擔任的角色名稱取代 。將 `MyAssumedRoleSession` 取代為所擔任角色的工作階段名稱。

1. 若要讓此使用者成為唯讀成員，請選擇 **R**。若要讓此使用者成為讀取/寫入成員，請選擇 **RW**。

1. 選擇 **Invite** (邀請)。
**注意**  
如果您讓此使用者成為讀取/寫入成員，則會顯示對話方塊，其中包含可能危及 AWS 安全登入資料的資訊。下列資訊提供更多此問題的背景。  
請只與信任的使用者共用環境。  
讀取/寫入成員可能可以在環境中使用 AWS CloudShell、 AWS CLI或 AWS SDK 程式碼， AWS 代表您在 中採取動作。此外，如果您將永久 AWS 存取登入資料存放在環境中，該成員可能會複製這些登入資料，並在環境外使用。  
從環境移除永久 AWS 存取登入資料並使用暫時 AWS 存取登入資料，並不會完全解決此問題。這只能降低成員複製這些臨時憑證並用於環境外部的機會 (因為這些臨時憑證只在限定時間內有效)。不過，暫時登入資料仍然可讓讀取/寫入成員代表您 AWS 從環境執行 中的動作。

1. 聯絡使用者，讓他們知道可以開啟此環境並開始使用。

## 讓 AWS Cloud9 管理員在與環境相同的帳戶中邀請自己或其他人
<a name="share-environment-admin-user"></a>

**注意**  
如果您使用的是[AWS 受管臨時憑證](security-iam.md#auth-and-access-control-temporary-managed-credentials)，則無法使用 IDE AWS Cloud9 中的終端機工作階段來執行本節中的部分或全部命令。為了解決 AWS 安全最佳實務， AWS 受管臨時登入資料不允許執行某些命令。反之，您可以從個別安裝的 AWS Command Line Interface () 執行這些命令AWS CLI。

下列類型的使用者可以邀請自己 (或相同 AWS 帳戶中的其他使用者) 加入相同帳戶中的任何環境。
+ **AWS 帳戶 根使用者**。
+ **管理員使用者**。
+ **屬於 IAM 群組的使用者**、**擔任角色的使用者**，或**擔任角色的聯合身分使用者**，*且該*群組或角色已`AWSCloud9Administrator`連接 AWS 受管政策。

假設受邀的使用者*不是*上述類型的其中一個使用者。確定使用者已具有對應的環境成員存取角色。如需說明，請參閱[關於環境成員的存取角色](#share-environment-member-roles)小節。

若要邀請使用者，請使用 AWS CLI 或 AWS CloudShell 來執行 AWS Cloud9 `create-environment-membership`命令。

```
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 帳戶 ID 取代 。
+ 若要邀請**具有所擔任角色的使用者**或**具有所擔任角色的聯合身分使用者**，請輸入 `arn:aws:sts::123456789012:assumed-role/MyAssumedRole/MyAssumedRoleSession`。`123456789012` 以您的 AWS 帳戶 ID 取代 。將 `MyAssumedRole` 取代為所擔任角色的名稱。然後，將 `MyAssumedRoleSession` 取代為所擔任角色的工作階段名稱。

例如，若要將帳戶 ID 的 AWS 帳戶 根使用者邀請`123456789012`至 ID `12a34567b8cd9012345ef67abcd890e1`為讀取/寫入成員的環境，請執行下列命令。

```
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：//[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** (視窗、協作)。

![\[IDE AWS Cloud9 中的協同合作視窗\]](http://docs.aws.amazon.com/zh_tw/cloud9/latest/user-guide/images/ide-collaborate.png)


# 參閱環境成員清單
<a name="share-environment-members-list"></a>

在開啟的共用環境中，如果成員清單未顯示，請在 **Collaborate** (協作) 視窗中，展開 **Environment Members** (環境成員)。

每個成員旁的圓圈指出其線上狀態，如下所示。
+ 活躍的成員有綠色圓圈。
+ 離線的成員有灰色圓圈。
+ 閒置的成員有橘色圓圈。

![\[IDE AWS Cloud9 中的成員線上狀態\]](http://docs.aws.amazon.com/zh_tw/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)   | 
|  適用於 Python (Boto) 的 AWS SDK  |   [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** (開啟作用中的檔案)。

![\[IDE 中的 Open Active File AWS Cloud9 命令\]](http://docs.aws.amazon.com/zh_tw/cloud9/latest/user-guide/images/ide-collaborate-active-file.png)


# 開啟環境成員的開放檔案
<a name="share-environment-open-file"></a>

此步驟說明如何開啟環境成員的開啟檔案。

1. 在開啟的共用環境中，如果成員清單未顯示，請在 **Collaborate** (協作) 視窗中，展開 **Environment Members** (環境成員)。

1. 針對您想要在環境中開啟其開放檔案的使用者，展開使用者名稱。

1. 開啟 (按兩下) 您想要開啟的檔案名稱。

![\[在 IDE AWS Cloud9 中開啟團隊成員的檔案\]](http://docs.aws.amazon.com/zh_tw/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`。

![\[IDE AWS Cloud9 中的聊天區域\]](http://docs.aws.amazon.com/zh_tw/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**，分別讓此成為擁有者或讀取/寫入角色。
   + 若要將讀取/寫入成員變更為唯讀成員，請開啟成員名稱的內容 (右鍵) 功能表，然後選擇 **Revoke Write Acces** (撤銷寫入存取權)。
   + 若要將唯讀成員變更為讀取/寫入成員，請開啟成員名稱的內容 (右鍵) 功能表，然後選擇 **Grant Read\$1Write Access** (授予讀取/寫入存取權)。
**注意**  
如果您讓此使用者成為讀取/寫入成員，則會顯示對話方塊，其中包含可能危及 AWS 安全登入資料的資訊。除非您信任該使用者 AWS 代表您在 中採取動作，否則請勿讓使用者成為讀取/寫入成員。如需詳細資訊，請參閱[邀請所在帳戶與環境相同的使用者](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)   | 
|  適用於 Python (Boto) 的 AWS SDK  |   [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)   | 
|  適用於 Python (Boto) 的 AWS SDK  |   [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)   | 
|  適用於 Python (Boto) 的 AWS SDK  |   [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>

共用環境時，建議您採取以下實務。
+ 只邀請您信任的人到您的環境成為讀取/寫入成員。
+ 對於 EC2 環境，讀取/寫入成員可以使用環境擁有者的 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 帳戶 根使用者來建立和共用環境。請改用帳戶中的 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)。

# 從 AWS Cloud9 Amazon EBS 磁碟區移動 IDE
<a name="move-environment"></a>

您可以將 AWS Cloud9 開發環境從一個 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 資源加密，藉此為執行個體和連接的 EBS 儲存空間之間的靜態資料和傳輸中資料確保安全性。

## 如何移動環境
<a name="move-environment-move"></a>

在您開始移動程序之前，請注意以下條件：
+ 您無法將環境移至相同類型的 Amazon EC2 執行個體。移動時，您必須為新的執行個體選擇不同的 Amazon EC2 執行個體類型。
**重要**  
如果您將環境移至另一個 Amazon EC2 執行個體類型，目前 AWS Cloud9 也必須支援該執行個體類型 AWS 區域。若要檢查每個區域的可用執行個體類型，請移至[使用主控台建立 EC2 環境](create-environment-main.md#create-environment-console)時顯示的 **Configure settings** (組態設定) 頁面。您在**執行個體類型**區段中的選擇，取決於主控台右上角 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：//[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)。

## 將 an AWS Cloud9 EC2 環境移至不同的 Amazon Machine Image (AMI)
<a name="moving-ec2-environ-to-ami"></a>

 

本主題說明如何將 AWS Cloud9 EC2 環境從一個 Amazon 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. 在 IDE AWS Cloud9 中開啟您要遷移的環境。

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
   ```

   在下列範例輸出中，`nvme0n1`根裝置的分割區`nvme0n1p1`已掛載，因此也必須掛載`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`)。
**注意**  
此指令碼適用於連線至執行 AL2023、Amazon Linux 2、Amazon Linux 或 Server 且設定為使用 IMDSv2 的 EC2 執行個體的 Amazon EBS 磁碟區。 Ubuntu IMDSv2  
指令碼也會為在 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
     ```

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

本主題說明如何針對 AWS Cloud9 開發環境使用的 EC2 執行個體加密 Amazon EBS 磁碟區。

Amazon EBS 加密功能會將下列資料加密：
+ 磁碟區內的待用資料
+ 所有在磁碟區和執行個體間移動的資料
+ 所有從磁碟區建立的快照
+ 所有從那些快照建立的磁碟區

您可以為 AWS Cloud9 EC2 開發環境使用的 Amazon EBS 磁碟區採取兩種加密選項：
+ **Encryption by default** (預設加密)– 您可以將 AWS 帳戶 設為強制加密您建立的新 EBS 磁碟區和快照複本。依預設，加密是在 AWS 區域的層級啟用。因此，您無法針對該區域中的個別磁碟區或快照啟用加密。此外，Amazon EBS 會加密您啟動執行個體時建立的磁碟區。因此，您必須先啟用此設定，然後才能建立 EC2 環境。如需詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[預設加密](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-encryption.html#encryption-by-default)。
+ **Encryption of an existing Amazon EBS volume used by an EC2 environment** (為 EC2 環境使用的現有 Amazon EBS 磁碟區加密)– 您可以為針對 EC2 執行個體建立的特定 Amazon EBS 磁碟區進行加密。此選項涉及使用 AWS Key Management Service (AWS KMS) 來管理加密磁碟區的存取。如需相關程序，請參閱 [加密 AWS Cloud9 使用的現有 Amazon EBS 磁碟區](#encrypting-existing-volume)。

**重要**  
如果您的 AWS Cloud9 IDE 使用預設加密的 Amazon EBS 磁碟區，則 AWS Identity and Access Management 的服務連結角色 AWS Cloud9 需要存取 AWS KMS key 這些 EBS 磁碟區的 。如果未提供存取權，IDE AWS Cloud9 可能無法啟動，且偵錯可能很困難。  
若要提供存取權，請將 AWS Cloud9的服務連結角色新增至 Amazon EBS 磁碟區所使用的 `AWSServiceRoleForAWSCloud9`KMS 金鑰。如需此任務的詳細資訊，請參閱[建立使用 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)。 *AWS *

## 加密 AWS Cloud9 使用的現有 Amazon EBS 磁碟區
<a name="encrypting-existing-volume"></a>

加密現有的 Amazon EBS 磁碟區涉及使用 AWS KMS 來建立 KMS 金鑰。建立要取代的磁碟區快照之後，您必須使用 KMS 金鑰來加密快照複本。

接下來，您會建立包含該快照的加密磁碟區。然後，您要將未加密的磁碟區從 EC2 執行個體中分開，並連接加密磁碟區，藉此取代未加密磁碟區。

最後，您必須更新客戶管理金鑰的金鑰政策，才能存取 AWS Cloud9 服務角色。

**注意**  
下列程序主要說明如何使用客戶管理的金鑰來加密磁碟區。您也可以將 AWS 受管金鑰 用於帳戶中 AWS 服務 的 。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 磁碟區從 Amazon EC2 執行個體分開](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-detaching-volume.html)。

1. [將新的加密磁碟區連接到 Amazon EC2 執行個體](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-attaching-volume.html)。

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 服務 `AWSServiceRoleForAWSCloud9`存取 KMS 金鑰。
**注意**  
如果您使用的是 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 Cloud9 開發環境 AWS 帳戶 相關的任何持續費用，請刪除環境。
+  [使用主控台刪除環境](#delete-environment-console) 
+  [使用程式碼刪除環境](#delete-environment-code) 

## 使用主控台刪除環境
<a name="delete-environment-console"></a>

**警告**  
當您刪除環境時， 會永久 AWS Cloud9 刪除環境。這包括永久刪除所有相關的設定、使用者資料，與未提交的程式碼。刪除的環境無法復原。

1. 登入 AWS Cloud9 主控台：
   + 如果您是使用 的唯一使用者， AWS 帳戶 或您是單一 中的 IAM 使用者 AWS 帳戶，請前往 https：//[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_tw/cloud9/latest/user-guide/images/consolas_region_new_UX.png)

1. 在環境清單中，針對您要刪除的環境執行以下其中一項動作。
   + 選擇環境的卡片標題。然後，在下一個頁面上選擇 **Delete** (刪除)。  
![\[從環境詳細資訊頁面刪除環境\]](http://docs.aws.amazon.com/zh_tw/cloud9/latest/user-guide/images/console-delete-env.png)
   + 選取環境的卡片，然後選擇 **Delete** (刪除) 按鈕。  
![\[從環境清單中刪除環境\]](http://docs.aws.amazon.com/zh_tw/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)   | 
|  適用於 Python (Boto) 的 AWS SDK  |   [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)   | 