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集群环境会返回一个而不是被忽略。InvalidParameterValueException

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

注意

默认列给出了该选项DescribeConfigurationOptions的广告值。尽管宣传没有默认值,但 Elastic Beanstalk 仍会应用一个值,但描述中却是这样说的。

aws: elasticbeanstalk: eks

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

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

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

cluster-role

亚马逊 EKS 为集群承担的 IAM 角色的 ARN。

无。你必须提供一个值。

IAM 角色 ARN

node-role

集群的亚马逊 EC2 节点代入的 IAM 角色的 ARN。

无。你必须提供一个值。

IAM 角色 ARN

aws: elasticbeanstalk: eks: 环境

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

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

application-role

您的应用程序在调用 Amazon 服务时代入的可选 IAM 角色的 ARN。请参阅Beanstalk 集群的权限。

无

IAM 角色 ARN

arch

您的应用程序运行的 CPU 架构。

amd64

amd64 | arm64

cpu

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

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

可能向该环境发送流量的环境的名称。请参阅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 对象的形式向容器公开的密钥,该对象将每个名称映射到密钥管理器中密钥的 ARN 或系统管理器参数存储中的参数。比如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 如何替换应用程序的运行副本。

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

strategy

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

RollingUpdate

RollingUpdate | Recreate

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

限定滚动部署可能在环境运行的副本数量之前或落后多远的情况下运行。这些选项在出现时适strategy用RollingUpdate。

命名空间:aws: elasticbeanstalk: eks: 环境:部署:策略:滚动
名称 描述 默认 有效值

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

命名空间:aws: elasticbeanstalk: eks: environment: autos
名称 描述 默认 有效值

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

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

命名空间:aws: elasticbeanstalk: eks: environment: autoscaling: tri
名称 描述 默认 有效值

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如果你单独设置,Elastic 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-apiurlvalueLocation、供应和targetValue。

无

JSON 对象

scaler-auth-mode

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

bearer

bearer | basic | apiKey | tls

scaler-auth-secret

保存端点证书的密钥管理器密钥的 ARN。您只能在 “scaler-type是” 时进行设置metrics-api。要求application-role:Elastic Beanstalk 通过 pod 的身份读取密钥,该身份仅在您设置该选项时存在。没有它,装载将失败,您的副本永远无法启动。

无

密钥经理的秘密 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: 自动缩放:行为

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

命名空间:aws: elasticbeanstalk: eks: environment: autoscaling: be
名称 描述 默认 有效值

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-probean、aws: elasticbeanstalk: eks: environment: livensess-probe 和 aws: elasticbeanstalk: eks: elasticbeanstalk: le
名称 描述 默认 有效值

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

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

arn

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

无。Elastic Beanstalk 创建负载均衡器。

应用程序负载均衡器 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 监听器的安全策略。

无

弹性负载平衡安全策略名称

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 网页 ACL 的 ARN。

无

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

aws: elasticbeanstalk: eks: 可观察性

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

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

metrics-backend

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

cloudwatch

cloudwatch | amp | custom | none

metrics-endpoint

适用于 Prometheus 远程写入终端节点的亚马逊托管服务。仅在 ish 时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

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

无

密钥经理的秘密 ARN