您 Elastic Beanstalk 環境的 Amazon EC2 執行個體 - AWS Elastic Beanstalk

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

您 Elastic Beanstalk 環境的 Amazon EC2 執行個體

建立網頁伺服器環境時,請 AWS Elastic Beanstalk 建立一或多個 Amazon Elastic Compute Cloud (Amazon EC2) 虛擬機器 (稱為執行個體)。

您環境中的執行個體會設定為可在您選擇的平台上執行 Web 應用程式。您可以在建立環境時,或在已運作後,變更您環境執行個體的各種屬性和行為。或者,您可以透過修改部署至環境的原始碼來進行這些變更。如需詳細資訊,請參閱 組態選項

注意

您環境內的 Auto Scaling 群組可管理執行您應用程式的 Amazon EC2 執行個體。當您執行此頁面所述的組態變更時,啟動組態也會隨著變動。啟動組態是 Amazon EC2 啟動範本或 Auto Scaling 群組啟動組態的資源。此變更需要更換所有執行個體,此外也會觸發滾動更新不可變更新,實際情形取決於您所設定的項目。

Elastic Beanstalk 支援多種 Amazon EC2 執行個體購買選項:「隨需執行個體」、「預留執行個體」和「Spot 執行個體」。隨需執行個體是一項 pay-as-you-go資源,使用時不需要長期承諾。預留執行個體是預先購買的計費折扣,會自動套用到您環境中相符的隨需執行個體。Spot 執行個體是未使用的 Amazon EC2 執行個體,其使用價格低於隨需定價。您可以設定單一選項,藉此在環境中啟用 Spot 執行個體。您可以使用其他選項,設定 Spot 執行個體使用方式,包括混合使用隨需與 Spot 執行個體。如需詳細資訊,請參閱 Auto Scaling 群組

Amazon EC2 執行個體類型

當您建立新環境時,Elastic Beanstalk 會根據您選擇的 Amazon EC2 執行個體類型來佈建 Amazon EC2 執行個體。您選擇的執行個體類型會決定執行您執行個體的主機硬體。EC2 執行個體類型可依據其採取的處理器架構來分類。Elastic Beanstalk 支援以下列處理器架構為基礎的執行個體類型: AWS 引力同 64 位元臂架構 (arm64)、64 位元架構 (x86) 和 32 位元架構 (i386)。當您建立新環境時,Elastic Beanstalk 預設會選取 x86 處理器架構。

注意

大多數 Elastic Beanstalk 平台都不再支援 i386 32 位元架構。建議您改為選擇 x86 或 arm64 架構類型。Elastic Beanstalk 會在 aws:ec2:instances 命名空間中提供 i386 處理器執行個體類型的組態選項

指定 Elastic Beanstalk 環境組態中的所有執行個體類型都必須採取相同類型的處理器架構。假設您在已擁有 t2.medium 執行個體類型 (以 x86 架構為基礎) 的現有環境中新增執行個體類型,您只能新增相同架構的其他執行個體類型,例如 t2.small。如果您想要以不同架構的執行個體類型取代現有的執行個體類型,可以這麼做。但請確定命令中的所有執行個體類型都是以相同類型的架構為基礎。

Amazon EC2 推出相容的執行個體類型後,Elastic Beanstalk 會不斷新增對這些執行個體類型的相關支援。如需有關可用執行個體類型的資訊,請參閱 Amazon EC2 使用者指南中的執行個體類型或 Amazon EC2 使用者指南中的執行個體類型。

注意

Elastic Beanstalk 現在在所有支援重力彈性的區域中,在所有最新的 Amazon Linux 2 平台上提供重力子的支援。 AWS 如需進一步了解如何使用以 arm64 為基礎的執行個體類型建立 Elastic Beanstalk 環境,請參閱設定您環境的 Amazon EC2 執行個體

建立在 arm64 架構上執行 Amazon EC2 執行個體的新環境,並使用 Elastic Beanstalk 中的部署選項,將現有的應用程式遷移到該環境。

若要進一步了解以重力通 arm64 為基礎的處理器,請參閱下列資源: AWS

設定您環境的 Amazon EC2 執行個體

您可以在 Elastic Beanstalk 主控台中建立或修改 Elastic Beanstalk 環境的 Amazon EC2 執行個體組態。

注意

雖然 Elastic Beanstalk 主控台不提供變更現有環境之處理器架構的選項,但您可以使用. AWS CLI如需指令範例,請參閱使用設定環境的 AWS EC2 執行個體 AWS CLI

建立環境時透過 Elastic Beanstalk 主控台設定 Amazon EC2 執行個體
  1. 開啟彈性魔豆控制台,然後在區域清單中選取您的. AWS 區域

  2. 在導覽窗格中,選擇 Environments (環境)

  3. 選擇 Create a new environment (建立新環境) 以開始建立您的環境。

  4. 在精靈的主頁上,在選擇 Create environment (建立環境) 之前,選擇 Configure more options (設定更多選項)

  5. Instances (執行個體) 組態類別中,選擇 Edit (編輯)。變更此類別中的設定,然後選擇 Apply (套用)。如需設定說明,請參閱本頁的執行個體類別設定一節。

  6. Capacity (容量) 組態類別中,選擇 Edit (編輯)。變更此類別中的設定,然後選擇 Continue (繼續)。如需設定說明,請參閱本頁的容量類別設定一節。

    選取處理器架構

    向下捲動至 Processor (處理器),選取 EC2 執行個體的處理器架構。主控台會根據您先前在 Create environment (建立環境) 面板中選擇的平台,列出該平台所支援的處理器架構。

    如果您沒有看到所需的處理器架構,請返回組態類別清單,選取支援該架構的平台。在 Modify Capacity (修改容量) 面板中選擇 Cancel (取消)。接著,選擇 Change platform version (變更平台版本),選擇新的平台設定。接下來,在 Capacity (容量) 組態類別中選擇 Edit (編輯),再次查看處理器架構的各種選擇。

    Elastic Beanstalk 容量組態視窗中執行環境所採用的 Amazon EC2 執行個體設定
  7. 選擇 Save (儲存),然後針對您環境所需對其他組態做變更。

  8. 選擇 Create environment (建立環境)。

在 Elastic Beanstalk 主控台中設定執行環境的 Amazon EC2 執行個體
  1. 開啟彈性魔豆控制台,然後在區域清單中選取您的. AWS 區域

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

    注意

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

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

  4. Instances (執行個體) 組態類別中,選擇 Edit (編輯)。變更此類別中的設定,然後選擇 Apply (套用)。如需設定說明,請參閱本頁的執行個體類別設定一節。

  5. Capacity (容量) 組態類別中,選擇 Edit (編輯)。變更此類別中的設定,然後選擇 Continue (繼續)。如需設定說明,請參閱本頁的容量類別設定一節。

執行個體類別設定

以下與 Amazon EC2 執行個體相關的設定適用於 Instances (執行個體) 組態類別。

Elastic Beanstalk 執行個體組態視窗上的 Amazon EC2 執行個體設定

監控間隔

根據預設,環境中的執行個體會以五分鐘的間隔將基本運作狀態指標發佈到 Amazon CloudWatch ,無需額外費用。

如需更詳細的報告,您可以將監視間隔設定為 1 分鐘,以增加環境中資源將基本健全狀況指標發佈到 CloudWatch at 的頻率。 CloudWatch 服務費用適用於一分鐘間隔指標。有關更多信息,請參閱 Amazon CloudWatch

根磁碟區 (開機裝置)

您環境中的每個執行個體均透過根磁碟區進行設定。根磁碟區為連接至執行個體的 Amazon EBS 區塊型儲存設備,以存放作業系統、程式庫、指令碼和您應用程式的原始碼。所有平台預設會使用一般用途的 SSD 區塊型儲存設備。

您可修改根磁碟區類型以使用磁帶儲存或佈建 IOPS SSD 磁碟區類型,並視需要增加磁碟區大小。以佈建 IOPS 磁碟區而言,您亦必須選取欲佈建的 IOPS 數量。輸送量只適用於 gp3 SSD 磁碟區類型。您可以輸入要佈建的所需輸送量,範圍可介於每秒 125 到 1000 MiB (MiB/s) 之間。選取滿足您的效能和價格要求的磁碟區類型。

如需詳細資訊,請參閱 Amazon EC2 使用者指南中的 Amazon EBS 磁碟區類型Amazon EBS 產品詳細資訊。

執行個體中繼資料服務

執行個體中繼資料服務 (IMDS) 是一種執行個體上的元件,可供執行個體上的程式碼用來安全地存取執行個體中繼資料。程式碼可以從以下兩種方法擇一使用,從執行中的執行個體存取執行個體中繼資料。這兩種方法分別為執行個體中繼資料服務第 1 版 (IMDSv1) 或執行個體中繼資料服務第 2 版 (IMDSv2)。IMDSv2 更安全。停用 IMDSv1 以強制執行 IMDSv2。如需詳細資訊,請參閱 在您的環境執行個體上設定執行個體中繼資料服務

注意

此組態頁面上的 IMDS 區段只會在支援 IMDSv2 的平台版本中顯示。

安全群組

您的執行個體所連接的安全群組能決定哪些流量可以傳入執行個體,以及哪些流量可以傳出執行個體。Elastic Beanstalk 建立的安全群組,可允許 HTTP (80) 和 HTTPS (443) 標準連接埠上來自負載平衡器的流量。

您可指定其他已建立的安全群組,以允許其他連接埠上或其他來源的流量。例如,您可建立 SSH 存取的安全群組,允許連接埠 22 接收受限 IP 地址範圍所傳入的流量;或者也能建立安全群組,允許僅限您可以存取的堡壘主機所傳送的流量,以提升安全性。

注意

欲允許環境 A 和 B 執行個體間的流量,您可將規則新增至 Elastic Beanstalk 連接到環境 B 的安全群組。然後您便可指定 Elastic Beanstalk 連接到環境 A 的安全群組,如此即可允許環境 A 執行個體的流量出入。然而,此作法會在兩個安全群組間建立相依性。若您之後嘗試終止環境 A,Elastic Beanstalk 無法刪除環境的安全群組,因為環境 B 的安全群組與其相依。

因此,建議您先建立獨立的安全群組,再將安全群組連接至環境 A,並於環境 B 安全群組的規則內指定該安全群組。

如需有關 Amazon EC2 安全群組的詳細資訊,請參閱 Amazon EC2 使用者指南中的 Amazon EC2 安全群組

容量類別設定

以下與 Amazon EC2 執行個體相關的設定適用於 Capacity (容量) 組態類別。

Elastic Beanstalk 容量組態視窗中建立環境所採用的 Amazon EC2 執行個體設定

執行個體類型

Instance types (執行個體類型) 設定能決定執行您應用程式所需啟動的 Amazon EC2 執行個體。此組態頁面會顯示 Instance types (執行個體類型) 清單。您可以選取一或多個執行個體類型。Elastic Beanstalk 主控台會根據您為環境所設定的處理器架構,僅顯示相關的執行個體類型,因此您只能新增相同處理器架構的執行個體類型,

注意

雖然 Elastic Beanstalk 主控台不提供變更現有環境之處理器架構的選項,但您可以使用. AWS CLI如需指令範例,請參閱使用設定環境的 AWS EC2 執行個體 AWS CLI

所選的執行個體,必須充分配置以執行負載量大的應用程式,但功能無須過大以至於多數時間都處於閒置狀態。若以開發為目的,t2 系列的執行個體可提供中等程度的能力,可於短時間內大幅提升效能。若是大規模、高可用性的應用程式,請使用執行個體集區,以確保單一執行個體故障不會對容量產生太大的影響。首先,請使用可讓您在一般時間中等負載下執行五個執行個體的執行個體類型。若任何執行個體故障,其他執行個體可吸收剩餘的流量。若流量於尖峰時間開始上升,容量緩衝區亦可讓環境有時間擴展。

如需 Amazon EC2 執行個體系列和類型的詳細資訊,請參閱 Amazon EC2 使用者指南中的執行個體類型或 Amazon EC2 使用者指南中的執行個體類型。若要判斷哪些執行個體類型符合您的需求及其支援的區域,請參閱 Amazon EC2 使用者指南中的可用執行個體類型或 Amazon EC2 使用者指南中的可用執行個體類型。

AMI ID

Amazon Machine Image (AMI) 是 Amazon Linux 或 Windows Server 的機器映像,Elastic Beanstalk 會用其啟動您環境中的 Amazon EC2 執行個體。Elastic Beanstalk 提供的機器映像內含執行您應用程式所需的工具和資源。

Elastic Beanstalk 會根據您所選的區域、平台版本和處理器架構,為您的環境選取預設 AMI。若您已建立自訂 AMI,請將預設的 AMI ID 更換成您預設的自訂 AMI ID。

使用設定環境的 AWS EC2 執行個體 AWS CLI

使用命 AWS 令列介面 (AWS CLI),透過命令列殼層中的指令建立和設定 Elastic Beanstalk 環境。本節會提供 create-environmentupdate-environment 命令的使用範例。

前兩個範例都是建立新環境。該命令會指定以 arm64 處理器架構為基礎的 Amazon EC2 執行個體類型 t4g.small。Elastic Beanstalk 會根據區域、平台版本和執行個體類型,為 EC2 執行個體提供預設的映像 ID (AMI)。執行個體類型會與處理器架構相互對應。solution-stack-name 參數會套用至平台版本。

範例 1 — 建立以 arm64 為基礎的新環境 (命名空間選項內嵌)
aws elasticbeanstalk create-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --solution-stack-name "64bit Amazon Linux 2 v3.4.7 running Docker" \ --option-settings \ Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role \ Namespace=aws:ec2:instances,OptionName=InstanceTypes,Value=t4g.small

或者,您也可以使用 options.json 檔案來指定命名空間選項,而非透過內嵌方式一併包含於其中。

範例 2 — 建立以 arm64 為基礎的新環境 (命名空間選項位於 options.json 檔案中)
aws elasticbeanstalk create-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --solution-stack-name "64bit Amazon Linux 2 v3.4.7 running Docker" \ --option-settings file://options.json
### example options.json ### [ { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "IamInstanceProfile", "Value": "aws-elasticbeanstalk-ec2-role" }, { "Namespace": "aws:ec2:instances", "OptionName": "InstanceTypes", "Value": "t4g.small" } ]

接下來的兩個範例會使用 update-environment 命令,更新現有環境的組態。在這個範例中,我們要新增另一個同樣是以 arm64 處理器架構為基礎的執行個體類型。為現有環境新增的所有執行個體類型都必須具備相同的處理器架構。如果您想要以不同架構的執行個體類型取代現有的執行個體類型,可以這麼做。但請確定命令中的所有執行個體類型都具有相同類型的架構。

範例 3 — 更新以 arm64 為基礎的現有環境 (命名空間選項內嵌)
aws elasticbeanstalk update-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --solution-stack-name "64bit Amazon Linux 2 v3.4.7 running Docker" \ --option-settings \ Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role \ Namespace=aws:ec2:instances,OptionName=InstanceTypes,Value=t4g.small,t4g.micro

或者,您也可以使用 options.json 檔案來指定命名空間選項,而非透過內嵌方式一併包含於其中。

範例 4 — 更新以 arm64 為基礎的現有環境 (命名空間選項位於 options.json 檔案)
aws elasticbeanstalk update-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --solution-stack-name "64bit Amazon Linux 2 v3.4.7 running Docker" \ --option-settings file://options.json
### example options.json ### [ { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "IamInstanceProfile", "Value": "aws-elasticbeanstalk-ec2-role" }, { "Namespace": "aws:ec2:instances", "OptionName": "InstanceTypes", "Value": "t4g.small, t4g.micro" } ]

接下來的兩個範例會顯示更多 create-environment 命令,但不會提供 InstanceTypes 的值。若未指定 InstanceTypes 值,Elastic Beanstalk 預設為採用 x86 處理器架構。環境 EC2 執行個體的映像 ID (AMI) 會根據區域、平台版本和預設的執行個體類型而採取不同預設。執行個體類型會與處理器架構相互對應。

範例 5 — 建立以 x86 為基礎的新環境 (命名空間選項內嵌)
aws elasticbeanstalk create-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --solution-stack-name "64bit Amazon Linux 2 v3.4.7 running Docker" \ --option-settings \ Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role

或者,您也可以使用 options.json 檔案來指定命名空間選項,而非透過內嵌方式一併包含於其中。

範例 6 — 建立以 x86 為基礎的新環境 (命名空間選項位於 options.json 檔案中)
aws elasticbeanstalk create-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --solution-stack-name "64bit Amazon Linux 2 v3.4.7 running Docker" \ --option-settings file://options.json
### example options.json ### [ { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "IamInstanceProfile", "Value": "aws-elasticbeanstalk-ec2-role" } ]

首波 Graviton arm64 環境的適用建議

注意

本節資訊僅適用於部分客戶。如果您在 2021 年 11 月 24 日前建立新環境並採用以 Graviton arm64 為基礎的執行個體類型,本節的資訊可能就適合您參考。

從 2021 年 10 月和 11 月開始,Elastic Beanstalk 開始針對某些區域和平台版本陸續增加 Graviton arm64 處理器的相關支援。本次首波支援已於 2021 年 10 月 13 日10 月 21 日11 月 19 日AWS Elastic Beanstalk 版本備註中宣布。如果您是建立以 arm64 為基礎的環境,指示會告訴您使用版本備註中提供的自訂 AMI 來設定執行個體。既然現在已針對 Graviton arm64 提供更多支援,Elastic Beanstalk 會在最新的平台版本中,針對 arm64 執行個體類型使用預設的 AMI。

如果您使用首波支援所提供的自訂 AMI 建立環境,建議您執行下列動作,以維持環境健全且正常運作。

  1. 從您的環境中移除自訂 AMI。

  2. 使用最新的平台版本更新環境。

  3. 設定受管平台更新,在排定的維護時段自動升級至平台的最新版本。

注意

Elastic Beanstalk 不會自動更換自訂 AMI。您必須在步驟 1 中刪除自訂 AMI,這樣您在步驟 2 中執行下一項平台更新作業時,平台才會予以更新。

接下來的程序會引導您完成這些步驟。這 AWS CLI 些範例適用於使用下列資訊建立的環境。

aws elasticbeanstalk create-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --solution-stack-name "64bit Amazon Linux 2 v3.4.7 running Docker" \ --option-settings \ Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role \ Namespace=aws:ec2:instances,OptionName=InstanceTypes,Value=t4g.small \ Namespace=aws:autoscaling:launchconfiguration,OptionName=ImageId,Value=ami-0fbdb88ce139244bf
更新在首波 Graviton arm64 支援下建立的 arm64 環境
  1. 執行 update-environment以移除自訂 AMI 設定。

    aws elasticbeanstalk update-environment \ --region us-east-1 \ --environment-name my-env \ --options-to-remove \ Namespace=aws:autoscaling:launchconfiguration,OptionName=ImageId
  2. 使用最新的平台版本更新環境。選擇下列任一選項。

    • 主控台選項 — 使用 Elastic Beanstalk 主控台更新平台版本。如需詳細資訊,請參閱更新您環境的平台版本

    • AWS CLI 選項:執行 AWS 更新環境命令,指定最近可用的平台版本。

      aws elasticbeanstalk update-environment \ --region us-east-1 \ --environment-name my-env \ --solution-stack-name "64bit Amazon Linux 2 v3.4.9 running Docker"
      注意

      list-available-solution-stacks命令提供您在某個 AWS 地區中帳戶可用的平台版本列表。

      aws elasticbeanstalk list-available-solution-stacks --region us-east-1 --query SolutionStacks
  3. 使用 Elastic Beanstalk 主控台為您的環境設定受管平台更新。受管平台更新可以在排定的維護時段,將您的環境自動升級至最新的平台版本。更新期間,您的應用程式仍能正常提供服務。如需詳細資訊,請參閱受管平台更新

aws:autoscaling:launchconfiguration 命名空間

您可以在 aws:autoscaling:launchconfiguration 命名空間中使用 configuration options (組態選項) 設定您環境的執行個體,包括主控台尚未提供的其他選項,都能在此使用。

以下組態檔案範例會使用本主題中提及的基本組態選項。例如,其會使用在 IMDS 中討論的 DisableIMDSv1 選項。也會使用在 安全 中討論的 EC2KeyNameIamInstanceProfile 選項,以及主控台不提供的 BlockDeviceMappings 選項。

option_settings: aws:autoscaling:launchconfiguration: SecurityGroups: my-securitygroup MonitoringInterval: "1 minute" DisableIMDSv1: false EC2KeyName: my-keypair IamInstanceProfile: "aws-elasticbeanstalk-ec2-role" BlockDeviceMappings: "/dev/sdj=:100,/dev/sdh=snap-51eef269,/dev/sdb=ephemeral0"

您可以使用 BlockDeviceMappings 來為執行個體設定其他區塊型儲存設備。如需詳細資訊,請參閱 Amazon EC2 使用者指南中的區塊裝置對應

EB CLI 和 Elastic Beanstalk 主控台會為前述選項套用建議的數值。若您想要使用組態檔進行相同的設定,您必須移除這些設定。如需詳細資訊,請參閱「建議值」。