平台脚本工具 - AWS Elastic Beanstalk

平台脚本工具

本主题介绍 AWS Elastic Beanstalk 在使用 Amazon Linux 平台版本的环境的实例上提供的工具。您可以使用这些工具来增强在环境中的实例上运行的平台挂钩脚本。

get-config

使用 get-config 工具检索环境变量值以及其他平台和实例信息。可在 /opt/elasticbeanstalk/bin/get-config 中获得此工具。

get-config 命令

每个 get-config 工具命令都返回特定类型的信息。使用以下语法运行工具的任何命令。

$ /opt/elasticbeanstalk/bin/get-config command [ options ]

以下示例运行 environment 命令。

$ /opt/elasticbeanstalk/bin/get-config environment -k PORT

根据您选择的命令和选项,工具返回具有键值对或单个值的对象(JSON 或 YAML)。

您可以通过使用 SSH 连接到 Elastic Beanstalk 环境中的实例来测试 get-config

注意

运行 get-config 以进行测试时,某些命令可能需要 root 用户权限才能访问基础信息。如果您收到访问权限错误,请在 sudo 下再次运行命令。

在部署到环境的脚本中使用该工具时,无需添加 sudo。Elastic Beanstalk 以 root 用户身份运行所有脚本。

以下各节介绍了该工具的命令。

get-config optionsettings 命令返回一个对象,其中列出在环境上设置并由平台在环境实例上使用的配置选项。它们按命名空间排列。

$ /opt/elasticbeanstalk/bin/get-config optionsettings {"aws:elasticbeanstalk:application:environment":{"JDBC_CONNECTION_STRING":""},"aws:elasticbeanstalk:container:tomcat:jvmoptions":{"JVM Options":"","Xms":"256m","Xmx":"256m"},"aws:elasticbeanstalk:environment:proxy":{"ProxyServer":"nginx","StaticFiles":[""]},"aws:elasticbeanstalk:healthreporting:system":{"SystemType":"enhanced"},"aws:elasticbeanstalk:hostmanager":{"LogPublicationControl":"false"}}

要返回特定配置选项值,请使用 --namespace (-n) 选项来指定命名空间,并使用 --option-name (-o) 选项来指定选项名称。

$ /opt/elasticbeanstalk/bin/get-config optionsettings -n aws:elasticbeanstalk:container:php:phpini -o memory_limit 256M

get-config environment 命令返回一个包含环境属性列表的对象。这些属性包括用户配置的属性和由 Elastic Beanstalk 提供的属性。

$ /opt/elasticbeanstalk/bin/get-config environment {"JDBC_CONNECTION_STRING":"","RDS_PORT":"3306","RDS_HOSTNAME":"anj9aw1b0tbj6b.cijbpanmxz5u.us-west-2.rds.amazonaws.com","RDS_USERNAME":"testusername","RDS_DB_NAME":"ebdb","RDS_PASSWORD":"testpassword1923851"}

例如,Elastic Beanstalk 提供用于连接到集成 Amazon RDS 数据库实例的环境属性(RDS_HOSTNAME 等)。这些 RDS 连接属性显示在 get-config environment 的输出中,但不显示在 get-config optionsettings 的输出中,因为它们未在配置选项中进行设置。

要返回特定环境属性,请使用 --key (-k) 选项来指定属性键。

$ /opt/elasticbeanstalk/bin/get-config environment -k TESTPROPERTY testvalue

get-config container 命令返回一个对象,该对象列出反映在环境实例上时的平台和环境配置值。

以下示例显示此命令在 Amazon Linux 2 Tomcat 环境上的输出。

$ /opt/elasticbeanstalk/bin/get-config container {"common_log_list":["/var/log/eb-engine.log","/var/log/eb-hooks.log"],"default_log_list":["/var/log/nginx/access.log","/var/log/nginx/error.log"],"environment_name":"myenv-1da84946","instance_port":"80","log_group_name_prefix":"/aws/elasticbeanstalk","proxy_server":"nginx","static_files":[""],"xray_enabled":"false"}

要返回特定键的值,请使用 --key (-k) 选项指定键。

$ /opt/elasticbeanstalk/bin/get-config container -k environment_name myenv-1da84946

get-config addons 命令返回一个包含环境附加项配置信息的对象。使用它检索与环境关联的 Amazon RDS 数据库的配置。

$ /opt/elasticbeanstalk/bin/get-config addons {"rds":{"Description":"RDS Environment variables","env":{"RDS_DB_NAME":"ebdb","RDS_HOSTNAME":"ea13k2wimu1dh8i.c18mnpu5rwvg.us-east-2.rds.amazonaws.com","RDS_PASSWORD":"password","RDS_PORT":"3306","RDS_USERNAME":"user"}}}

您可以通过两种方式限制结果。要检索特定附加项的值,请使用 --add-on (-a) 选项指定附加项名称。

$ /opt/elasticbeanstalk/bin/get-config addons -a rds {"Description":"RDS Environment variables","env":{"RDS_DB_NAME":"ebdb","RDS_HOSTNAME":"ea13k2wimu1dh8i.c18mnpu5rwvg.us-east-2.rds.amazonaws.com","RDS_PASSWORD":"password","RDS_PORT":"3306","RDS_USERNAME":"user"}}

要返回附加项中特定密钥的值,请添加 --key (-k) 选项以指定密钥。

$ /opt/elasticbeanstalk/bin/get-config addons -a rds -k RDS_DB_NAME ebdb

get-config platformconfig 命令返回一个对象,其中包含对平台版本恒定不变的平台配置信息。在运行相同平台版本的所有环境中,输出是相同的。命令的输出对象有两个嵌入式对象:

  • GeneralConfig – 包含在所有 Amazon Linux 2 平台分支的最新版本中恒定不变的信息。

  • PlatformSpecificConfig – 包含对于平台版本而言恒定不变且特定于该版本的信息。

以下示例显示此命令在使用运行 Corretto 11 平台分支的 Tomcat 8.5 的环境上的输出。

$ /opt/elasticbeanstalk/bin/get-config platformconfig {"GeneralConfig":{"AppUser":"webapp","AppDeployDir":"/var/app/current/","AppStagingDir":"/var/app/staging/","ProxyServer":"nginx","DefaultInstancePort":"80"},"PlatformSpecificConfig":{"ApplicationPort":"8080","JavaVersion":"11","TomcatVersion":"8.5"}}

要返回特定键的值,请使用 --key (-k) 选项指定键。这些键在两个嵌入式对象间是唯一的。您不需要指定包含密钥的对象。

$ /opt/elasticbeanstalk/bin/get-config platformconfig -k AppStagingDir /var/app/staging/

get-config 输出选项

使用 --output 选项指定输出对象格式。有效值为 JSON(默认值)和 YAML。这是一个全局选项,您必须在命令名称之前指定它。

以下示例以 YAML 格式返回配置选项值。

$ /opt/elasticbeanstalk/bin/get-config --output YAML optionsettings aws:elasticbeanstalk:application:environment: JDBC_CONNECTION_STRING: "" aws:elasticbeanstalk:container:tomcat:jvmoptions: JVM Options: "" Xms: 256m Xmx: 256m aws:elasticbeanstalk:environment:proxy: ProxyServer: nginx StaticFiles: - "" aws:elasticbeanstalk:healthreporting:system: SystemType: enhanced aws:elasticbeanstalk:hostmanager: LogPublicationControl: "false"

download-source-bundle(仅限 Amazon Linux AMI)

在 Amazon Linux AMI 平台分支(Amazon Linux 2 以前的版本)上,Elastic Beanstalk 提供了额外的工具 download-source-bundle。在平台部署期间,使用它来下载应用程序源代码。可在 /opt/elasticbeanstalk/bin/download-source-bundle 中获得此工具。

示例脚本 00-unzip.sh 位于环境实例上的 appdeploy/pre 文件夹中。它演示在部署过程中如何使用 download-source-bundle 将应用程序源代码下载到 /opt/elasticbeanstalk/deploy/appsource 文件夹。