移動環境並調整 Amazon EBS 磁碟區大小或予以加密 - AWS Cloud9

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

移動環境並調整 Amazon EBS 磁碟區大小或予以加密

您可以將 AWS Cloud9 開發環境從一個 Amazon EC2 執行個體移至另一個執行個體。舉例來說,您也許想要執行下列其中一個動作:

  • 從受損 (或與健康的執行個體相比,以異常的方式執行工作) 的 Amazon EC2 執行個體中移轉環境。

  • 將環境從現有執行個體移轉到具有最新系統更新的執行個體。

  • 由於現有執行個體中的環境不敷使用或使用率過低,而必須增加或減少執行個體的運算資源。

您可以通過遷移到新的 AWS Cloud9 EC2 環境從一個 AWS Cloud9 受支持的 AMI 升級到另一個,同時保留項目文件。您可能想要升級到另一個版本的 AMI,因為:

  • 目前環境的 AMI 已達到 end-of-life 且不再受支援。

  • 您需要的軟件包在當前 AMI 中已過時。

您也可以為與環境的 Amazon EC2 執行個體相關聯的 Amazon Elastic Block Store (Amazon EBS) 磁碟區調整大小。舉例來說,您也許想要執行下列其一或全部動作:

  • 由於您即將用光執行個體上的儲存空間,而必須增加磁碟區的大小。

  • 由於您不想為未使用的額外儲存空間支付費用,而必須減少磁碟區的大小。

在移動環境或調整大小之前,您可以嘗試停用環境中部分正在執行的程序,或將置換檔新增至環境。如需詳細了解如何處理記憶體不足或高 CPU 使用率,請參閱疑難排解

注意

本主題僅說明如何在不同 Amazon EC2 執行個體之間轉移環境或調整 Amazon EBS 磁碟區的大小。若要從某部自有伺服器調整環境大小,或為某部自有伺服器變更儲存空間,請參閱您伺服器的文件。

最後,您可以加密 Amazon EBS 資源,以確保執行個體 data-at-rest 及其連接 EBS 儲存 data-in-transit 之間的安全性。

如何移動環境

在您開始移動程序之前,請注意以下條件:

  • 您無法將環境移至相同類型的 Amazon EC2 執行個體。移動時,您必須為新的執行個體選擇不同的 Amazon EC2 執行個體類型。

    重要

    如果您將環境移到另一個 Amazon EC2 執行個體類型,目前的執行個體類型也必須受 AWS Cloud9 到支援 AWS 區域。若要檢查每個區域的可用執行個體類型,請移至使用主控台建立 EC2 環境時顯示的 Configure settings (組態設定) 頁面。您在 [執行個體類型] 區段中 AWS 區域 的選擇取決於主控台右上方選取的項目。

  • 您必須先停止與環境相關聯的 Amazon EC2 執行個體,方可變更執行個體類型。當執行個體停止時,您和任何成員都不能使用與停止的執行個體相關聯的環境。

  • AWS 將執行個體移至新硬體,但執行個體的 ID 不會變更。

  • 如果執行個體在 Amazon VPC 中執行,且具有公用 IPv4 地址,請 AWS 釋放該地址並為執行個體提供新的公有 IPv4 地址。執行個體會保留其私有 IPv4 地址,以及任何彈性 IP 地址或 IPv6 地址。

  • 請為執行個體停止時的停機時間做好規劃。此程序可能需要幾分鐘時間。

如何移動環境
  1. (選用) 若新執行個體類型需要的驅動程式並未安裝於現有的執行個體,請連線至您的執行個體並安裝這些驅動程式。如需詳細資訊,請參閱 Amazon EC2 使用者指南中的調整執行個體大小的相容性

  2. 關閉 Web 瀏覽器中正在顯示環境的所有標籤頁。

    重要

    如果您未關閉目前顯示環境的所有 Web 瀏覽器索引標籤, AWS Cloud9 可能會干擾完成此程序。具體而言,在此程序期間, AWS Cloud9 可能會在錯誤的時間嘗試重新啟動與環境相關聯的 Amazon EC2 執行個體。此執行個體必須保持停止,直到程序中的最後一個步驟。

  3. 如果您尚未登入,請至 https://console.aws.amazon.com 登入。 AWS Management Console

    建議您使用. 中的系統管理員層級認證登入。 AWS 帳戶如果您無法這麼做,請洽詢您的 AWS 帳戶 系統管理員。

  4. 開啟 Amazon EC2 主控台。若要執行此操作,請在 Services (服務) 清單中,選擇 EC2

  5. 在 AWS 導覽列中,選擇包 AWS 區域 含您要移動之環境的環境 (例如,美國東部 (俄亥俄))。

  6. 在服務導覽窗格中,展開 Instances (執行個體),然後選擇 Instances (執行個體)。

  7. 在執行個體清單中,選擇與您要移動的環境相關聯的執行個體。如為 EC2 環境,執行個體的名稱會以 aws-cloud9- 開頭,其後接著環境的名稱。舉例來說,如果環境名稱為 my-demo-environment,執行個體名稱開頭即為 aws-cloud9-my-demo-environment

  8. 如果「執行處理狀態」不是「停止」,請選擇「動作」、「執行處理狀態 出現提示時,請選擇 Yes, Stop (是,停止)。停止執行個體可能需要幾分鐘。

  9. Instance State (執行個體狀態) 為 stopped (停止) 之後,並且該執行個體仍為已選取的情況下,選擇 Actions (動作)、Instance Settings (執行個體設定)、Change Instance Type (變更執行個體類型)。

  10. Change Instance Type (變更執行個體類型) 對話方塊中為您要使用的環境選擇新的 Instance Type (執行個體類型)。

    注意

    若您想要的執行個體類型並未出現在清單中,表示該類型與您執行個體的組態不相容。例如,執行個體可能由於虛擬化類型而不相容。

  11. (選用) 若您選擇的執行個體類型支援 EBS 最佳化,請選取 EBS-optimized (EBS 最佳化) 以啟用 EBS 最佳化,或取消選取 EBS-optimized (EBS 最佳化) 以停用 EBS 最佳化。

    注意

    如果您選擇的執行個體類型預設為 EBS 最佳化,則 EBS-optimized (EBS 最佳化) 便會處於選取狀態,而且您無法取消選取。

  12. 選擇 Apply (套用) 以接受新的設定。

    注意

    如果您先前未在此程序中,為 Instance Type (執行個體類型) 選擇不同的執行個體類型,在您選擇 Apply (套用) 之後,不會發生任何事情。

  13. 重新開啟環境。如需詳細資訊,請參閱 在 AWS Cloud9 中開啟環境

如需上述程序的詳細資訊,請參閱 Amazon EC2 使用者指南中的變更執行個體類型

將 AWS Cloud9 EC2 環境移動到不同的 Amazon 機器映像(AMI)

本主題說明如何將 AWS Cloud9 EC2 環境從一個 Amazon Linux AMI 遷移到另一個 AWS Cloud9 支援的 AMI。

注意

如果您想要在不更新作業系統版本的情況下將環境移至新執行個體,請參閱如何移動環境

您可以使用下列其中一個程序在環境之間移轉資料:

透過將歸檔下載至本機電腦來移動環境
  1. 在具有不同基礎映像檔的相同可用區域中建立新環境:

    1. 完成本建立 EC2 環境節中的步驟以建立新環境。

      注意

      選擇「平台」時,請選取您要移轉環境的目標平台。

    2. 依預設,環境是使用 10 GiB 磁碟區建立的。如果您沒有足夠的空間將存檔上傳或解壓縮到新環境,請完成調整 Amazon EBS 磁碟區大小的為環境使用的 Amazon EBS 磁碟區調整大小程序中的步驟。

  2. 開啟您要在 AWS Cloud9 IDE 中移轉的環境。

  3. AWS Cloud9 IDE 載入後,從功能表中選取「檔案」>「下載專案」,以下載包含環境專案目錄內容的歸檔。

  4. 在新環境中開啟 AWS Cloud9 IDE。

  5. 選擇「檔案 > 上傳本機檔案...」。 以上傳歸檔。

  6. (選擇性) 若要將舊目.c9錄備份至環境終端機中.c9.backup,請執行下列命令:

    cp .c9 .c9.backup

    如果您想要稍後還原組態檔案,可能需要這些備份檔案。

  7. 若要解壓縮歸檔,請執行下列命令:

    tar xzvf <old_environment_name>.tar.gz -C ~/
  8. 若要從專案目錄刪除歸檔,請執行下列命令:

    rm <old_environment_name>.tar.gz

    確定新環境如預期般運作。

  9. 您現在可以刪除舊環境。

使用 Amazon EBS 磁碟區移動環境

如果您無法下載存檔,或產生的存檔太大,則可以使用 Amazon EBS 磁碟區進行遷移。此外,此方法可讓您複製位於~/environment目錄外的檔案。

  1. 關閉在現有環境中開啟的所有 AWS Cloud9 IDE 索引標籤。

  2. 完成下列步驟以停止現有執行處理:

    1. 在 AWS Cloud9 主控台中,選取要導覽的環境以檢視其詳細資料。

    2. 環境詳細資料頁面的 EC2 執行個體索引標籤下,選擇管理 EC2 執行個體

    3. 在 EC2 主控台中,選取要導覽至執行個體詳細資料的執行個體。

    4. 確定「執行處理」狀態已設定為「已停止」。如果沒有,請從執行個體狀態下拉式清單中選取停止執行個體 出現提示時,選擇「停止」。停止執行個體可能需要幾分鐘。

  3. 在具有不同基礎映像檔的相同可用區域中建立新環境:

    1. 完成本建立 EC2 環境節中的步驟以建立新環境。

      注意

      選擇「平台」時,請選取您要移轉環境的目標平台。

    2. 依預設,環境是使用 10 GiB 磁碟區建立的。如果您沒有足夠的空間將檔案從來源磁碟區移至新環境,請完成調整 Amazon EBS 磁碟區大小的為環境使用的 Amazon EBS 磁碟區調整大小程序中的步驟。

  4. 完成下列步驟,將磁碟區與現有執行個體卸離:

    1. 在 [執行個體摘要] 頁面上,選擇 [儲存] 索引標籤並選取磁碟區。所選磁碟區的裝置名稱必須與根裝置詳細資料區段的根裝置名稱中指定的裝置名稱相同。

    2. 在磁碟區詳細資訊頁面上,選擇 [動作] > [卸離磁碟區

    3. 成功卸離磁碟區之後,請選擇 [動作] > [附加磁碟區],然後從下拉式清單中尋找並選取新環境的執行個體。您選取的 Amazon EC2 執行個體名稱必須包含前置詞的 AWS Cloud9 環境名稱。aws-cloud9

  5. 在新環境中開啟 AWS Cloud9 IDE。

  6. 環境載入後,若要識別新連接磁碟區的裝置,請在終端機中執行下列指令:

    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
    注意

    當您在終端機中執行此命令時,輸出會有所不同。

  7. 在環境終端機中完成下列步驟,以掛載現有的磁碟區:

    1. 若要建立要掛載磁碟區分割區的暫存目錄,請執行下列命令:

      MOUNT_POINT=$(mktemp -d)
    2. 根據指lsblk令的範例輸出,指定要掛載之裝置的下列路徑:

      MOUNT_DEVICE=/dev/nvme1n1p1
      注意

      當您在終端機中執行此命令時,輸出會有所不同。

    3. 若要掛接現有的磁碟區,請執行下列命令:

      sudo mount $MOUNT_DEVICE $MOUNT_POINT
    4. 請完成下列步驟,確認現有的磁碟區是否已正確掛載:

      1. 若要確保磁碟區包含在輸出中,請執行下列命令:

        df -h
      2. 若要驗證磁碟區的內容,請執行下列命令:

        ls $MOUNT_POINT/home/ec2-user/environment/
  8. (選擇性) 若要將舊目.c9錄備份至環境終端機中.c9.backup,請執行下列命令:

    cp .c9 .c9.backup

    如果您想要稍後還原組態檔案,可能需要這些備份檔案。

  9. 若要從現有磁碟區複製舊環境,請執行下列命令:

    cp -R $MOUNT_POINT/home/ec2-user/environment ~
    注意

    如有必要,您也可以使用上述指令將檔案或目錄複製到環境目錄之外。

    確定新環境如預期般運作。

  10. 若要卸載先前的裝置,請執行下列兩個指令之一:

    sudo umount $MOUNT_DEVICE
    sudo umount $MOUNT_POINT
  11. 從 [動作] 下拉式清單中選擇 [分離磁碟區],以分離您在步驟 3 中連接的磁碟區。

  12. 您現在可以刪除舊環境及其磁碟區。

    注意

    由於磁碟區不再連接到環境的 Amazon EC2 執行個體,因此您需要手動將其移除。您可以在 [磁碟區詳細資訊] 頁面上選擇刪除來執行此操作。

為環境使用的 Amazon EBS 磁碟區調整大小

  1. 針對您要調整大小的 Amazon EBS 磁碟區開啟與 Amazon EC2 執行個體相關聯的環境。

  2. 在環境的 AWS Cloud9 IDE 中,建立包含下列內容的檔案,然後以副檔名儲存檔案 .sh (例如,resize.sh)。

    注意

    此指令碼適用於連接至執行 AL2023、Amazon Linux 2、Amazon Linux 或Ubuntu伺服器且已設定為使用 IMDSv2 的 EC2 執行個體的 Amazon EBS 磁碟區。

    指令碼也會為在 Nitro 型執行個體上經公開為 NVMe 區塊型儲存設備的 Amazon EBS 磁碟區調整大小。如需以 Nitro 系統為基礎的執行個體清單,請參閱 Amazon EC2 使用者指南中的Nitro基於執行個體。

    #!/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
  3. 從 IDE 的終端機工作階段中,切換至包含 resize.sh 檔案的目錄。然後執行以下其中一個命令,將 20 取代為您要為 Amazon EBS 磁碟區調整的大小 (以 GiB 為單位):

    • bash resize.sh 20
    • chmod +x resize.sh ./resize.sh 20

加密使 AWS Cloud9 用的 Amazon EBS 磁碟區

Amazon EBS 加密功能會將下列資料加密:

  • 磁碟區內的待用資料

  • 所有在磁碟區和執行個體間移動的資料

  • 所有從磁碟區建立的快照

  • 所有從那些快照建立的磁碟區

您可以為 AWS Cloud9 EC2 開發環境使用的 Amazon EBS 磁碟區採取兩種加密選項:

  • Encryption by default (預設加密)– 您可以將 AWS 帳戶 設為強制加密您建立的新 EBS 磁碟區和快照複本。依預設,加密是在 AWS 區域的層級啟用。因此,您無法針對該區域中的個別磁碟區或快照啟用加密。此外,Amazon EBS 會加密您啟動執行個體時建立的磁碟區。因此,您必須先啟用此設定,然後才能建立 EC2 環境。如需詳細資訊,請參閱 Amazon EC2 使用者指南中的預設加密

  • 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 磁碟區

重要

如果您的 AWS Cloud9 IDE 使用預設加密的 Amazon EBS 磁碟區,則的 AWS Identity and Access Management 服務連結角色 AWS Cloud9 需要存取這些 EBS 磁碟區 AWS KMS key 的。如果未提供存取權, AWS Cloud9 IDE 可能無法啟動,並且偵錯可能很困難。

若要提供存取權,請將 AWS Cloud9AWSServiceRoleForAWSCloud9、的服務連結角色新增至 Amazon EBS 磁碟區使用的 KMS 金鑰。如需有關此工作的詳細資訊,請參閱AWS 規範指導模式中建立使用具有預設加密的 Amazon EBS 磁碟區的 AWS Cloud9 IDE

加密 AWS Cloud9 使用的現有 Amazon EBS 磁碟區

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

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

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

注意

下列程序主要說明如何使用客戶管理的金鑰來加密磁碟區。您也可以 AWS 服務 在您的帳戶中使用 a. AWS 受管金鑰 Amazon EBS 的別名為 aws/ebs。如果您選擇此預設選項進行加密,請略過建立客戶管理金鑰的步驟 1。此外,請跳過您更新金鑰政策的步驟 8。這是因為您無法變更 AWS 受管金鑰.

如何加密現有 Amazon EBS 磁碟區
  1. 在 AWS KMS 主控台中,建立對稱 KMS 金鑰。如需詳細資訊,請參閱 AWS Key Management Service 開發人員指南中的建立對稱 KMS 金鑰

  2. 在 Amazon EC2 主控台中,停止環境使用的 Amazon EBS 執行個體。您可以使用主控台或命令列停止執行個體

  3. 在 Amazon EC2 主控台的導覽窗格中,選擇 Snapshots (快照) 為您想要加密的現有磁碟區建立快照

  4. 在 Amazon EC2 主控台的導覽窗格中,選擇 Snapshots (快照) 來複製快照。在 Copy snapshot (複製快照) 對話方塊中,執行下列操作以啟用加密:

    • 選擇 Encrypt this snapshot (加密此快照)。

    • 針對 Master Key (主金鑰),選取您稍早建立的 KMS 金鑰。(如果您使用的是 AWS 受管金鑰,請保留(默認)aws/ebs 設置。)

  5. 從加密快照建立新磁碟區

    注意

    從加密快照建立的新 Amazon EBS 磁碟區會自動經過加密。

  6. 將舊的 Amazon EBS 磁碟區從 Amazon EC2 執行個體分開

  7. 將新的加密磁碟區連接到 Amazon EC2 執行個體

  8. 使用 AWS Management Console 預設檢視、原則檢視或 AWS KMS API 更新 KMS 金鑰的金鑰 AWS Management Console 原則。新增下列金鑰原則陳述式AWSServiceRoleForAWSCloud9,以允許 AWS Cloud9 服務存取 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" } } }
  9. 重新啟動 Amazon EC2 執行個體。如需有關重新啟動 Amazon EC2 執行個體的詳細資訊,請參閱停止並啟動執行個體