以视频分析为主要载体的人工智能算法在泛安防场景中是怎样落地的?>> 了解详情
写点什么

使用配置文件自定义 AWS Elastic Beanstalk

  • 2012 年 12 月 18 日
  • 本文字数:2017 字

    阅读完需:约 7 分钟

用户现在可以通过 YAML 配置文件来自定义 AWS 的 Elastic Beanstalk 的配置了。你可以通过配置来进行如下操作:下载并安装包、下载并解压文件、创建文件、创建用户 / 组、运行命令、启动 / 停止服务、定义容器的设置等。 过去,你只能通过创建自定义的亚马逊系统镜像(AMI)来配置 Elastic Beanstalk 环境,或者修改你的应用使其能够在部署时自动配置。自定义的 AMI 创建后,需要进行维护,因为它不会对操作系统、应用或 AWS Elastic Beanstalk 主机管理器进行任何更新。相比之下,配置文件是更好的选择。

在 Tomat 6/7、Python 2.6 和 Ruby 1.8.7/1.9.3 等环境中都可以使用 Elastic Beanstalk 配置文件。亚马逊虽然计划支持 PHP 和.NET 的环境,但并未透露具体计划。如果你有安装了 Tomcat 的 Elastic Beanstalk 的环境,那你需要进行迁移以获得Elastic Beanstalk 配置文件的特性。你需要登陆AWS 控制台查看环境的容器类型,来验证你当前的环境的容器类型是否满足需求。

Elastic Beanstalk 配置文件的扩展名必须是.config。你可以在.ebextensions 目录下建立多个.config 文件,这是应用程序目录的一级目录。.ebextensions 目录和 Java 中 WAR 文件的 WEB-INF 目录一样,都是一级目录。

Elastic Beanstalk 配置文件基于 YAML,其中的元素有:

packages:packages 元素支持下载安装已打包好的应用和组件。它支持的包管理器有 apt,yum,rubygems,python 和 rpm。下面是使用 yum 添加 logwatch 的例子:

复制代码
packages:
yum:
logwatch: [7.3.6]

sources:sources 元素允许你下载并解压包。你可以引用外部地址,或是其他软件源。它支持的格式有 tar,tar+gzip,tar+bz2 以及 zip。下面以从 GitHub 下载并解压最新版本 jQuery 为例:

复制代码
sources:
/home/ec2-user/jquery: https://github.com/jquery/jquery/zipball/master

files:files 元素允许你创建文件,文件内容可以直接写在配置中或是从指定 URL 获取。文件以词典顺序写入磁盘。下面以创建 README 文件并从外部 URL 获取内容为例:

复制代码
files:
/home/ec2-user/README.md: https://raw.github.com/jquery/jquery/master/README.md

users, groups:users 元素允许你在 EC2 的实例上创建 Linux/UNIX 的用户。groups 元素允许你创建 Linux/UNIX 组并指定组 ID。下面是 AWS 文档中的一个例子:

复制代码
users:
- myuser :
groups:
- group1
- group2
uid: 50
homedir: "/tmp"
groups:
- group1 : 45
- group2 : 99
- group3

commands:commands 元素允许你执行 shell 命令。所有命令将按照字典序顺序执行。这些命令在应用和 Web 服务器安装前以及应用文件解压缩之前运行。下面以重命名先前我们下载的文件为例:

复制代码
commands:
rename-README:
command: mv README.md README
cwd: /home/ec2-user

container_commands__:container_commands 元素允许你执行容器命令。这些命令在应用和 Web 服务器安装完成、应用文件解压后,应用文件部署之前运行。container_commands 命令按照字典序顺序执行。在自动伸缩组中,有一个作为 leadr 角色的实例。如果 leader_only 的值为 true,那么命令只在 leader 实例上运行。下面以在 leader 实例上使用定制的 Tomcat 的 server.xml 为例:

复制代码
container_commands:
replace-server_xml:
command: cp .ebextensions/server.xml /etc/tomcat7/server.xml
leader_only: true

services:services 元素允许你定义实例运行时,哪些服务要启动,哪些服务要停止。这个简直同时可以允许你指定与 source、package、file 的关联关系。下面是 AWS 文档中的一个例子。

复制代码
services:
sysvinit:
- myservice:
enabled: true
ensureRunning: true

option_settings__:option_settings 元素允许你定义容器的设置。这些值将以环境变量的形式存在于亚马逊 EC2 的实例中。Python 容器支持的命名空间有 aws:elasticbeanstalk:application:environment,aws:elasticbeanstalk:container:python 和 aws:elasticbeanstalk:container:python:staticfiles 。Java 容器支持的命名空间有 aws:elasticbeanstalk:application:environment 和 aws:elasticbeanstalk:container:tomcat:jvmoptions 。Ruby 容器支持的命名空间有 aws:elasticbeanstalk:application:environment 。下面以将 Tomcat 中 JVM 的 max heap size 设置为 512MB 为例。

复制代码
option_settings:
- namespace: aws:elasticbeanstalk:container:tomcat:jvmoptions
option_name: Xmx
value: 512m

如需了解更多的信息,请访问自定义配置AWS Elastic Beanstalk 环境页面。对于YAML 的新用户可以使用在线YAML 解析器,对创建配置文件有很大帮助。

查看英文原文 Customize AWS Elastic Beanstalk with Configuration Files


感谢马国耀对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2012 年 12 月 18 日 07:031288
用户头像

发布了 36 篇内容, 共 12.3 次阅读, 收获喜欢 1 次。

关注

欲了解 AWS 的更多信息,请访问【AWS 技术专区】

评论

发布
暂无评论
发现更多内容

Android:三四十岁的大龄程序员如何对后辈评价“太水技术低

Android架构

android 程序员 移动开发

基线模型开源分享及深度讲解 | 2021 MAXP 直播第二讲:基于DGL的图机器学习任务

亚马逊云科技 (Amazon Web Services)

人工智能 图神经网络 创新大赛

Android题集四大组件之Content provider、BroadcastReceiver

Android架构

android 程序员 移动开发

Android高阶:了解这些知识点,学习Binder就不成问题(1)

Android架构

android 程序员 移动开发

Android高阶:了解这些知识点,学习Binder就不成问题,androidapp开发教程推荐

Android架构

android 程序员 移动开发

关于数据导入,教你几招

Simon

MySQL

Base64 的原理、实现及应用,面试字节跳动Android工程师该怎么准备

Android架构

android 程序员 移动开发

Android:怎么看待大厂面试门槛越来越高,,让你明明白白的使用RecyclerView

Android架构

android 程序员 移动开发

Android:手把手教你实现在XML中配置网易云歌手详情滑动效果

Android架构

android 程序员 移动开发

Android:金九银十怎么从中小企业挤进一线大厂?大厂面试题问的深度

Android架构

android 程序员 移动开发

Android音视频--H,flutter小程序开发

Android架构

android 程序员 移动开发

App基于手机壳颜色换肤?先尝试一下用 KMeans 来提取图像中的主色

Android架构

android 程序员 移动开发

App怎么做才能永不崩溃,一文详解

Android架构

android 程序员 移动开发

App 竟然是这样跑起来的 —— Android App_Activity 启动流程分析

Android架构

android 程序员 移动开发

Android面试|任何东西只要够深,都是一把刀!性能优化都没搞好就别想着去找对象了

Android架构

android 程序员 移动开发

Android高工面试(难度:四星(1),2021Android高级面试题总结

Android架构

android 程序员 移动开发

Android高级工程师BAT面试题及知识点整理大全(Java基础+Android

Android架构

android 程序员 移动开发

Android:年过35岁的程序员还有出路吗?面试了一个-46-岁程序员后

Android架构

android 程序员 移动开发

这个深秋,StarRocks喊你一起来撸码 | StarRocks Hacker Meetup 报名开启

StarRocks

数据库 Meetup StarRocks

BAT同系列公司面试总结,哪些你所不知道的,学习android的好书

Android架构

android 程序员 移动开发

BAT常见Android面试20题详解,985研究生入职电网6个月

Android架构

android 程序员 移动开发

深入剖析Redis客户端Jedis的特性和原理

vivo互联网技术

数据库 redis Jedis 集群

一个递归调用引发的 “血案”

神策技术社区

AsyncTask相关知识,安卓工程师面试题及答案

Android架构

android 程序员 移动开发

Android高工面试(难度:四星,2021大厂Android知识点总结

Android架构

android 程序员 移动开发

APP瘦身大法--AndResGuard的使用,android地图开发框架

Android架构

android 程序员 移动开发

(完整版)直播回顾:2021 MAXP 无服务器赛题讲解

亚马逊云科技 (Amazon Web Services)

人工智能 云计算 创新大赛

App黑白化实现扩展,一键护眼模式,给App,安卓事件分发机制面试

Android架构

android 程序员 移动开发

Android高级面试题大全(持续更新中),字节跳动厂内部超高质量Flutter+Kotlin笔记

Android架构

android 程序员 移动开发

Android:让你明明白白的使用RecyclerView—,retrofit优点

Android架构

android 程序员 移动开发

APP瘦身大法--AndResGuard的使用(1),为什么阿里的程序员成长如此之快

Android架构

android 程序员 移动开发

使用配置文件自定义AWS Elastic Beanstalk-InfoQ