使用自訂的 Amazon Machine Image (AMI) - AWS Elastic Beanstalk

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

使用自訂的 Amazon Machine Image (AMI)

建立 AWS Elastic Beanstalk 環境時,您可以指定要使用的 Amazon 機器映像 (AMI),而不是平台版本中包含的標準 Elastic Beanstalk AMI。如果您需要安裝標準 AMI 中未包含的許多軟體,則自訂 AMI 可在您環境中啟動執行個體時,縮短佈建的時間。

使用組態檔案最能快速一致地設定和自訂您的環境。不過,在建立和更新環境時,套用組態可能會需要很長的時間。如果您在組態檔中執行許多伺服器組態,可以透過自訂 AMI (其中包含您所需的軟體和設定),來縮短執行作業的時間。

自訂 AMI 也可讓您變更低層級元件 (例如,Linux 核心),這類元件難以實作或需要花費很長的時間來套用至組態檔案。若要建立自訂的 AMI,請在 Amazon EC2 中啟動 Elastic Beanstalk 平台的 AMI、根據您的需要來自訂軟體和設定,然後停止執行個體和儲存產生的 AMI。

建立自訂 AMI

識別基礎 Elastic Beanstalk AMI
  1. 在命令視窗中,執行如下所示的命令。若要取得更多資訊,請參閱《指AWS CLI 令參考》describe-platform-version中的。

    指定您要使用自定義 AMI 的 AWS 區域,並將平台 ARN 和版本號替換為您的應用程序所依據的 Elastic Beanstalk 平台。

    範例 – Mac 作業系統/Linux 作業系統
    $ aws elasticbeanstalk describe-platform-version --region us-east-2 \ --platform-arn "arn:aws:elasticbeanstalk:us-east-2::platform/Tomcat 8.5 with Java 8 running on 64bit Amazon Linux/3.1.6" \ --query PlatformDescription.CustomAmiList [ { "VirtualizationType": "pv", "ImageId": "" }, { "VirtualizationType": "hvm", "ImageId": "ami-020ae06fdda6a0f66" } ]
    範例 – Windows 作業系統
    C:\> aws elasticbeanstalk describe-platform-version --region us-east-2 --platform-arn"arn:aws:elasticbeanstalk:us-east-2::platform/IIS 10.0 running on 64bit Windows Server 2019/2.6.4" --query PlatformDescription.CustomAmiList [ { "VirtualizationType": "pv", "ImageId": "" }, { "VirtualizationType": "hvm", "ImageId": "ami-020ae06fdda6a0f66" } ]
  2. 請記錄結果中看起來像是 ami-020ae06fdda6a0f66ImageId 值。

值為與您的應用程式相關的平台版本、EC2 執行個體架構和 AWS 區域的存貨 Elastic Beanstalk AMI。如果您需要為多個平台、架構或 AWS 區域建立 AMI,請重複此程序以識別每個組合的正確基礎 AMI。

備註
  • 請勿利用 Elastic Beanstalk 環境中已啟動的執行個體,來建立 AMI。Elastic Beanstalk 會在佈建時對執行個體進行變更,而這可能會在儲存的 AMI 中造成問題。如果從 Elastic Beanstalk 環境中的執行個體儲存映像,也會製作已經部署到固定映像部分之執行個體的應用程式版本。

  • 我們建議您一律使用最新的平台版本。當您更新至新平台版本時,我們也建議您將自訂 AMI 重設為新平台版本的 AMI。如此可大幅減少因不相容的套件或程式庫版本所導致的部署失敗。

對於 Linux,您也可以利用 Elastic Beanstalk 未發佈的社群 AMI,來建立自訂的 AMI。您可以使用最新的 Amazon Linux AMI 做為起點。當您以非 Elastic Beanstalk 管理之 Linux AMI 啟動環境時,Elastic Beanstalk 會嘗試安裝平台軟體 (語言、框架、代理伺服器等) 和其他元件以支援功能,例如增強型運作狀態報告

注意

以 Windows 伺服器為基礎的自訂 AMI 需要從 describe-platform-version 傳回的庫存 Elastic Beanstalk AMI,如先前步驟 1 所示。

雖然 Elastic Beanstalk 可使用非 Elastic Beanstalk 管理的 AMI,但因為 Elastic Beanstalk 安裝缺少元件所造成的佈建時間增加,會降低或消除一開始就建立自訂 AMI 時所預期帶來的效益。其他的 Linux 版本也許可以在進行一些故障排除後使用,但並未正式支援。如果您的應用程式需要特定的 Linux 發行版本,一個替代方法是建立 Docker 影像,然後在 Elastic Beanstalk 上的 Docker 平台多容器 Docker 平台上執行此影像。

若要建立自訂的 AMI
  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 選擇 Launch Instance (啟動執行個體)

  3. 選擇 Community AMI (社群 AMI)。

  4. 如果您識別了Elastic Beanstalk AMI (使用 describe-platform-version) 或 Amazon Linux AMI,請搜尋方塊中輸入其 AMI ID。然後按 Enter

    您也可以搜尋清單,來尋找符合您需求的其他社群 AMI。

    注意

    我們建議您選擇使用 HVM 虛擬化的 AMI。這些 AMI 會在描述中顯示 Virtualization type: hvm (虛擬化類型:hvm)

    具備 EC2 主控台所列 HVM 虛擬化類型的 AMI

    如需執行個體虛擬化類型的詳細資訊,請參閱 Amazon EC2 使用者指南中的 Linux AM I 虛擬化類型或 Amazon EC2 使用者指南中的 Windows AMI 虛擬化類型

  5. 選擇 Select (選取) 來選擇 AMI。

  6. 選取執行個體類型,然後選擇 Next: Configure Instance Details (下一步:設定執行個體的詳細資訊)

  7. (若為 Linux 平台) 展開 Advanced Details (進階詳細資訊) 的區段,並將下列的文字內容貼入 User Data (使用者資料)欄位中。

    #cloud-config repo_releasever: repository version number repo_upgrade: none

    儲存庫版本編號代表 AMI 名稱中的版本年份和月份。例如,採用 Amazon Linux 2015 年 3 月版的 AMI,會具有 2015.03 的儲存庫版本編號。對於 Elastic Beanstalk 映像,這符合您平台版本解決方案堆疊名稱中所顯示的日期 (根據 Amazon Linux AMI,先前為 Amazon Linux 2)。

    注意

    repo_releasever設定會設定 Amazon Linux lock-on-launch AMI 的功能。這會導致 AMI 在啟動時使用固定的特定儲存庫版本。Amazon Linux 2 不支援此功能 — 如果您的環境使用目前的 Amazon Linux 2 平台分支,則請勿指定。如果您只在 Amazon Linux AMI 平台分支上將自訂 AMI 搭配 Elastic Beanstalk 使用 (先前為 Amazon Linux 2),則需要此設定。

    repo_upgrade 設定會停用自動安裝安全性更新的功能。如果要將自訂 AMI 搭配 Elastic Beanstalk 使用,需執行這兩項動作。

  8. 繼續透過精靈來啟動 EC2 執行個體。出現提示時,請選擇您有權存取的金鑰對,以連接到執行個體來進行後續步驟。

  9. 使用 SSH 或 RDP 來連接到執行個體

  10. 進行任何所需的自訂。

  11. (Windows 平台) 執行 EC2Config 服務 Sysprep。有關 EC2Config 的詳細資訊,請參閱使用 EC2Config 服務來設定 Windows 執行個體。請確定將 Sysprep 設定為產生隨機密碼,此密碼可以從 AWS Management Console擷取。

  12. 在 Amazon EC2 主控台,停止 EC2 執行個體。然後在 Instance Actions (執行個體動作) 功能表中,選擇 Create Image (EBS AMI) (建立映像 (EBS AMI))

  13. 為避免產生額外 AWS 費用,請終止 EC2 執行個體

若要在 Elastic Beanstalk 環境使用您的自訂 AMI
  1. 開啟彈性魔豆控制台,然後在區域清單中選取您的. AWS 區域

  2. 在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。

    注意

    如果您有許多環境,請使用搜尋列來篩選環境清單。

  3. 在導覽窗格中,選擇 Configuration (組態)。

  4. Capacity (容量) 組態類別中,選擇 Edit (編輯)

  5. 如需 AMI ID,請輸入您的自訂 AMI ID。

  6. 若要儲存變更,請選擇頁面底部的儲存變更

當您使用自訂的 AMI 來建立新的環境時,您應該使用做為基礎來建立 AMI 時所使用的相同平台版本。如果您稍後將平台更新套用到使用自訂 AMI 的環境,Elastic Beanstalk 會嘗試在開機載入作業期間套用程式庫與組態更新。

清除自訂 AMI

當您完成自訂 AMI 且不需要再啟動 Elastic Beanstalk 環境,請考慮將其清除,以將儲存成本降到最低。清除自訂 AMI 涉及從 Amazon EC2 取消註冊,並刪除其他關聯的資源。如需詳細資訊,請參閱取消註冊您的 Linux AMI取消註冊您的 Windows AMI