AWS Elastic Beanstalk
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用 Procfile 配置应用程序进程

要指定用于启动 Go 应用程序的自定义命令,请在源包根目录中包含一个名为 Procfile 的文件。文件名区分大小写。Procfile 应采用以下格式:

<process_name>: <command>

Procfile 中的每行内容都必须符合以下正则表达式:^[A-Za-z0-9_]+:\s*.+$

Elastic Beanstalk 希望从 Procfile 运行的进程一直运行。Elastic Beanstalk 会监控这些应用程序并重启任何终止的进程。对于短期运行的进程,请使用 Buildfile 命令。

您可以对 Go 应用程序使用任何名称,只要符合上述正则表达式即可。您必须调用主应用程序 web

web: bin/server queue_process: bin/queue_processor foo: bin/fooapp

Elastic Beanstalk 在环境的根 URL 处公开主 web 应用程序;例如,http://my-go-env.elasticbeanstalk.com

Elastic Beanstalk 配置 nginx 代理,使其在应用程序的 PORT 环境变量中指定的端口号上转发对应用程序的请求。您的应用程序应始终侦听该端口。您可以通过在应用程序中调用 os.Getenv("PORT") 方法访问此变量。

Elastic Beanstalk 使用 PORT 选项设置中所指定的端口号作为 Procfile 中第一个应用程序的端口,对 Procfile 中的每个后续应用程序的端口号递增 100。如果未设置 PORT 选项,Elastic Beanstalk 将使用 5000 作为初始端口。

在前面的示例中,PORT 应用程序的 web 环境变量为 5000,queue_process 应用程序使用 5100,foo 应用程序使用 5200。

您可以通过 aws:elasticbeanstalk:application:environment 命名空间设置 PORT 选项从而指定初始端口,如下例所示。

option_settings: - namespace: aws:elasticbeanstalk:application:environment option_name: PORT value: <first_port_number>

有关设置应用程序环境变量的更多信息,请参阅选项设置

Elastic Beanstalk 还会运行名称没有 web_ 前缀的任何应用程序,但这些应用程序在您的实例外部不可用。

源自进程的标准输出和错误流以 Procfile 开头,捕获在以进程命名的日志文件中并存储在 /var/log 中。例如,上例中的 web 进程分别为 web-1.logweb-1.error.log 生成名为 stdoutstderr 的日志。

Procfile 中的所有路径都是源包根目录的相对路径。如果您事先知道这些文件在实例上的位置,则可以在 Procfile 中使用绝对路径。