View a markdown version of this page

Beanstalk 集群环境的配置选项 - Amazon Elastic Beanstalk
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Beanstalk 集群环境的配置选项

Beanstalk 集群环境是通过此页面上的十二个命名空间配置的。它们是 Beanstalk 集群环境唯一接受的命名空间。Beanstalk 标准环境的配置选项配置 Beanstalk 标准环境中的经典命名空间并不适用,将其中一个命名空间传递给 Beanstalk Cluster 环境会返回而不是被忽略。InvalidParameterValueException

有关设置这些选项的方法以及 Elastic Beanstalk 如何解析这些选项,请参阅。配置选项

注意

“默认” 列给出了该选项DescribeConfigurationOptions的广告值。在 Elastic Beanstalk 即使宣称没有默认值也要应用一个值的地方,描述是这样说的。

aws: elasticbeanstalk: eks

为运行您的环境的 Amazon EKS 集群配置 IAM 角色。您可以同时提供这两个角色,而 Elastic Beanstalk 在创建环境时需要它们。您选择的子网决定了环境加入哪个集群,如果这些角色与为该集群注册的角色不匹配,Elastic Beanstalk 会拒绝该请求。有关控制台创建的角色名称、其可信服务及其策略,请参阅Beanstalk 集群的权限。

环境还需要可观察性角色,并且可以扮演可选的应用程序角色。这两个设置都在aws:elasticbeanstalk:eks:environment命名空间中,而不是这个命名空间中。请参阅aws: elasticbeanstalk: eks: 环境。

命名空间:aw s: elasticbeanstalk: eks
名称 描述 默认 有效值

cluster-role

Amazon EKS 为集群担任的 IAM 角色的 ARN。

无。您必须提供一个值。

IAM 角色 ARN

node-role

集群的 Amazon EC2 节点担任的 IAM 角色的 ARN。

无。您必须提供一个值。

IAM 角色 ARN

aws: elasticbeanstalk: eks: 环境

配置应用程序容器、其保留的计算、其网络位置及其使用的角色。

命名空间:aw s: elasticbeanstalk: eks: 环境
名称 描述 默认 有效值

application-role

您的应用程序为调 Amazon 用服务而担任的可选 IAM 角色的 ARN。请参阅Beanstalk 集群的权限。

无

IAM 角色 ARN

arch

应用程序运行的 CPU 架构。

amd64

amd64 | arm64

cpu

应用程序的每个副本预留的 CPU。使用 Kubernetes 数量表示法,虚拟 CPU 的一半和两个虚拟 CPU 500m 2 也是如此。

250m

0.01到128,或10m到 128000m

cpu-limit

应用程序的每个副本可以使用的最多 CPU。使用的符号与相同cpu。

无

0.01到128,或10m到 128000m

env-variables

容器的环境变量,作为 JSON 对象,它将每个变量名称映射到其值。这是一个保存所有变量的选项,而不是每个变量一个选项。Elastic PORT Beanstalk service-port 设定并覆盖你为其提供的任何值。

{"PORT" : 8080}

JSON 对象

ingress-allowlist-environments

可能向该环境发送流量的环境的名称。请参阅Multi-tenancy 适用于 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

运行此环境副本的节点池的名称。唯一值为环境提供自己的节点,共享值将环境分组到共享节点上。请参阅Multi-tenancy 适用于 Beanstalk 集群环境。

无

一个 DNS-1123 标签

observability-role

发布环境指标、日志和跟踪的 IAM 角色的 ARN。Elastic Beanstalk 需要它,并且它必须与为子网选择的集群注册的角色相匹配。没有默认值,因此请明确提供。请参阅Beanstalk 集群的权限。

无。您必须提供一个值。

IAM 角色 ARN

secrets

要向容器公开的机密,作为 JSON 对象,它将每个名称映射到 Secrets Manager 中密钥的 ARN 或 Systems Manager 参数存储中的参数。比如env-variables,这是一个包含所有秘密的选项。要求application-role:Elastic Beanstalk 通过吊舱的身份读取每个秘密,只有在你设置该选项时,该身份才会存在。没有它,卷装载就会失败,复制副本永远无法启动。

无

JSON 对象

service-port

您的应用程序监听的端口。Elastic Beanstalk 需要它,将其作为环境变量注入到容器中,然后将其PORT用作其他环境和容器探测器到达的端口。

8080

1 到 65535

subnets

环境的子网。它们决定集群节点的运行位置以及环境加入哪个集群。如果省略它们,Elastic Beanstalk 将使用默认 VPC 的公有子网。创建环境后,您无法对其进行更改。请参阅为 Beanstalk 集群环境配置网络。

无

以逗号分隔的子网 ID 列表

aws: elasticbeanstalk: eks: 环境:部署

选择在部署新应用程序版本时,Elastic Beanstalk 如何替换正在运行的应用程序副本。

命名空间:aw s: elasticbeanstalk: eks: 环境:部署
名称 描述 默认 有效值

strategy

部署策略。 RollingUpdate逐渐替换副本,然后Recreate将其全部删除并启动新版本,这是控制台同时调用的策略。请参阅选择部署策略。

RollingUpdate

RollingUpdate | Recreate

aws: elasticbeanstalk: eks: 环境:部署:策略:滚动

限制滚动部署可能比环境正在运行的副本数量之前或落后多远。这些选项在 strategy is 时适用RollingUpdate。

命名空间:aw s:elasticbeanstalk:eks:环境:部署:strategy:rolling
名称 描述 默认 有效值

max-surge

部署时,Elastic Beanstalk 在环境当前的副本数量之外可以启动多少副本。

1

计数(例如)2或百分比,例如 25%

max-unavailable

部署时,环境中可能有多少副本同时不可用。

0

计数(例如)1或百分比,例如 25%

aws: elasticbeanstalk: eks: 环境:自动缩放

设置 Elastic Beanstalk 为您的应用程序运行的副本数量,以及它评估是否更改该数量的频率。

如果您不配置触发器,Elastic Beanstalk 会根据 CPU 利用率扩展环境,目标为 80%,介于和之间。min-replica max-replica要在其他内容上进行缩放,请设置触发器。请参阅aws: elasticbeanstalk: eks: 环境:自动缩放:触发器。

命名空间:aws: elasticbeanstalk: eks: 环境:自动缩放
名称 描述 默认 有效值

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: 环境:自动缩放:触发器

选择使环境扩展的因素。您可以根据副本使用的 CPU 或内存进行扩展,也可以根据自己的终端节点报告的计划或指标进行扩展。这些选项没有通告的默认值。当你没有设置任何一个时,Elastic Beanstalk 会提供一个设置为和设置为的 CPU cpu-metric-type 触发器。Utilization cpu-value 80

命名空间:aws:elasticbeanstalk:eks:环境:autoscaling:trigger
名称 描述 默认 有效值

cpu-metric-type

CPU 触发器是比较预留 CPU 的百分比 (Utilization) 还是绝对数量 (AverageValue)。

无。cpu-value如果你单独设置或者根本没有设置任何触发器,UtilizationElastic Beanstalk 就会适用。

Utilization | AverageValue

cpu-value

环境可扩展以保持的 CPU 目标。使用Utilization时,值为60表示预留 CPU 的 60%。

无。如果你根本没有设置任何触发器,80Elastic Beanstalk 就会适用。

一个整数

memory-metric-type

内存触发器是比较预留内存的百分比 (Utilization) 还是绝对量 (AverageValue)。

无。如果你单独设置,Elastic Utilization Beanstalk 适用。memory-value

Utilization | AverageValue

memory-value

环境缩放以容纳的内存目标。

无

一个整数

scaler-type

那种事件驱动的触发器。 cron按计划进行扩展,并根据 Elastic Beanstalk 从你提供的 HTTP 端点读取的值进行metrics-api扩展。

无

cron | metrics-api

scaler-metadata

触发器的设置,作为 JSON 对象。使用cron、供应timezonestart、end、和desiredReplicas。与metrics-api、供应urlvalueLocation、和targetValue。

无

JSON 对象

scaler-auth-mode

Elastic Beanstalk 如何对触发器读取的端点进行身份验证。metrics-api

bearer

bearer | basic | apiKey | tls

scaler-auth-secret

保存终端节点凭据的 Secrets Manager 密钥的 ARN。只有在 i scaler-type s 时才可以进行设置metrics-api。需要application-role:Elastic Beanstalk 通过吊舱的身份读取秘密,只有当你设置该选项时,该身份才会存在。没有它,装载就会失败,复制副本永远无法启动。

无

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: 环境:自动缩放:行为

限制触发器触发后环境添加或删除副本的速度。每个方向都需要一个周期、一个单位和一个金额:在每个周期内,环境最多只能按您设置的数量更改副本数量。

命名空间:aws:elasticbeanstalk:eks:环境:自动缩放:行为
名称 描述 默认 有效值

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: readiness-probe、aws: elasticbeanstalk: eks: elasticbeanstalk: eks: environmens-probe、aws: elasticbeanstalk: ek s: environmentalk
名称 描述 默认 有效值

enabled

探测器是否运行。

false

true | false

http-path

探测器请求的路径。

/

网址路径

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

在您的应用程序、其侦听器和 TLS 前面配置 Application Load Balancer,并对其目标组进行运行状况检查。这些选项在 load-balancer-type is 时适用ALB。有关网络设置、提供您已拥有的负载均衡器以及管理 HTTPS 侦听器的规则,请参阅为 Beanstalk 集群环境配置网络。

命名空间:aw s: elasticbeanstalk: eks: alb
名称 描述 默认 有效值

arn

使用您已经拥有的应用程序负载均衡器的 ARN,而不是 Elastic Beanstalk 创建的 ARN。Elastic Beanstalk 拒绝网络负载均衡器的 ARN。

无。Elastic Beanstalk 创建了一个负载均衡器。

Application Load Balancer ARN

scheme

是否可以从互联网访问负载均衡器。如果您省略它,Elastic Beanstalk 会从您的子网中派生它:公有子网提供面向互联网的负载均衡器,私有子网提供内部负载均衡器。

无。从您的子网派生。

internet-facing | internal

subnets

要放置负载均衡器的子网。如果省略它们,它将使用环境的子网。

无。环境的子网。

以逗号分隔的子网 ID 列表

security-groups

要附加到负载均衡器的安全组。

无

以逗号分隔的安全组 ID 列表

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。

协议到端口对象的 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

目标组运行状况检查请求的路径。

/

网址路径

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

要与负载均衡器关联的 Amazon WAF Web ACL 的 ARN。

无

Amazon WAF 网络访问控制列表 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 数组,每个对象都将一个入口注释键映射到其值。例如,以下值设置 ssl 重定向注释:。[{"alb.ingress.kubernetes.io/ssl-redirect":"443"}]

注意

load-balancer-attributeslistener-attributes、,并将它们的值raw-annotation传递给负载均衡器,而不对其进行解释,因此 Elastic Beanstalk 不会验证单个属性或注释的含义。创建环境时,无效的值会阻止创建负载均衡器,因此故障是显而易见的。当您更新环境时,Elastic Beanstalk 不会等待负载均衡器进行协调,因此操作可以在您的更改生效之前成功。确认负载均衡器本身的更改。

aws: elasticbeanstalk: eks: 可观察性

选择应用程序的指标、日志和跟踪记录的去向。Elastic Beanstalk 配置和操作收集组件,您负责检测您的应用程序并访问您选择的任何目的地。请参阅监控 Beanstalk 集群环境。

命名空间:aw s: elasticbeanstalk: eks: 可观察性
名称 描述 默认 有效值

metrics-backend

您的应用程序指标的去向。 amp将它们发送到 Prometheus 的亚马逊托管服务并需要。metrics-endpoint

cloudwatch

cloudwatch | amp | custom | none

metrics-endpoint

适用于 Prometheus 的亚马逊托管服务远程写入终端节点。仅在metrics-backend为时进行设置amp。

无

远程写入端点 URL

logs-backend

应用程序的日志去哪里。

cloudwatch

cloudwatch | s3 | custom | none

traces-backend

你的应用程序的痕迹去了哪里。与指标和日志不同,在您选择一个之前,跟踪没有后端。

无

xray | custom | none

custom-config

用于您设置为的信号的 OpenTelemetry 收集器管道配置custom。将每个凭据作为提供的${NAME}占位符进行引用。custom-credentials请参阅向第三方后端发送可观测性数据。

无

采集器管道配置,采用 JSON

custom-credentials

包含收集器到达后端所需的凭据的 Secrets Manager 机密的 ARN。custom密钥值必须是一个 JSON 对象,其密钥与中的custom-config占位符匹配。要求application-role:收集器通过 pod 的身份读取密钥,该身份仅在您设置该选项时才存在,并且还必须允许该角色读取密钥。

无

Secrets Manager 的秘密 ARN