View a markdown version of this page

Beanstalk 叢集環境的組態選項 - AWS Elastic Beanstalk

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

Beanstalk 叢集環境的組態選項

Beanstalk 叢集環境是透過此頁面上的十二個命名空間設定。它們是 Beanstalk 叢集環境接受的唯一命名空間。中的傳統命名空間會Beanstalk Standard 環境的組態選項設定 Beanstalk 標準環境且不適用,並將其中一個傳遞至 Beanstalk 叢集環境會傳回 ,InvalidParameterValueException而不是被忽略。

如需設定這些選項的方式,以及 Elastic Beanstalk 如何解決這些選項,請參閱 組態選項。

注意

預設欄提供 為 選項DescribeConfigurationOptions公告的值。在 Elastic Beanstalk 未公告預設值的情況下套用值時,描述會指出這一點。

aws:elasticbeanstalk:eks

為執行您環境的 Amazon EKS 叢集設定 IAM 角色。您提供這兩個角色,而 Elastic Beanstalk 會在您建立環境時要求這些角色。您選取的子網路會決定環境聯結的叢集,如果這些角色不符合該叢集註冊的角色,則 Elastic Beanstalk 會拒絕請求。如需主控台建立的角色名稱、其信任的服務及其政策,請參閱 Beanstalk 叢集的許可。

環境也需要可觀測性角色,而且可以採用選用的應用程式角色。這兩個設定都在aws:elasticbeanstalk:eks:environment命名空間中,而不是這個。請參閱 aws:elasticbeanstalk:eks:environment。

命名空間:aws:elasticbeanstalk:eks
名稱 描述 預設 有效值

cluster-role

Amazon EKS 為叢集擔任之 IAM 角色的 ARN。

無。您必須提供值。

IAM 角色 ARN

node-role

叢集 Amazon EC2 節點擔任之 IAM 角色的 ARN。

無。您必須提供值。

IAM 角色 ARN

aws:elasticbeanstalk:eks:environment

設定應用程式容器、其保留的運算、其網路置放,以及其使用的角色。

命名空間:aws:elasticbeanstalk:eks:environment
名稱 描述 預設 有效值

application-role

您的應用程式擔任以呼叫 AWS 服務之選用 IAM 角色的 ARN。請參閱 Beanstalk 叢集的許可。

無

IAM 角色 ARN

arch

您的應用程式執行所在的 CPU 架構。

amd64

amd64 | arm64

cpu

您應用程式的每個複本保留的 CPU。使用 Kubernetes 數量表示法,因此 500m 是虛擬 CPU 的一半,而 2是兩個虛擬 CPUs。

250m

0.01 至 128,或10m至 128000m

cpu-limit

您應用程式的每個複本可使用的 CPU 上限。使用與 相同的表示法cpu。

無

0.01 至 128,或10m至 128000m

env-variables

容器的環境變數,做為將每個變數名稱映射至其值的 JSON 物件。這是保留每個變數的一個選項,而不是每個變數的一個選項。Elastic Beanstalk PORT 會從 設定service-port並覆寫您為其提供的任何值。

{"PORT" : 8080}

JSON 物件

ingress-allowlist-environments

可能傳送流量到此環境的環境名稱。請參閱 Beanstalk 叢集環境的多租戶。

無

以逗號分隔的環境名稱清單

ingress-allowlist-groups

環境可能會將流量傳送到此環境的輸入群組。允許列出群組中的每個環境。

無

以逗號分隔的輸入群組名稱清單

ingress-groups

此環境所屬的輸入群組。相同群組中的環境可以互相連接。

無

以逗號分隔的輸入群組名稱清單

instance-category

選取叢集節點的 Amazon EC2 執行個體類別。

無

c | d | g | gr | hpc | i | im | is | m | p | r | t | x | z

language

應用程式的執行時間語言,它會選取 Elastic Beanstalk 新增至容器的 OpenTelemetry 自動檢測,讓您的應用程式發出指標、日誌和追蹤到您選取的可觀測性後端,而無須變更應用程式。此選項只會選擇自動檢測。它不會限制您的應用程式可以使用的語言。如果您的執行時間未列出,或您的應用程式自行發出 OpenTelemetry 資料,請將其省略。

無

python | java | dotnet | nodejs

load-balancer-type

流量如何到達您的應用程式。使用 None時,Elastic Beanstalk 不會建立負載平衡器。請參閱 設定 Beanstalk 叢集環境的聯網。

ALB

ALB | None

memory

您應用程式的每個複本保留的記憶體。使用 Kubernetes 數量表示法,例如 512Mi或 1.5Gi。接受分數。

512Mi

Kubernetes 記憶體數量

memory-limit

您應用程式的每個複本可使用的記憶體上限。使用與 相同的表示法memory。

1Gi

Kubernetes 記憶體數量

node-pool

執行此環境複本的節點集區名稱。唯一值為環境提供自己的節點,並在共用節點上提供共用值群組環境。請參閱 Beanstalk 叢集環境的多租戶。

無

DNS-1123 標籤

observability-role

發佈環境指標、日誌和追蹤的 IAM 角色 ARN。Elastic Beanstalk 需要它,而且必須與子網路選取的叢集註冊的角色相符。沒有預設值,因此請明確提供。請參閱 Beanstalk 叢集的許可。

無。您必須提供值。

IAM 角色 ARN

secrets

要公開給容器的秘密,做為將每個名稱對應至 Secrets Manager 中秘密的 ARN 或 Systems Manager 參數存放區中的參數的 JSON 物件。如同 env-variables,這是保留每個秘密的一個選項。需要 application-role:Elastic Beanstalk 會透過 Pod 的身分讀取每個秘密,只有在您設定該選項時才存在。如果沒有它,磁碟區掛載會失敗,您的複本永遠不會啟動。

無

JSON 物件

service-port

您的應用程式接聽的連接埠。Elastic Beanstalk 需要它,將其插入容器作為PORT環境變數,並將其用作其他環境和容器探查到達的連接埠。

8080

1 至 65535

subnets

環境的子網路。它們決定叢集節點的執行位置,以及環境加入的叢集。如果您省略它們,Elastic Beanstalk 會使用預設 VPC 的公有子網路。您無法在建立環境之後變更它們。請參閱 設定 Beanstalk 叢集環境的聯網。

無

以逗號分隔的子網路 IDs清單

aws:elasticbeanstalk:eks:environment:deployment

當您部署新的應用程式版本時,請選擇 Elastic Beanstalk 如何取代應用程式的執行中複本。

命名空間:aws:elasticbeanstalk:eks:environment:deployment
名稱 描述 預設 有效值

strategy

部署策略。 會逐漸RollingUpdate取代複本,並將它們Recreate全部關閉並啟動新版本,這是主控台一次呼叫的策略。請參閱 選擇部署政策。

RollingUpdate

RollingUpdate | Recreate

aws:elasticbeanstalk:eks:environment:deployment:strategy:rolling

限制滾動部署在環境執行的複本數量之前或之後的執行程度。這些選項適用於 strategy為 時RollingUpdate。

命名空間:aws:elasticbeanstalk:eks:environment:deployment:strategy:rolling
名稱 描述 預設 有效值

max-surge

Elastic Beanstalk 部署時,可能開始的複本數量超過環境目前的複本計數。

1

計數,例如 2或百分比,例如 25%

max-unavailable

部署時,一次可能無法使用多少個環境複本。

0

計數,例如 1或百分比,例如 25%

aws:elasticbeanstalk:eks:environment:autoscaling

設定 Elastic Beanstalk 為您的應用程式執行的複本數量,以及評估是否變更該數量的頻率。

如果您未設定觸發,Elastic Beanstalk 會將 CPU 使用率的環境擴展為 80%,介於 min-replica和 之間max-replica。若要擴展其他項目,請設定觸發條件。請參閱 aws:elasticbeanstalk:eks:environment:autoscaling:trigger。

命名空間:aws:elasticbeanstalk:eks:environment:autoscaling
名稱 描述 預設 有效值

min-replica

環境執行之應用程式的最少複本。

1

1 至 100

max-replica

環境執行之應用程式的最大複本。

10

1 至 100

polling-interval

Elastic Beanstalk 評估擴展觸發的頻率,以秒為單位。

30

1 至 1000

cooldown-period

Elastic Beanstalk 會在最後一個觸發程序停止報告活動後等待多久,然後再縮減環境規模。

300

整數 1或更高

aws:elasticbeanstalk:eks:environment:autoscaling:trigger

選擇讓環境擴展的原因。您可以根據複本使用的 CPU 或記憶體進行擴展,也可以根據排程或您自己的端點報告的指標進行擴展。這些選項沒有公告的預設值。當您未設定它們時,Elastic Beanstalk 會提供 CPU 觸發,並將 cpu-metric-type 設定為 Utilization,並將 cpu-value設定為 80。

命名空間:aws:elasticbeanstalk:eks:environment:autoscaling:trigger
名稱 描述 預設 有效值

cpu-metric-type

CPU 觸發是否比較預留 CPU 的百分比 (Utilization) 或絕對數量 ()AverageValue。

無。Utilization 如果您cpu-value單獨設定,或完全未設定觸發,則 Elastic Beanstalk 適用。

Utilization | AverageValue

cpu-value

環境擴展為保留的 CPU 目標。使用 Utilization,值 60表示預留 CPU 的 60%。

無。80 如果您完全未設定觸發條件,則 Elastic Beanstalk 適用。

整數

memory-metric-type

記憶體觸發是否比較預留記憶體的百分比 (Utilization) 或絕對數量 ()AverageValue。

無。Utilization 如果您memory-value單獨設定,則 Elastic Beanstalk 適用。

Utilization | AverageValue

memory-value

環境擴展為保留的記憶體目標。

無

整數

scaler-type

事件驅動觸發的類型。 會根據排程cron進行擴展,並根據 Elastic Beanstalk 從您提供的 HTTP 端點讀取的值進行metrics-api擴展。

無

cron | metrics-api

scaler-metadata

觸發的設定,做為 JSON 物件。使用 cron,提供 timezone、end、 start和 desiredReplicas。使用 metrics-api,提供 url、 valueLocation和 targetValue。

無

JSON 物件

scaler-auth-mode

Elastic Beanstalk 對metrics-api觸發器讀取的端點進行身分驗證的方式。

bearer

bearer | basic | apiKey | tls

scaler-auth-secret

存放端點登入資料的 Secrets Manager 秘密 ARN。您只能在 scaler-type為 時進行設定metrics-api。需要 application-role:Elastic Beanstalk 會透過 Pod 的身分讀取秘密,只有在您設定該選項時才存在。如果沒有它,掛載會失敗,您的複本永遠不會啟動。

無

Secrets Manager 秘密 ARN

下列範例會在 UTC 的工作日工作時間內,將環境擴展為五個複本:

$ cat schedule.json [ { "Namespace": "aws:elasticbeanstalk:eks:environment:autoscaling:trigger", "OptionName": "scaler-type", "Value": "cron" }, { "Namespace": "aws:elasticbeanstalk:eks:environment:autoscaling:trigger", "OptionName": "scaler-metadata", "Value": "{\"timezone\":\"UTC\",\"start\":\"0 8 * * 1-5\",\"end\":\"0 18 * * 1-5\",\"desiredReplicas\":\"5\"}" } ] $ aws elasticbeanstalk update-environment \ --environment-name my-cluster-env \ --option-settings file://schedule.json

scaler-metadata 值本身是 JSON 文件,因此設定會進入檔案而非命令列。

aws:elasticbeanstalk:eks:environment:autoscaling:behavior

限制環境在觸發時新增或移除複本的速度。每個方向都需要一個期間、一個單位和一個數量:在每個期間內,環境最多會將複本計數變更為您設定的數量。

命名空間:aws:elasticbeanstalk:eks:environment:autoscaling:behavior
名稱 描述 預設 有效值

scaleup-period

scaleup-value 套用的期間,以秒為單位。

無

整數 1或更高

scaleup-type

scaleup-value 是複本數量 (Pods) 還是目前計數的百分比 (Percent)。

無

Pods | Percent

scaleup-value

環境在單一 中新增的最大數量scaleup-period。

無

整數

scaledown-period

scaledown-value 套用的期間,以秒為單位。

無

整數 1或更高

scaledown-type

scaledown-value 是複本數量 (Pods) 還是目前計數的百分比 (Percent)。

無

Pods | Percent

scaledown-value

環境在一個 內移除的最大數量scaledown-period。

無

整數

容器探查命名空間

三個命名空間設定容器探查,每個命名空間都採用相同的九個選項:

  • aws:elasticbeanstalk:eks:environment:readiness-probe 決定複本何時準備好接收流量。失敗的複本會停止服務,而不會重新啟動。

  • aws:elasticbeanstalk:eks:environment:liveness-probe 決定複本何時運作狀態不佳。失敗的複本會重新啟動。

  • aws:elasticbeanstalk:eks:environment:startup-probe 提供在開始其他兩個探查之前初始化的慢速啟動複本時間。

每個探查都會關閉,直到您啟用為止。如需探查如何與環境運作狀態相關,請參閱 監控 Beanstalk 叢集環境。

命名空間:aws:elasticbeanstalk:eks:environment:liveness-probe、 aws:elasticbeanstalk:eks:environment:readiness-probe和 aws:elasticbeanstalk:eks:environment:startup-probe
名稱 描述 預設 有效值

enabled

探查是否執行。

false

true | false

http-path

探查請求的路徑。

/

URL 路徑

http-port

探查請求的連接埠。如果您省略它,探查會使用 service-port。

無。探查使用 service-port。

1 至 65535

initial-delay-seconds

在複本開始後,探查會等待多久才會發出第一個請求。

0

整數秒數

period-seconds

探查執行的頻率。

30

1 至 3600

timeout-seconds

探查在請求計為失敗之前等待回應的時間長度。

5

整數秒數

success-threshold

連續成功多少次會讓探查通過。

1

整數

failure-threshold

連續失敗次數會使探查失敗。

3

整數

aws:elasticbeanstalk:eks:alb

在應用程式前設定 Application Load Balancer、其接聽程式和 TLS,以及其目標群組的運作狀態檢查。這些選項適用於 load-balancer-type為 時ALB。如需網路設定、提供您已擁有的負載平衡器,以及管理 HTTPS 接聽程式的規則,請參閱 設定 Beanstalk 叢集環境的聯網。

命名空間:aws:elasticbeanstalk:eks:alb
名稱 描述 預設 有效值

arn

您已經擁有的 Application Load Balancer 的 ARN,而不是 Elastic Beanstalk 建立的 ARN。Elastic Beanstalk 拒絕 Network Load Balancer 的 ARN。

無。Elastic Beanstalk 會建立負載平衡器。

Application Load Balancer ARN

scheme

負載平衡器是否可從網際網路連線。如果您省略它,Elastic Beanstalk 會從子網路中衍生它:公有子網路會提供面向網際網路的負載平衡器,而私有子網路則提供內部的負載平衡器。

無。衍生自您的子網路。

internet-facing | internal

subnets

要放置負載平衡器的子網路。如果您省略它們,則會使用環境的子網路。

無。環境的子網路。

以逗號分隔的子網路 IDs清單

security-groups

要連接到負載平衡器的安全群組。

無

以逗號分隔的安全群組 IDs清單

manage-backend-security-group-rules

Elastic Beanstalk 是否新增和移除負載平衡器和應用程式之間的安全群組規則。

true

true | false

ip-address-type

負載平衡器是僅提供 IPv4,還是同時提供 IPv4 和 IPv6。Elastic Beanstalk 不公告預設值並套用 ipv4。

ipv4,由 Elastic Beanstalk 套用

ipv4 | dualstack

target-type

負載平衡器會將流量傳送至複本的 IP 地址或執行它們的節點。Elastic Beanstalk 不公告預設值並套用 ip。

ip,由 Elastic Beanstalk 套用

ip | instance

listen-ports

要開啟的接聽程式,做為每個接聽程式具有一個物件的 JSON 陣列,例如 [{"HTTPS":443},{"HTTP":80}]。每個連接埠必須是唯一的。Elastic Beanstalk 會確保 HTTPS 接聽程式存在,並為其提供憑證。HTTP 接聽程式會重新導向至 HTTPS,而不是提供應用程式流量。

無。Elastic Beanstalk 在連接埠 443 上設定 HTTPS。

protocol-to-port物件的 JSON 陣列

certificate-arn

要連接到 HTTPS 接聽程式之自有 ACM 憑證的 ARN,例如當您從自訂網域提供環境時。您不需要此選項,HTTPS 才能運作:Elastic Beanstalk 會建立並連接環境本身網域的憑證。如果您設定它,負載平衡器會同時攜帶兩個憑證。

無

ACM 憑證 ARN

ssl-policy

HTTPS 接聽程式的安全政策。

無

Elastic Load Balancing 安全政策名稱

ssl-redirect

選取 Elastic Beanstalk 重新導向 HTTP 請求的 HTTPS 連接埠。此值必須是已設定 HTTPS 接聽程式使用的連接埠。無論您是否設定此選項,Elastic Beanstalk 都會重新導向到達 HTTP 接聽程式的請求,因此只會變更目標連接埠。

無。Elastic Beanstalk 會重新導向至 HTTPS 接聽程式的連接埠。

1 至 65535

backend-protocol

負載平衡器用來連接應用程式的通訊協定。

無

HTTP | HTTPS

backend-protocol-version

負載平衡器用來連接應用程式的通訊協定版本。僅適用於設定 backend-protocol 時。

無

HTTP2 | GRPC

healthcheck-path

目標群組運作狀態檢查請求的路徑。

/

URL 路徑

healthcheck-protocol

目標群組運作狀態檢查使用的通訊協定。

HTTP

HTTP | HTTPS

healthcheck-interval-seconds

目標群組運作狀態檢查執行的頻率。

15

5 至 300

healthcheck-timeout-seconds

運作狀態檢查等待回應的時間長度。

5

2 至 120

success-codes

計為成功運作狀態檢查的 HTTP 狀態碼。

200

狀態碼、清單或範圍

healthy-threshold-count

連續多少次成功檢查可讓目標正常運作。

2

2 至 10

unhealthy-threshold-count

連續多少次檢查失敗會使目標運作狀態不佳。

2

2 至 10

wafv2-acl-arn

要與負載平衡器建立關聯的 AWS WAF Web ACL ARN。

無

AWS WAF Web ACL ARN

tags

要套用至負載平衡器的標籤。

無

標籤索引鍵和值的 JSON 物件

load-balancer-attributes

要套用至負載平衡器的負載平衡器屬性,傳遞至 Elastic Load Balancing,無需解譯。

無

以逗號分隔的key=value配對清單,例如 idle_timeout.timeout_seconds=300,routing.http2.enabled=false

listener-attributes

要套用至特定接聽程式的接聽程式屬性,傳遞至 Elastic Load Balancing,無需解譯。在此僅提供接聽程式屬性,而非負載平衡器屬性。

無

物件的 JSON 陣列,每個物件都會將接聽程式映射至以逗號分隔的key=value配對清單,例如 [{"HTTPS-8443":"routing.http.response.server.enabled=false"}]

raw-annotation

要直接套用至 Elastic Beanstalk 為您的環境產生的 Kubernetes 輸入的說明。將此用於此命名空間中其他選項未涵蓋的負載平衡器行為。

無

JSON 物件陣列,每個物件都會將輸入註釋索引鍵映射至其值。值的每個逗號分隔區段必須只包含一個 =

注意

load-balancer-attributes、 listener-attributes和 會將其值raw-annotation傳遞至負載平衡器,而不加以解譯,因此 Elastic Beanstalk 不會驗證個別屬性或註釋的意義。當您建立環境時,無效的值會阻止建立負載平衡器,因此會顯示失敗。當您更新環境時,Elastic Beanstalk 不會等待負載平衡器進行協調,因此操作可以在變更生效之前成功。確認負載平衡器本身的變更。

aws:elasticbeanstalk:eks:observability

選擇應用程式的指標、日誌和追蹤前往何處。Elastic Beanstalk 會佈建和操作集合元件,而且您負責檢測您的應用程式,以及存取您選取的任何目的地。請參閱 監控 Beanstalk 叢集環境。

命名空間:aws:elasticbeanstalk:eks:observability
名稱 描述 預設 有效值

metrics-backend

您應用程式指標的目的地。 會amp將其傳送至 Amazon Managed Service for Prometheus,且需要 metrics-endpoint。

cloudwatch

cloudwatch | amp | custom | none

metrics-endpoint

Amazon Managed Service for Prometheus 遠端寫入端點。只有在 metrics-backend為 時才設定它amp。

無

遠端寫入端點 URL

logs-backend

應用程式日誌的目的地。

cloudwatch

cloudwatch | s3 | custom | none

traces-backend

應用程式追蹤的目的地。與指標和日誌不同,追蹤在您選取一個項目之前沒有後端。

無

xray | custom | none

custom-config

用於您設定為 之訊號的 OpenTelemetry 收集器管道組態custom。參考每個登入資料做為 custom-credentials 提供的${NAME}預留位置。請參閱 將可觀測性資料傳送至第三方後端。

無

收集器管道組態,做為 JSON

custom-credentials

Secrets Manager 秘密的 ARN,其中包含收集器到達custom後端所需的登入資料。秘密值必須是金鑰符合 中預留位置的 JSON 物件custom-config。需要 application-role:收集器會透過 Pod 的身分讀取秘密,只有在您設定該選項時才存在,而且該角色也必須被允許讀取秘密。

無

Secrets Manager 秘密 ARN