本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
自定义 Windows Server 上的软件
建议自定义和配置您的应用程序所依赖的软件。这些文件可能是该应用程序所要求的依赖项,例如需要运行的其他软件包或服务。有关自定义和配置 Elastic Beanstalk 环境的一般信息,请参阅配置 Elastic Beanstalk 环境。
注意
YAML 依赖一致的缩进。当替换示例配置文件中的内容时,应匹配缩进级别,并且确保您的文本编辑器使用空格而不是字符来进行缩进。
配置文件支持以下可对运行您的应用程序的 Windows 服务器产生影响的键。
将按键在此处列出的顺序对其进行处理。
注意
较旧(不受版本控制)的 .NET 平台版本不会按正确顺序处理配置文件。有关更多信息,请参阅跨 Elastic BeanstalkWindows Server 平台的主要版本迁移。
观察您的环境的事件,同时开发和测试配置文件。Elastic Beanstalk 将忽略包含验证错误的配置文件(例如“密钥无效”),并且不会处理同一文件中的任何其他密钥。出现这种情况时,Elastic Beanstalk 将警告事件添加到事件日志中。
软件包
使用 packages
键下载并安装预先打包的应用程序和组件。
在 Windows 环境中,Elastic Beanstalk 支持下载和安装 MSI 软件包。(Linux 环境支持其他软件包管理器。有关详细信息,请参阅在 Linux 服务器上自定义软件页面上的 软件包。)
只要该 URL 可公开访问,您就可以引用 Amazon Simple Storage Service (Amazon S3) 对象等任意外部位置。
如果您指定了多个 msi:
程序包,则无法保证其安装顺序。
语法
指定您选择的名称作为软件包名称,而且指定 MSI 文件位置的 URL 作为该值。您可以在 msi:
密钥下指定多个程序包。
packages:
msi:
package name
: package url
...
示例
下面的示例指定了从 https://dev.mysql.com/
中下载 mysql 的 URL。
packages:
msi:
mysql: https://dev.mysql.com/get/Downloads/Connector-Net/mysql-connector-net-8.0.11.msi
以下示例指定了 Amazon S3 对象作为 MSI 文件位置。
packages:
msi:
mymsi: https://mybucket
.s3.amazonaws.com/myobject
.msi
源
使用 sources
键从公有 URL 下载存档文件并将其解压到 EC2 实例上的目标目录中。
语法
sources:
target directory
: location of archive file
支持的格式
在 Windows 环境中,Elastic Beanstalk 支持 .zip 格式。(Linux 环境支持其他格式。有关详细信息,请参阅在 Linux 服务器上自定义软件页面上的 源。)
只要该 URL 可公开访问,您就可以引用 Amazon Simple Storage Service (Amazon S3) 对象等任意外部位置。
示例
以下示例会从 Amazon S3 存储桶下载一个公有 .zip 文件并将其解压到 c:/myproject/myapp
中。
sources:
"c:/myproject/myapp": https://mybucket
.s3.amazonaws.com/myobject
.zip
文件
使用 files
键在 EC2 实例上创建文件。内容可以内嵌在配置文件中,也可以取自 URL。这些文件会按词典顺序写入磁盘。要从 Amazon S3 下载私有文件,请提供实例配置文件以进行授权。
语法
files:
"target file location on disk
":
source: URL
authentication: authentication name
:
"target file location on disk
":
content: |
this is my content
encoding: encoding format
选项
content
-
(可选) 一个字符串。
source
-
(可选) 加载文件的 URL。不能使用内容密钥指定该选项。
encoding
-
(可选) 编码格式。此选项只用于所提供的内容键值。默认值为
plain
。有效值:
plain
|base64
authentication
-
(可选)要使用的 AWS CloudFormation 身份验证方法的名称。您可以使用资源键将身份验证方法添加到 Auto Scaling 组元数据。
示例
以下示例显示了提供文件内容的两种方式:通过 URL 或内嵌在配置文件中。
files:
"c:\\targetdirectory\\targetfile.txt
":
source: http://foo.bar/myfile
"c:/targetdirectory/targetfile.txt
":
content: |
# this is my file
# with content
注意
如果您在文件路径中使用反斜杠 (\),则必须在它前面再插入一个反斜杠 (转义字符),如上例所示。
以下示例使用资源键添加名为 S3Auth 的身份验证方法并使用该方法从 Amazon S3 存储桶下载私有文件:
files:
"c:\\targetdirectory\\targetfile.zip":
source: https://elasticbeanstalk-us-east-2-123456789012.s3.amazonaws.com/prefix/myfile.zip
authentication: S3Auth
Resources:
AWSEBAutoScalingGroup:
Metadata:
AWS::CloudFormation::Authentication:
S3Auth
:
type: "s3"
buckets: ["elasticbeanstalk-us-east-2-123456789012
"]
roleName:
"Fn::GetOptionSetting":
Namespace: "aws:autoscaling:launchconfiguration"
OptionName: "IamInstanceProfile"
DefaultValue: "aws-elasticbeanstalk-ec2-role"
命令
使用 commands
键在 EC2 实例上执行命令。该命令是按名称的字母顺序处理的,它们会在安裝应用程序和 Web 服务器以及提取应用程序版本文件前运行。
管理员用户身份可运行指定的命令。
要使用您的命令排查问题,您可以在实例日志中查找其输出。
语法
commands:
command name
:
command: command to run
选项
command
-
指定要运行的命令的数组或字符串。如果您使用了数组,则不需要对空格字符进行转义或用引号将命令参数引起来。
cwd
-
(可选) 工作目录。默认情况下,Elastic Beanstalk 会尝试查找项目的目录位置。如果找不到,则它会使用
c:\Windows\System32
作为默认目录位置。 env
-
(可选) 设置该命令的环境变量。这个属性会覆盖而不是追加到现有的环境。
ignoreErrors
-
(可选)一个布尔值,该值确定在
command
密钥中包含的命令失败时(返回非零值)是否应该运行其他命令。如果要在命令失败后继续运行其他命令,请将该值设置为true
。否则,请将该值设置为false
。默认值为false
。 test
-
(可选)一种命令,该命令必须返回值
true
(退出代码 0),以便 Elastic Beanstalk 处理command
键中包含的命令。 waitAfterCompletion
-
(可选) 在命令完成后、运行下一个命令前等待的秒数。如果系统需要在命令完成后重启,则会在经过指定的秒数后重启系统。如果系统因某个命令而重启,Elastic Beanstalk 将恢复到配置文件中该命令之后的点。默认值为
60
秒。您还可以指定forever
,但须重启系统后才能运行其他命令。
示例
下面的示例将 set
命令的输出保存到指定的文件。如果有后续命令,Elastic Beanstalk 会在此命令完成后立即运行后续命令。如果命令需要重新启动,则 Elastic Beanstalk 会在命令完成后立即重新启动实例。
commands:
test:
command: set > c:\\myapp\\set.txt
waitAfterCompletion: 0
服务
使用 services
键定义哪些服务应该在实例启动时启动或者停止。services
键还可让您指定源、包和文件的依赖项,以便在由于文件安装而需要重启时,让 Elastic Beanstalk 负责服务的重启。
语法
services:
windows:
name of service
:
files:
- "file name
"
sources:
- "directory
"
packages:
name of package manager
:
"package name
[: version
]"
commands:
- "name of command
"
选项
ensureRunning
-
(可选)设置为
true
可确保在 Elastic Beanstalk 完成后服务能够运行。设置为
false
可确保该服务在 Elastic Beanstalk 完成后不运行。忽略该密钥,将不更改服务状态。
enabled
-
(可选) 设为
true
以确保此服务在启动时自动启动。设置为
false
,可确保该服务在启动时不会自动启动。忽略该密钥,将不更改这个属性。
files
-
一系列文件。如果 Elastic Beanstalk 直接通过文件块更改一个文件,则该服务会重启。
sources
-
一系列目录。如果 Elastic Beanstalk 将存档展开到这些目录中的一个,则该服务会重启。
packages
-
包管理器与一系列包名的映射。如果 Elastic Beanstalk 安装或者更新了这些包中的一个,则该服务会重启。
commands
-
一系列命令名称。如果 Elastic Beanstalk 运行指定的命令,则服务将重新启动。
示例
services:
windows:
myservice:
enabled: true
ensureRunning: true
容器命令
使用 container_commands
键执行将影响应用程序源代码的命令。容器命令将在设置应用程序和 Web 服务器并提取应用程序版本存档后,但在部署应用程序版本前运行。非容器命令和其他自定义操作将在提取应用程序源代码之前执行。
容器命令从暂存目录运行,您的源代码在部署到应用程序服务器前在这里提取。当源部署到其最终位置时,将包含您在暂存目录中使用容器命令对源代码所做的任何更改。
要使用您的容器命令排查问题,您可以在实例日志中查找其输出。
可以使用 leader_only
选项只对单个实例运行此命令,也可以配置 test
以只在测试命令的评估结果为 true
时运行此命令。仅领导容器命令只在创建和部署环境期间执行,而其他命令和服务器自定义操作将在预配置或更新实例时执行。由于启动配置发生更改 (例如 AMI Id 或实例类型的更改),未执行仅领导容器命令。
语法
container_commands:
name of container_command
:
command: command to run
选项
command
-
要运行的字符串或字符串数组。
env
-
(可选) 在运行命令之前设置环境变量,并覆盖任何现有值。
cwd
-
(可选) 工作目录。默认情况下,这是解压缩应用程序的暂存目录。
leader_only
-
(可选)仅对 Elastic Beanstalk 选定的单个实例运行命令。仅领导容器命令将在其他容器命令之前运行。命令可以是仅领导命令或具有
test
,但不能同时具备这两个特性 (leader_only
优先)。 test
-
(可选) 运行必须返回
true
的测试命令以便运行容器命令。命令可以是仅领导命令或具有test
,但不能同时具备这两个特性 (leader_only
优先)。 ignoreErrors
-
(可选) 不在容器命令返回 0 以外的值 (成功) 时导致部署失败。设置为
true
可实现这一点。 waitAfterCompletion
-
(可选) 在命令完成后、运行下一个命令前等待的秒数。如果系统需要在命令完成后重启,则会在经过指定的秒数后重启系统。如果系统因某个命令而重启,Elastic Beanstalk 将恢复到配置文件中该命令之后的点。默认值为
60
秒。您还可以指定forever
,但须重启系统后才能运行其他命令。
示例
下面的示例将 set
命令的输出保存到指定的文件。Elastic Beanstalk 在一个实例上运行此命令,并在命令完成后立即重新启动实例。
container_commands:
foo:
command: set > c:\\myapp\\set.txt
leader_only: true
waitAfterCompletion: 0