

 AWS Cloud9 不再提供給新客戶。 AWS Cloud9 的現有客戶可以繼續正常使用該服務。[進一步了解](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 透過網際網路共用執行中的應用程式
<a name="app-preview-share"></a>

預覽執行中的應用程式之後，您可以透過網際網路供予其他人存取該應用程式。

若已有 Amazon EC2 執行個體連接到您的環境，請執行以下步驟。否則，請參閱您的伺服器所附說明文件。

**Topics**
+ [步驟 1：取得執行個體的 ID 及 IP 地址](#app-preview-share-get-metadata)
+ [步驟 2：為執行個體設定安全群組](#app-preview-share-security-group)
+ [步驟 3：為執行個體設定子網路](#app-preview-share-subnet)
+ [步驟 4：共用執行中應用程式的 URL](#app-preview-share-url)

## 步驟 1：取得執行個體的 ID 及 IP 地址
<a name="app-preview-share-get-metadata"></a>

在此步驟中，請針對已連接到環境的 Amazon EC2 執行個體記下執行個體 ID 及公有 IP 地址。後續步驟將需要憑此執行個體 ID 以允許傳入應用程式請求。接著，將公有 IP 地址給予其他人，使對方能夠存取執行中的應用程式。

1. 取得 Amazon EC2 執行個體的 ID。為此，請執行以下其中一項操作：
   + 在環境的 IDE AWS Cloud9 中的終端機工作階段中，執行下列命令以取得 Amazon EC2 執行個體的 ID。

     ```
     curl http://169.254.169.254/latest/meta-data/instance-id
     ```

     執行個體 ID 的格式如下：`i-12a3b456c789d0123`。記下該執行個體 ID。
   + 在環境的 IDE 中，從選單列選擇您的使用者圖示，然後選擇 **Manage EC2 Instance** (管理 EC2 執行個體)。  
![選擇從 IDE AWS Cloud9 管理執行個體](http://docs.aws.amazon.com/zh_tw/cloud9/latest/user-guide/images/console-manage-instance.png)

     Amazon EC2 主控台出現後，記下 **Instance ID** (執行個體 ID) 欄內所顯示的執行個體 ID。執行個體 ID 的格式如下：`i-12a3b456c789d0123`。

1. 取得 Amazon EC2 執行個體的公有 IP 地址。為此，請執行以下其中一項操作：
   + 在環境的 IDE 中，從選單列選擇 **Share** (共用)。在 **Share this environment** (共享此環境) 對話方塊中，記下 **Application** (應用程式) 方塊所顯示的公有 IP 地址。公有 IP 地址的格式如下：`192.0.2.0`。
   + 於環境的 IDE 終端機工作階段執行以下命令，取得 Amazon EC2 執行個體的公有 IP 地址。

     ```
     curl http://169.254.169.254/latest/meta-data/public-ipv4
     ```

     公有 IP 地址的格式如下：`192.0.2.0`。記下該公有 IP 地址。
   + 在環境的 IDE 中，從選單列選擇您的使用者圖示，然後選擇 **Manage EC2 Instance** (管理 EC2 執行個體)。Amazon EC2 主控台出現後，記下 **Description** (說明) 標籤上 **IPv4 Public IP** (IPv4 公有 IP) 欄位內的公有 IP 地址。公有 IP 地址的格式如下：`192.0.2.0`。
**注意**  
應用程式的公有 IP 地址可能會在應用程式的執行個體重新啟動時變更。若要防止 IP 地址變更，請配置彈性 IP 地址。然後，將該地址指派給執行中的執行個體。如需說明，請參閱《*Amazon EC2 使用者指南*》中的[配置彈性 IP 地址](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html#using-instance-addressing-eips-allocating)和[將彈性 IP 地址與執行中的執行個體建立關聯](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html#using-instance-addressing-eips-associating)。配置彈性 IP 地址可能會導致您的 AWS 帳戶 產生費用。如需詳細資訊，請參閱 [Amazon EC2 定價](https://aws.amazon.com/ec2/pricing/)。

## 步驟 2：為執行個體設定安全群組
<a name="app-preview-share-security-group"></a>

在此步驟中，您將使用 Amazon EC2 主控台為連接到環境的執行個體設定 Amazon EC2 安全群組。將其設定為允許透過連接埠 8080、8081 或 8082 傳入的 HTTP 要求。

**注意**  
您不需要透過連接埠 `8080`、`8081` 或 `8082` 使用 HTTP 來執行。如果您不這樣做，將無法從 IDE 內預覽執行中的應用程式。如需詳細資訊，請參閱[預覽執行中的應用程式](app-preview.md#app-preview-preview-app)。否則，如果您是使用其他通訊協定或連接埠執行，請在此步驟中替換它。  
如要獲得多一層的安全保障，請為 VPC 中可供執行個體使用的子網路設定一份網路存取控制清單 (ACL)。如需安全群組與網路 ACL 的詳細資訊，請參閱以下內容：  
 [步驟 3：為執行個體設定子網路](#app-preview-share-subnet) 
 *Amazon VPC 使用者指南*中的[安全性](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Security.html)
 *Amazon VPC 使用者指南*中的[VPC 的安全群組](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html)
 *Amazon VPC 使用者指南*中的[網路 ACL](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html)

1. 在環境的 IDE 中，從選單列選擇您的使用者圖示，然後選擇 **Manage EC2 Instance** (管理 EC2 執行個體)。接著跳至本程序的步驟 3。

1. 如果選擇 **Manage EC2 Instance** (管理 EC2 執行個體) 或進行本程序的其他步驟時傳回錯誤，請使用 AWS 帳戶中管理員的憑證登入 Amazon EC2 主控台。然後完成下列指示。如果您無法執行此操作，請洽詢您的 AWS 帳戶 管理員。

   1. 如果您尚未登入 ，請在 AWS 管理主控台 https：//[https://console.aws.amazon.com/](https://console.aws.amazon.com/) 登入 。

   1. 開啟 Amazon EC2 主控台。方法如下：從導覽列選擇 **Services** (服務)。然後選擇 **EC2**。

   1. 在導覽列中，選擇 AWS 區域 您環境所在的 。

   1. 出現 **EC2 Dashboard** (EC2 儀表板) 時，選擇 **Running Instances** (運作中的執行個體)。否則，若服務導覽窗格中仍未展開 **Instances** (執行個體)，請將其展開後再選擇 **Instances** (執行個體)。

   1. 從執行個體清單中，選取 **Instance ID** (執行個體 ID) 與您稍早記下的執行個體 ID 相符的執行個體。

1. 在執行個體的 **Description** (說明) 標籤上，選擇 **Security groups** (安全群組) 旁的安全群組連結。

1. 安全群組顯示後，查看 **Inbound** (傳入) 標籤。若當中已有規則，其 **Type** (類型) 設為 **Custom TCP Rule** (自訂 TCP 規則) 且 **Port Range** (連接埠範圍) 設為 **8080**、**8081** 或 **8082**，請選擇 **Cancel** (取消)，然後跳至 [步驟 3：為執行個體設定子網路](#app-preview-share-subnet)。否則選擇 **Edit** (編輯)。

1. 在 **Edit inbound rules** (編輯傳入規則) 對話方塊中，選擇 **Add Rule** (新增規則)。

1. 針對 **Type (類型)**，選擇 **Custom TCP Rule (自訂 TCP 規則)**。

1. 針對 **Port Range** (連接埠範圍)，輸入 `8080`、`8081` 或 `8082`。

1. 針對 **Source (來源)**，選擇 **Anywhere (隨處)**。
**注意**  
**Source** (來源) 選擇 **Anywhere** (隨處) 時，將允許來自任何 IP 地址的傳入請求。若要將此限制為特定 IP 地址，請選擇 **Custom** (自訂)，然後輸入 IP 地址範圍。或者，選擇 **My IP** (我的 IP)，將請求限制為僅來自您的 IP 地址。

1. 選擇**儲存**。

## 步驟 3：為執行個體設定子網路
<a name="app-preview-share-subnet"></a>

使用 Amazon EC2 和 Amazon VPC 主控台，為連接環境的 Amazon EC2 執行個體設定子網路。接著，允許透過連接埠 8080、8081 或 8082 傳入的 HTTP 要求。

**注意**  
您不需要透過連接埠 `8080`、`8081` 或 `8082` 使用 HTTP 來執行。然而，如果您不這樣做，將無法從 IDE 內預覽執行中的應用程式。如需詳細資訊，請參閱[預覽執行中的應用程式](app-preview.md#app-preview-preview-app)。否則，如果您是使用其他通訊協定或連接埠執行，請在此步驟中替換它。  
此步驟說明如何為 Amazon VPC 中可供執行個體使用的子網路設定網路 ACL。此步驟非必要，但仍建議執行。設定網路 ACL 可增加一層額外的安全性。如需網路 ACL 的詳細資訊，請參閱以下內容：  
 *Amazon VPC 使用者指南*中的[安全性](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Security.html)
 *Amazon VPC 使用者指南*中的[網路 ACL](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)

1. 在 Amazon EC2 主控台上，若服務導覽窗格中仍未展開 **Instances** (執行個體)，請將其展開後再選擇 **Instances** (執行個體)。

1. 從執行個體清單中，選取 **Instance ID** (執行個體 ID) 與您稍早記下的執行個體 ID 相符的執行個體。

1. 在執行個體的 **Description** (說明) 標籤上，記下 **Subnet ID** (子網路 ID) 的值。子網路 ID 的格式如下：`subnet-1fab8aEX`。

1. 開啟 Amazon VPC 主控台。若要這樣做，請在 AWS 導覽列中選擇**服務**，然後選擇 **VPC**。

   針對此步驟，建議您使用 AWS 帳戶中管理員的憑證登入 Amazon VPC 主控台。如果您無法執行此操作，請洽詢您的 AWS 帳戶 管理員。

1. 出現 **VPC Dashboard** (VPC 儀表板) 時，選擇 **Subnets** (子網路)。否則，從服務導覽窗格中選擇 **Subnets** (子網路)。

1. 從子網路清單中，選取 **Subnet ID** (子網路 ID) 與您稍早記下的值相符的子網路。

1. 在 **Summary** (摘要) 標籤上，選擇 **Network ACL** (網路 ACL) 旁的網路 ACL 連結。

1. 從網路 ACL 清單中選取網路 ACL (只會有一份網路 ACL)。

1. 查看網路 ACL 的 **Inbound Rules** (傳入規則) 標籤。若當中有一項規則，其 **Type** (類型) 設為 **HTTP\* (8080)**、**HTTP\* (8081)** 或 **HTTP\* (8082)**，請直接跳到 [步驟 4：共用執行中應用程式的 URL](#app-preview-share-url)。否則選擇 **Edit** (編輯)。

1. 選擇 **Add another rule** (新增其他規則)。

1. 在 **Rule \#** (規則 \#) 中輸入規則的編號 (例如 `200`)。

1. 針對 **Type (類型)**，選擇 **Custom TCP Rule (自訂 TCP 規則)**。

1. 在 **Port Range** (連接埠範圍) 中輸入 `8080`、`8081` 或 `8082`。

1. 對於 **Source** (來源)，輸入要允許傳入請求的 IP 地址範圍。例如，輸入 `0.0.0.0/0` 將允許來自任何 IP 地址的傳入請求。

1. 在 **Allow / Deny** (允許/拒絕) 設為 **ALLOW** (允許) 的情況下，選擇 **Save** (儲存)。

## 步驟 4：共用執行中應用程式的 URL
<a name="app-preview-share-url"></a>

應用程式執行後，您可以透過提供應用程式的 URL，來與其他人共用您的應用程式。為此，您需要先前記下的公有 IP 地址。若要撰寫應用程式的完整 URL，請務必使用正確的通訊協定來啟動應用程式的公用 IP 地址。接著，如果您的應用程式連接埠不是所使用通訊協定的預設連接埠，請新增連接埠號碼資訊。下列是應用程式 URL 範例：`http://192.0.2.0:8080/index.html` 透過連接埠 8080 使用 HTTP。

如果產生的 web 瀏覽器標籤顯示錯誤或空白，請按照 [無法從 IDE 外部顯示執行中的應用程式](troubleshooting.md#troubleshooting-app-sharing) 中的故障診斷步驟操作。

**注意**  
應用程式的公有 IP 地址可能會在應用程式的執行個體重新啟動時變更。為避免您的 IP 地址發生變更，請配置彈性 IP 地址，然後將該地址指派給運作中的執行個體。如需說明，請參閱《*Amazon EC2 使用者指南*》中的[配置彈性 IP 地址](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html#using-instance-addressing-eips-allocating)和[將彈性 IP 地址與執行中的執行個體建立關聯](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html#using-instance-addressing-eips-associating)。配置彈性 IP 地址可能會導致您的 AWS 帳戶 產生費用。如需詳細資訊，請參閱 [Amazon EC2 定價](https://aws.amazon.com/ec2/pricing/)。  
您不需要透過連接埠 `8080`、`8081` 或 `8082` 使用 HTTP 來執行應用程式。然而，如果您不這樣做，將無法從 IDE 內預覽執行中的應用程式。如需詳細資訊，請參閱[預覽執行中的應用程式](app-preview.md#app-preview-preview-app)。  
例如，假設來自 VPN 的要求會封鎖所要求通訊協定或連接埠上的流量。然後，那些存取應用程式 URL 的請求可能會失敗。必須換成允許透過請求的通訊協定及連接埠傳送流量的其他網路。如需詳細資訊，請洽詢您的網路管理員。  
建議您不要向其他人透露 IDE 應用程式預覽標籤上的 URL。（此 URL 的格式如下：`https://12a34567b8cd9012345ef67abcd890e1.vfs.cloud9.us-east-2.amazonaws.com/`。 在此格式中， `12a34567b8cd9012345ef67abcd890e1` 是指派給環境的 AWS Cloud9 ID。 `us-east-2`是環境 AWS 區域 的 ID。) 此 URL 僅限於環境的 IDE 已開啟且應用程式由同一個 Web 瀏覽器執行時才有效。