在 Elastic Beanstalk 環境中使用自定義 Amazon 機器映像(AMI) - AWS Elastic Beanstalk

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

在 Elastic Beanstalk 環境中使用自定義 Amazon 機器映像(AMI)

本節說明何時考慮使用自訂,AMI並提供在環境中設定和管理自訂AMI的程序。當你創建一個 AWS Elastic Beanstalk 環境中,您可以指定要使用的 Amazon 機器映像 (AMI),而不是平台版本中AMI包含的標準 Elastic Beanstalk。如果您需要安裝許多標準中未包含的軟體,自訂AMI可以縮短執行個體在環境中啟動時的佈建時間AMIs。

使用組態檔案可有效地快速且一致地自訂您的環境。雖然在環境建立和更新期間,套用組態可能會花費很長時間。如果您在組態檔案中執行大量的伺服器組態,您可以自訂已有您需要AMI的軟體和組態,以縮短此時間。

自訂AMI也可讓您變更難以實作或需要很長時間才能套用至組態檔案的低階元件 (例如 Linux 核心)。若要建立自訂項目AMI,請AMI在 Amazon 中啟動 Elastic Beanstalk 平台EC2,根據您的需求自訂軟體和組態,然後停止執行個體並AMI從中儲存。

建立自訂 AMI

您可以使用 EC2Image Builder 來建立和管理自訂AMIs作為這些程序的替代方案。如需詳細資訊,請參閱影 Image Builder 使用指南

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

    指定 AWS 您想要使用自訂的區域AMI,並以應用程式所依據的 Elastic Beanstalk 平台取代平台ARN和版本號碼。

    範例 – Mac 作業系統/Linux 作業系統
    $ aws elasticbeanstalk describe-platform-version --region us-east-2 \ --platform-arn "arn:aws:elasticbeanstalk:us-east-2::platform/Node.js 20 running on 64bit Amazon Linux 2023/6.1.7" \ --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 2022/2.15.3" --query PlatformDescription.CustomAmiList [ { "VirtualizationType": "pv", "ImageId": "" }, { "VirtualizationType": "hvm", "ImageId": "ami-020ae06fdda6a0f66" } ]
  2. 請記錄結果中看起來像是 ami-020ae06fdda6a0f66ImageId 值。

值為平台版本、EC2執行個體架構AMI的 Elastic Beanstalk 庫存,以及 AWS 與您的應用程式相關的地區。如果您需要AMIs為多個平台,架構或 AWS 區域,重複此過程以確定每個組合的正確基礎AMI。

注意

請勿AMI從已在 Elastic Beanstalk 環境中啟動的執行個體建立。Elastic Beanstalk 會在佈建期間變更執行個體,這些執行個體可能會導致儲存的問題。AMI如果從 Elastic Beanstalk 環境中的執行個體儲存映像,也會製作已經部署到固定映像部分之執行個體的應用程式版本。

對於 Linux,也可以AMI從不是由 Elastic Beanstalk 發布AMI的社區創建自定義。您可以使用最新的 Amazon Linux AMI 作為起點。當您使用不受 Elastic Beanstalk 管理AMI的 Linux 啟動環境時,Elastic Beanstalk 會嘗試安裝平台軟體 (語言、架構、代理伺服器等) 和其他元件,以支援增強 Health 報告等功能。

注意

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

儘管 Elastic Beanstalk 可以使用不AMI是由 Elastic Beanstalk 管理的,但是 Elastic Beanstalk 安裝缺少的組件導致佈建時間的增加可以減少或消除首先創建自定義的好處。AMI其他的 Linux 版本也許可以在進行一些故障排除後使用,但並未正式支援。如果您的應用程式需要特定的 Linux 發行版本,一個替代方法是建立 Docker 影像,然後在 Elastic Beanstalk 上的 Docker 平台多容器 Docker 平台上執行此影像。

建立自訂的步驟 AMI
  1. 在打開 Amazon EC2 控制台https://console.aws.amazon.com/ec2/

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

  3. 如果您確定了基礎 Elastic BeanstalkAMI(使用describe-platform-version)或 Amazon LinuxAMI,請在搜索框中輸入其 AMI ID。然後按 Enter

    您也可以在清單中搜尋適合您需求AMI的其他社群。

    注意

    我們建議您選擇使AMI用HVM虛擬化。這些AMIs顯示虛擬化類型:hvm 在其描述中。

    如需詳細資訊,請參閱 Amazon EC2 使用者指南中的虛擬化類型

  4. 選擇 「選取」以選取AMI。

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

  6. (針對已淘汰的 Amazon Linux AMI (AL1) 平台) 如果您的環境在支援的 Linux 平台或 Windows 平台上執行,請略過此步驟。

    展開「進階詳細資料」區段,然後將下列文字貼到「使用者資料」欄位中。

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

    存放庫版本號碼是名AMI稱中的年份和月份版本。例如,AMIs根據 2015 年 3 月發行的 Amazon Linux 有一個存儲庫版本號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 平台分支機構上使用 Elastic Beanstalk 的自AMI定義設置(在 Amazon Linux 2 之前),則需要此設置。

    repo_upgrade 設定會停用自動安裝安全性更新的功能。它需要使用定制AMI與 Elastic Beanstalk。

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

  8. 使用或 Connect 至執行個SSH體RDP。

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

  10. (視窗平台) 執行EC2Config服務系統。如需相關資訊EC2Config,請參閱使用EC2Config服務設定 Windows 執行個體。請確定 Sysprep 已設定為產生隨機密碼,可從 AWS Management Console.

  11. 在 Amazon 主EC2控台中,停止EC2執行個體。然後在「執行個體動作」功能表上選擇「建立映像檔」(EBSAMI)

  12. 為了避免產生額外 AWS 收費,終止EC2實例

在 Elastic Beanstalk AMI 環境中使用您的自訂
  1. 開啟彈性魔豆控制台,然後在「區域」列表中選擇您的 AWS 區域.

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

    注意

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

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

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

  5. 對於 AMIID,請輸入您的自訂 AMI ID。

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

當您使用自訂建立新環境時AMI,您應該使用與建立基礎相同的平台版本AMI。

使用自訂管理環境 AMI

平台更新

使用自訂時AMI,無論更新是手動套用還是透過受管平台更新套用,Elastic Beanstalk 都會AMI在平台版本更新時繼續在環境中使用相同的自訂。環境將會重置為使用新平台版本AMI的庫存。

我們建議您AMI根據新平台版本AMI的庫存建立新的自訂。這樣做會套用新平台版本中可用的修補程式,並將因為不相容的套件或程式庫版本而導致的部署失敗降到最低。

如需有關建立新自訂的詳細資訊AMI,請參閱本主題建立自訂 AMI前面的。

移除自訂 AMI

如果您想要從環境中移除AMI自訂,並將其重設AMI為使用該環境平台版本的庫存,請使用以下CLI指令。

aws elasticbeanstalk update-environment \ --application-name my-application \ --environment-name my-environment \ --region us-east-1 \ --options-to-remove Namespace=aws:autoscaling:launchconfiguration,OptionName=ImageId
注意

為避免服務中斷,請先使用庫存測試應用程式,AMI再將此變更套用至生產環境。

清理自訂 AMI

當您完成自定義操作AMI並且不再需要它來啟動 Elastic Beanstalk 環境時,請考慮清理它以最大程度地降低存儲成本。清理自定義AMI涉及從 Amazon 註銷它EC2並刪除其他相關資源。如需詳細資訊,請參閱取消註冊 Linux AMI 或取消註冊視窗。AMI