亚马逊AWS官方博客

Tag: 大咖专栏

Amazon EC2 Container Service打造容器化的SaaS应用

概述 在SaaS化应用的改造中,容器技术的应用越来越广泛。相对于传统的虚拟机模式,容器化模式的隔离技术“更轻量”,“ 更快速”,“ 更便捷”. 目前业界越来越广的使用“容器”技术用于应用的微服务化改造,将自己产品的一些服务“微服务”化,构建基于云平台的SaaS化应用。 容器技术改造的难点 1. 技术的复杂性 容器技术应用的难点在于生产环境的实施及部署, 一般需要解决 容器资源编排调度 服务的自动发现及注册 容器的监控及报警 容器的扩展及收缩 这只是解决的部分问题,用户还必须去解决生产环境部署中怎样实现高可用部署及与公有云平台的集成问题。这使得Docker的生产化部署变得困难。 2. Docker编排框架的选型 许多人认为容器技术的价值在编排层,目前在容器的编排框架上主要的流派正在上演 “三国演义”包括,Google Kubernetes、Apache Mesos、Docker  DockerSwarm. Kubernetes,Mesos是目前市场上比较成熟的解决方案,占有较大的市场份额。DockerSwarm的优点是与Docker平台中的许多功能的集成,因为它平滑地内置于Docker平台中。上述三个编排框架都开放源代码,用户只需为技术支持服务付费。除了这些标准外还有许多初创公司也推出了自有的编排框架, 如Rancher使用Java语言开发了Cattle,它是Rancher实现的自有的一套基于Docker的编排引擎。众多的开源或自有的编排框架在不断发展,演进。这给客户的技术平台选型也带来极大的挑战。 Amazon EC2 Container Service(ECS) 为了降低容器平台生产部署的复杂性,Amazon ECS提供了一个平台来管理Docker容器。Amazon ECS是一项高度可扩展的高性能容器管理服务,您将不再需要安装、运维、扩展自己的群集管理基础设施。只需进行简单的 API 调用,您便可以启动和停止支持 Docker 应用程序,查询群集的完整状态,使用各种熟悉的功能,包括安全组、Elastic Load Balancing、EBS 卷和 IAM 角色。您可以使用 Amazon ECS 根据您的资源需求和可用性要求在您的群集中安排容器的置放。您还可以集成自己的或第三方的计划程序,以满足业务或应用程序的特定要求。Amazon EC2 Container Service 没有任何附加费用。您只需为您创建的用于存储和运行应用程序的 AWS 资源 (例如 EC2 实例或 EBS 卷) 付费。Amazon […]

Read More

云计算转型成熟度模型: 为您的上云行动制定有效策略的指南

云计算转型成熟度模型为帮助企业制定自己的上云之旅提供了指南。该模型定义了确定成熟阶段的特征,在进入下一阶段前必须完成的每个阶段的转型活动,以及在组织成熟度的四个阶段(包括项目,基础,迁移和优化)中实现的结果。 想了解您的企业目前处于云计算转型之旅的什么位置吗?下表可以帮您确定您的企业目前处于哪个阶段: 一旦您确定了目前处于哪个阶段,就可以遵循 AWS 入云框架(AWS CAF) 的指导开始您的下一步旅程了。CAF 可以为企业的入云之旅提供一个经济且高效的计划 。AWS CAF将复杂的迁移计划过程分解为可管理的重点领域, 无论您是需要帮助定义组织的云计算路线图,做应用程序开发的转型或大规模部署任务关键型工作负载,我们都可以按照AWS Cloud Adoption Framework的原则提供规范性的指导。 来自全面入云客户的建议 除了AWS CAF,我们也想分享来自不同行业的客户的建议,这些客户都已经决定将所有系统都迁移到AWS云平台之上(all-in on the AWS Cloud)。   “我们在入云之旅的沿途学到的一件事就是文化变革,文化变革可以将人们团结起来坚定地沿着这个旅程走下去,并且真正完成组织转型,不仅要说服人们我们选择的是正确的技术,重要的是要赢得民心,这样才能圆满地完成如云之旅。” —迈克·查普尔,IT服务交付高级主管,Notre Dame “我们选取了一些系统部署在AWS上,因为可以在Amazon内部进行快速配置, 这些系统运行得更快。 这是一个巨大的成功。 这种成功使我们对取得更多类似的成功产生了浓厚的兴趣。 所以在开始使用POC验证了AWS功能后,我们立即开始扩展到其他系统,直到完全迁移到AWS 。” —埃里克·盖革,IT的副总裁行动,芝加哥联邦住房贷款银行 “对我们来说,最重要的一件事就是,AWS的确能满足我们业务增长的需要。这不仅需要从能力角度来看,还要从区域扩张的角度来看。 这可以帮助我们把我们的业务模式推广到整个地区,最终跨越全球。” —马尔切洛·韦瑟尔勒,CEO,新加坡邮政   原文链接:https://aws.amazon.com/cn/blogs/publicsector/cloud-adoption-maturity-model-guidelines-to-develop-effective-strategies-for-your-cloud-adoption-journey/ 译者:刘育新 AWS云架构高级咨询顾问,获得AWS解决方案架构师专业级认证和DevOps工程师专业级认证,专注于云迁移解决方案。目前已为多家跨国公司及本土公司、合作伙伴提供上云迁移的咨询设计和实施服务,在加入AWS之前有近20年的IT架构设计和项目管理经验。

Read More

使用Apache Kylin和Amazon EMR进行云上大数据OLAP分析

作者:史少锋 Kyligence资深架构师,Apache Kylin committer & PMC   公司简介 上海跬智信息技术有限公司 (Kyligence) 是由Apache Kylin (首个来自中国的 Apache 软件基金会顶级开源项目) 核心团队组建,专注于大数据分析领域创新的数据科技公司。Apache Kylin是近两年迅速崛起的开源分布式大数据分析引擎,它充分利用Hadoop MapReduce,HBase,Spark等成熟技术,对超大数据集进行预计算(构建Cube),从而当在线查询请求到来时,通过检索Cube以亚秒级低延迟返回结果,实现真正的大数据上的交互式分析。对于用户来说,Kylin屏蔽了底层平台的技术细节,用户只需要掌握多维模型、数据仓库、SQL等知识,就可以通过Kylin的Web界面进行建模,Kylin将自动生成任务对数据进行计算。计算完成后用户即可通过各类可视化工具连入Kylin进行分析,易用性非常高。今天,Apache Kylin已经在众多企业得到广泛应用,如今日头条等。 解决方案 Kyligence为各行各业的客户提供基于AWS公有云平台的Hadoop数据仓库解决方案。Elastic MapReduce (Amazon EMR) 是AWS推出的云上Hadoop方案,这一方案使得Hadoop的部署、监控、扩容变的非常灵活方便。Amazon EMR将计算和存储分离,可以使用S3做数据存储,用户可随需启停Hadoop而不用担心数据丢失,用户只需为运行时使用的资源付费,从而大大减少运维成本。以最近发布的Apache Kylin v2.0和Amazon EMR 5.5(海外版)为例,在AWS云上使用Kylin是非常简单快速的。 1. 启动EMR集群 如果您已经有在运行的,包含了HBase 1.x服务的EMR集群,那么这一步可以跳过,您可以使用现有集群进行此实验。 EMR的启动非常简单,登录AWS控制台,选择Amazon EMR服务,点击“Create Cluster”,选择最新的5.5版本,类型为HBase: 这里您可以选择合适的硬件配置;默认是m3.xlarge 3个节点,其中1个节点为master,另外两个为core节点。选择合适的EC2 key pair,随后点击“Create cluster”,AWS便会开始自动安装和配置Hadoop/HBase集群。 大约20分钟后,集群状态显示为“Waiting Cluster ready”,这意味着集群准备就绪可以使用了。   2. 安装Apache Kylin 2.0 Apache Kylin以Hadoop client的方式运行,使用标准协议/API与集群交互。您可以将它安装在集群的任意节点上,通常建议安装在一个单独的client节点上。在这里我们为了简单,就把Kylin安装在master节点上。 在AWS控制台上,您可以获取SSH到Amazon EMR的方法;点击“Master public DNS”旁边的SSH链接,即可获得,如下图所示: SSH登录到master节点后,创建一个Kylin安装目录,下载并解压Apache Kylin […]

Read More

如何使用Apache Mahout在 Amazon Elastic Mapreduce上构建推荐系统

本篇博文首先简单介绍了机器学习,并给出了Apache Mahout项目的背景情况以及推荐系统中需要注意的一些细节,然后我们会构建一个电影推荐系统并写一个简单的web服务来提供给客户端查询结果。最后我们会列出学习和参与到Mahout社区中的一些方法。 机器学习 机器学习植根于人工智能,这意味着机器学习工具具有对数据问题的认知和自动决策能力,但是目前的机器学习算法并不包含真正意义上的计算思想。尽管如此,机器学习经常采用某种类型的自动化决策,并采用迭代的方式来最大化或最小化与模型性能相关的特征值。 机器学习领域包含许多主题和方法,通常有分类、聚类以及推荐等。 分类是基于其他已知(独立)变量的组合来预测未知(从属)变量的过程,例如预测银行的客户流失或某项音乐服务的订阅者数量。在这两种情况下,我们使用关于客户的已知变量来预测他们停止使用相关服务的趋势。 下表列出了几个可能的已知变量: 变量类型 例子 用户信息 城市、州、年龄、性别 行为方式 银行客户消费习惯、用户播放特定艺术家音乐的频率 环境因素 银行客户的费用评估、用户播放音乐时遭遇缓冲的频率 在进行分类工作时,我们通常针对包含从属变量真实取值的数据进行训练,然后通过比较留存测试数据的预测值和真实值的差距来评估模型的性能。 聚类是寻找事物集合和分组的过程。在几何学中,我们经常讨论N维空间中的聚类向量。举个例子,下面图中在二维空间中展示了四对由向量代表的人,每一个维度是一种支出类别,在本例中是娱乐支出和杂项支出。 左上角图中显示两人的支出数量是相近的,但是消费习惯则完全指向了不同的方向,所以这两人是不相似的。基于同样的原因,左下图中的两人就拥有相近的消费习惯。当然通常我们在分类时引入的维度是多于两个的,甚至是成千上万的维度,并且从数学上可以推广到任意有限的维度空间。 聚类的关键在于我们用来定义相似性的距离度量或者测量方法。一些常用的方法如欧几里德距离、余弦相似度(相似向量间的夹角的余弦值接近0,反之则接近1)以及Tanimoto系数(两个向量相同点占两个向量所有点的比例)。 推荐系统通常接收数据输入,通常是基于行为的数据,然后预测用户最终会倾向于哪个选项。过去十年推荐系统的流行很大程度上得益于Netflix Prize的推广,它在2006年到2009年间奖励给那些击败Netflix现有推荐系统的人。 推荐系统的性能以预测值和真实值之间的比较来得出,在生产系统中通常还结合A/B测试来进行优化。 Apache Mahout 大多数的Hadoop发行版本都包含了Apache Mahout,这其中就有Apache Bigtop和EMR。本质上Apache Mahout是一个机器学习的算法库,包含分类、聚类以及推荐等多种工具,可以被用于计算相似性和生成用户推荐等目的。Mahout使用Hadoop的Mapreduce框架来执行具体的计算过程,现在也支持新的计算框架,比如UC Berkeley’s AMPLab的Spark。 Mahout第一次bug修复发生在2008年1月,直到本篇博文写就之时,总共有1700个Jira tickets,其中54个依然是open状态。时至今日,社区中的贡献者和用户仍然在不停地针对代码和文档进行优化工作。 推荐系统 大多数人感觉到推荐系统的存在是从网页开始的,后台推荐系统会将结果显示在用户浏览网页的某一部分之上。这些包含推荐结果的网页帮助用户找到想买的商品、想听的音乐、想看的电影、想雇佣的人,甚至是约会的对象。 GroupLens研究团队于上个世纪90年代早期构建了USENET文章推荐系统,自此推荐系统技术开始了快速发展。随着时间的推移,推荐对象本身也发生了变化,除了新的文章,还有大量的在线行为值得分析,比如用户在网页上的点击链接行为;点赞和档案浏览;购物行为以及听音乐和看电影。 这些发展提供了基于用户行为进行推荐的可能性,能够帮助我们进一步改进推荐系统。 在USENET示例中,用户扫描作者和主题的文章列表,点击,阅读和关闭文章。 在线零售网站,购物者搜索产品,浏览产品页面,点击照片放大,阅读评论,并将产品添加到购物车。 在流媒体音乐网站上,音乐消费者搜索艺术家或专辑,播放曲目,通过曲目快速播放,并将艺术家添加到收藏夹,流媒体视频网站的工作方式类似。 在专业或个人联系的社交网站上,用户搜索并与其他人互动。 每个示例包括用户以某种方式与某些类型的项目进行交互的用户。 构建推荐系统 为了说明如何在EMR上通过Mahout建立分析型作业,我们决定构建一个电影推荐系统。我们会使用用户打分的电影评分数据,这些数据由GroupLens团队提供。推荐系统最终会为每一位用户推荐自己最感兴趣的电影。 1.  登录AWS账户 2.  配置EMR ruby客户端 3.  启动EMR集群 ./elastic-mapreduce –create –alive –name mahout-tutorial […]

Read More

AWS WAF – Web 应用程序防火墙初体验

1. 背景介绍 AWS WAF ,全称是Web Application Firewall ,即Web 应用程序防火墙,可以帮助用户保护Web 应用程序免受常见的Web漏洞攻击。通常这些攻击会损害Web应用的安全性,影响可用性,消耗过多的资源,增加成本,还降低响应速度和用户体验。 WAF可以让用户创建定制规则进行流量筛选,阻隔恶意访问,保障正常请求。比如,可以根据 IP 地址、HTTP 标头、HTTP 正文或 URI 字符串来筛选 Web 请求,这样便能阻止诸如 SQL 注入或跨站点脚本等常见攻击模式。 和其它诸多 AWS 服务一样,WAF 的所有功能也可以通过AWS管理控制台或API进行配置。这便利了用户团队的不同角色,不论是开发人员、DevOps工程师还是安全审查专家都可以方便使用,从开发到部署的全过程系统地管理Web应用的安全。 WAF 和AWS的Web相关服务紧密结合,目前支持CloudFront和Application Load Balancer。AWS WAF 让您能够创建集中化的规则集合,而后部署到多个网站上。用户通常有多个网站和 Web 应用程序,使用WAF可以只定义一组规则并复用于多个应用程序上。WAF也是AWS全托管的服务,用户无需担心其扩展和可用性。只需在正确的资源上启用WAF,无需部署任何额外软件即可完成部署。并且只需要部署一次,即可以全球的边缘节点全部生效。 作为防火墙,WAF当然也少不了监控和报警。WAF 可以让用户设置条件来监视哪些请求。提供准实时地 Web 流量监测报告,并以此信息来创建新的规则或使用 Amazon CloudWatch 的进行报警。 今天,我们以WAF实现防盗图这个常见应用场景,帮助大家快速上手,体验其强大和便捷。 2. 部署与配置WAF 现在主流的Web应用都使用了无cookie域名来加速静态内容,我们这里也进行类似的部署,如网站域名是 example.com,图片服务使用另一个域名 example_img.com。禁止盗图的效果可以从下表来概述。 调用图片的域名 响应效果 *.example.com 200 OK 其它非法域名 403 Forbidden WAF目前支持CloudFront和Application […]

Read More

通过AWS Config 管理AWS服务配置

在之前的一篇安全相关的文章《从永恒之蓝开始,安全防范没有结束》中,提到通过AWS Config自动规范AWS服务的安全、合规方面的配置。 为更好遵从各行业的合规要求,构建安全的IT环境,企业的安全团队一般都会在明确安全/管理边界的前提下,选择相关安全框架,用对应的风险评估方法梳理出符合自身业务特点的安全模型。根据安全模型,通常也会用各种文档标准化抽象为各种管理策略,例如可能包含以下常见的内容: 用户权限策略 访问控制策略 服务器安全策略 应用接入策略 网络分区策略 数据传输策略 数据存储策略 备份归档策略 日志记录策略 审计管理策略 ………. 在实际的应用场景中,标准策略可能会因为业务的变化或管理方式的变化动态调整,如何持续评估和审核在AWS云端的资源配置的合规性是否与企业规划一致?如何帮助用户在云端更好的实现变更管理,安全分析甚至自动修正不合规的配置 ?这种场景下,可以考虑用AWS Config 服务来帮忙。 一、AWS config 是什么 AWS Config 是一项托管服务,借助 Config您可以盘点AWS 资源、查看配置更改以及 AWS 资源之间的关系并深入探究详细的资源配置历史记录。使用 Config,还能通过自定义规则来定义所需的资源配置、内部最佳实践和指南,并依据这些规则评估您记录的配置。 AWS Config的主要应用功能: 评估您 AWS 资源配置是否具备所需设置。 获得与您的 AWS 账户关联的受支持资源的当前配置快照。 检索您的账户中的一个或多个资源配置。 检索一个或多个资源的历史配置。 在资源被创建、修改或删除时接收通知。 查看不同资源之间的关系。例如,您可能想要找到使用特定安全组的所有资源 AWS Config工作原理 更多AWS Config的信息可以参考https://aws.amazon.com/cn/config/ 二、 AWS config 配置测试 为了更好了解AWS Config的工作过程,以下 将以AWS安全组的配置监控为例做一个简短测试 。 1. 测试场景: […]

Read More

Amazon Rekognition 现支持名人人脸识别

AWS在2016年底的re:Invent大会上发布了基于深度学习的图像分析服务Amazon Rekognition, 可以用以检测对象、场景和面孔,可以搜索和比较面孔,还可以识别图像中的不当内容。Amazon Rekognition 通过一系列简单的 API 来提供强大且准确的图像分析功能,消除了在应用程序中构建图像识别功能的复杂性。您无需具备计算机视觉或深度学习专业能力,即可利用 Rekognition 可靠的图像分析功能。借助 Rekognition API,您可以轻松快速地在任何 Web 应用程序、移动应用程序或互联设备应用程序中构建图像分析功能。 最近,AWS又为Amazon Rekognition增加了新的功能——名人识别。这个功能可以识别在政治、娱乐、体育、媒体、商业等各个领域的名人。名人识别是全球性的功能,而名人的名单也会不断增加。 要使用名人识别的功能,只需调用新增的RecognizeCelebrities API。此API首先检测图像中的人脸,然后返回匹配出的名人信息,和该名人在IMDB上的链接(如果有)。 您现在就可以使用AWS管理控制台,通过简单的上传或者拖拽(不会存储您的图像),体验名人识别的功能。 那我们再来看看Amazon Rekognition都能够识别哪些名人吧。 Amazon Rekognition已经能够识别出新科法网冠军,年仅20岁的拉脱维亚新星奥斯塔彭科。 Amazon Rekognition还能够识别出“国民老公”王思聪和他的父亲王健林。 利用Amazon Rekogntion,妈妈再也不用担心我分不清楚王珞丹和白百何了。 如此强大的Rekognition API 让您能够轻松地在应用程序中构建强大的视觉搜索和发现功能。Amazon Rekognition 已经与常用的 AWS 服务 (如 Amazon S3 和 AWS Lambda) 无缝集成,同时能够提供一致的响应时间而无需预置额外的容量;而且您只需为您分析的图像和存储的面孔元数据付费。无最低费用,无预先承诺。 Amazon AI一致致力于构建人人都能使用的人工智能环境,使每一位开发人员都能能找到适合的人工智能解决方案,更多信息,请参见: https://aws.amazon.com/cn/amazon-ai/ (注: 文章中的图片均来自互联网)   作者介绍 王宇博 AWS资深产品拓展经理,主要负责AWS大数据、人工智能、高性能计算相关服务和解决方案在中国的业务拓展。 在加入AWS之前,他在IBM担任资深产品经理,主要负责虚拟化、云计算等相关产品线在中国的市场战略推广及业务发展。 他具有近15年的IT行业经验,涉及软件开发、技术咨询、解决方案销售、产品策划与管理等领域。

Read More

深入Serverless—让Lambda 和 API Gateway支持二进制数据

1.概述 Serverless即无服务器架构正在迅速举起,AWS Lambda 和AWS API Gateway作为Serverless 架构主要的服务,正受到广泛关注,也有越来越多用户使用它们,享受其带来的便利。传统上来说,Lambda 和API Gateway主要用以实现RESTful接口,其响应输出结果是JSON数据,而实际业务场景还有需要输出二进制数据流的情况,比如输出图片内容。本文以触发式图片处理服务为例,深入挖掘Lambda 和 API Gateway的最新功能,让它们支持二进制数据,展示无服务器架构更全面的服务能力。 先看一个经典架构的案例——响应式主动图片处理服务。 Lambda配合 S3 文件上传事件触发在后台进行图片处理,比如生成缩略图,然后再上传到 S3,这是Lambda用于事件触发的一个经典场景。 http://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html 在实际生产环境中这套架构还有一些局限,比如: 后台运行的图片处理可能无法保证及时完成,用户上传完原图后需要立即查看缩略图时还没有生成。 很多图片都是刚上传后使用频繁,一段时间以后就使用很少了,但是缩略图还不能删,因为也可能有少量使用,比如查看历史订单时。 客户端设备类型繁多,一次性生成所有尺寸的缩略图,会消耗较多Lambda运算时间和 S3存储。 如果增加了新的尺寸类型,旧图片要再生成新的缩略图就比较麻烦了。 我们使用用户触发的架构来实现实时图片处理服务,即当用户请求某个缩略图时实时生成该尺寸的缩略图,然后通过 CloudFront缓存在CDN上。这其实还是事件触发执行Lambda,只是由文件上传的事件主动触发,变成了用户访问的被动触发。但是只有原图存储在S3,任何尺寸的缩图都不生成文件不存储到S3。要实现此架构方案,核心技术点就是让Lambda和API Gateway可以响应输出二进制的图片数据流。 总体架构图如下: 主要技术点: 涉及服务都是AWS完全托管的,自动扩容,无需运维,尤其是 Lambda,按运算时间付费,省去 EC2 部署的繁琐。 原图存在 S3 上,只开放给 Lambda 的读取权限,禁止其它人访问原图,保护原图数据安全。 Lambda 实时生成缩略图,尽管Lambda目前还不支持直接输出二进制数据,我们可以设置让它输出base64编码后的文本,并且不再使用JSON结构。配合API Gateway可以把base64编码后的文本再转换回二进制数据,最终就可以实现输出二进制数据流了。 用 API Gateway 实现 图片访问的URL。我们常见的API Gateway用来做RESTful 的API接口,接口的 URL形式通常是 /resource?parameter=value,其实还可以配置成不用GET参数,而把URL中的路径部分作参数映射成后端的参数。 回源 API Gateway,缓存时间可以用户自定义,建议为24小时。直接支持 HTTPS,支持享用AWS全球边缘节点。 CloudFront […]

Read More

使用AWS Lambda和Amazon DynamoDB自动管理AWS CloudFormation模板中的Parameters和Mappings

背景介绍 相信AWS的用户对AWS CloudFormation都不会陌生。AWS CloudFormation是实现IAC(Infrastructure as Code)自动化运维的一项重要服务,可以帮助用户对 AWS资源进行建模和设置,以便能花较少的时间管理这些资源。CloudFormation中有两个重要选项:Mappings段和Parameters段,可以帮助用户组织模板里的参数和映射,让用户更好地自定义堆栈,以实现模板的重用和复用。比方说可以用Mappings管理对应AWS上不同region的AMI ID,或者管理企业内部的不同部门。 但是当用户所在的组织越来越多地采用IAC自动化时,mappings和parameters的数量也会急剧增长,给CloudFormation模板的编写和维护带来复杂度。 解决方案 本文里我们介绍一种方法:用当前流行的Serverless计算AWS Lambda 和Amazon DynamoDB自动地管理AWS CloudFormation模板中的Parameters和Mappings。 本文中主要用到了以下几种 AWS服务: 1、DynamoDB表:Amazon DynamoDB是一个NoSQL数据库,这里我们采用它保存CloudFormation模板中所有的mappings和parameters。不仅可以实现集中存放,而且可以依赖DynamoDB的接口实现方便快速地增删和查找。比方说在我们的sample code中,整个企业采用这样一张表:partition key包括组名(比如说team1、team2等)和环境(比如说development、test、production等),sort key保存应用的名字。这个表里的数据类似这样: 当我们把这些数据都insert到DynamoDB中后,可以在AWS console里看到表中的内容是这样的: 2、Lambda方法:AWS Lambda又称为Serverless的计算,通过它你可以运行你的code而不需要预配置或者管理任何服务器。这里我们采用Lambda方法实现CloudFormation和DynamoDB之间的关联,它从CloudFormation模板接收primary key和sort key作为输入,查找DynamoDB表,并且返回所有的key-value数据。 3、Custom lookup resource:这是CloudFormation里的一个自定义资源,与一个Lambda方法绑定。CloudFormation除了可以定义已有的AWS资源,还支持几种自定义资源,包括这种以Lambda方法作为后端的自定义资源。当这种自定义资源创建、更新或者删除时,CloudFormation自动地向Lambda API发起请求,引发方法并将请求的数据传给Lambda方法,本例中所请求的数据是primary key,返回的数据是key-value数据。通常在一个组织中只需要建立这一个custom resource,所有的CloudFormation模板都可以复用它。下图是sample code里建立的custom resource: 让我们将这几种服务组合起来,并且定义好它们之间的交互顺序,整个解决方案就是下图展示的这样: 那么整个的交互顺序如下: 1、用户创建DynamoDB表,插入所需的mappings和parameters数据。 2、CloudFormation模板中的custom resource调用Lambda方法,用组名和环境名称(“teamname-environment”)作为partition key,用应用名称(”appname”)作为sort key。 3、Lambda方法用partition key和sort key作为输入查询DynamoDB表。 4、DyanamoDB将结果返回给Lambda方法。 5、Lambda方法将这些key-value数据作为结果返回给模板中的custom resource。 6、custom resource拿到数据后,堆栈里的其他资源可以通过Fn::GetAtt的方式获得这些数据。 结论 通过这种方式,可以将我们创建堆栈所需的固定部分保存在模板中,而将可变部分mappings和parameters保存在方便增删改查的DynamoDB中,用Lambda实现两者之间的关联。对于大型组织来说,这样可以提高运维效率,也是使用CloudFormation的一种最佳实践。 参考 可以在我们的网站上下载到相关的sample […]

Read More

使用AWS Application Load Balancer实现基于主机名的路由分发

负载均衡器在应用架构设计中是重要的组件,负责接收来自客户端的流量,将流量按一定的算法转发给后端的一组实例,并将后端实例的响应再返回给客户端。AWS提供一款托管的负载均衡服务, Elastic Load Balancer(简称ELB),ELB除了能够做负载均衡分发流量之外,还能对后端的实例健康检查,并将流量仅转发给通过健康检查的实例,同时ELB还能与自动扩展组(Auto Scaling Group)以及监控服务(CloudWatch)配合,设置根据后端实例CPU使用率的高低,流量大小,处理时间长短等指标,自动完成添加或缩减实例数量。 ELB又分两种,Classic ELB和Application Load Balancer(简称ALB),ELB的一个重要组件是侦听器,前者支持4层和7层的协议和端口(TCP,SSL,HTTP,HTTPS),对后端实例按轮询(TCP协议)或者最少未完成请求数(HTTP协议)的算法对后端实例进行流量转发。 ALB是应用层负载均衡器,支持HTTP/HTTPS的协议,与Classic ELB不同的是,ALB支持基于请求路径的分发,即根据HTTP标头的请求URL路径的不同,分发给后端不同的目标组(Target Group)。目标组是一个或多个目标(这里的“目标”可以是EC2实例)的集合,通常一组目标运行相同的应用或服务,一个目标可以注册到一个或多个目标组中。在目标组中可以配置运行状况检查,实例监控,等待连接耗尽及粘性会话等等。ALB中的规则决定了如何将流量路由到后端不同的目标组,每条规则对应一个目标组、条件及优先级,一旦匹配规则,则执行相应的流量路由,比如将请求URL中路径是/api的请求路由给运行api服务的目标组,将请求URL中路径是/mobile的访问路由给mobile的目标组。 两者的转发模型可见下图。 过去ALB仅支持基于请求路径的流量分发,客户为了实现基于主机名的分发往往使用多组Classic ELB或Classic ELB + Nginx集群的方式,现在ALB提供了新功能,即可以基于主机名进行路由分发,详情请参考: https://aws.amazon.com/cn/elasticloadbalancing/applicationloadbalancer/ 接下来,我们将详细介绍如何使用ALB完成基于主机名的流量分发。 本例中我们将创建以下资源: (1)1个ALB; (2)5个目标组,分别为api-prod,api-sandbox,mobile-prod,mobile-sandbox,default; (3)每个目标组注册不同的EC2实例,其中api-prod目标组将注册两个EC2实例; (4)一个侦听器; (5)创建基于主机名和路径的分发规则,实现流量的分发。 1、创建目标组 2、输入目标组名称,选择协议(HTTP/HTTPS)及端口,ALB所在的VPC,配置运行状况检查(协议,路径,阈值等)。此处我们选择了默认HTTP,路径/。 3、注册实例 目标组的重要实体是目标(比如说EC2实例),在此将实例注册到目标组下面,注意选中实例后点击”添加到已注册”,然后保存。此处我们选中了该目标组对应的实例ALBDemo_api_prod,ALBDemo_api_prod_2两个实例。您可以向一个或多个目标组注册多个目标实例以便满足需求。只要注册过程完成且新注册的目标实例通过初始运行状况检查,负载均衡器就会开始将请求路由至此目标。同样,您也可以从目标组取消目标注册。 同理创建api-sandbox,mobile-prod,mobile-sandbox,default目标组,此处省略创建过程。 创建完成后,选中目标组,在目标页我们可以看见注册到该目标组的实例的状态,healthy表示实例正常,另外该状态还有unhealthy(实例未通过健康检查),initial(实例注册中),unused(无流量传入,该目标组未注册到ALB)等。 4、创建负载均衡器 下面我们来创建ALB 5、选择ELB类型 这里我们选择应用程序负载均衡器ALB 6、配置负载均衡器 输入ALB名称,模式可选择该ALB面向Internet或是内部使用;配置侦听器协议,端口,根据需要可以配置多个侦听器,此处我们选择HTTP/80;同时选择ALB部署在哪个可用区及子网,建议多可用区方式部署,同样将应用部署在多可用区,达到高可用的设计目标。 7、配置安全设置 如果侦听器配置了HTTPS,需要配置证书。使用HTTPS,ELB可以完成与客户端的SSL安全连接的建立与SSL卸载,减轻后端服务器的压力。 如果从ACM(AWS Certificate Manager)申请过证书,则可以直接选择该证书,也可以自己上传证书到IAM或者在此上传证书。由于此次我们仅配置了HTTP 80端口侦听器,此处将不配置证书。配置安全证书的截图如下: 8、配置安全组 安全组的概念及用法此处不做复述,我们可以为ALB配置安全组,仅允许指定的协议、端口及来源的流量进入ALB 9、配置路由 这里可以选择”现有目标组”,选择我们前面的创建的default目标组。此处只能选择一个目标组,我们可以在创建完成后,对此ALB添加编辑规则的时候对应路由规则添加目标组。 10、注册目标 11、审核 创建完成后,可以在负载均衡器的控制台看到该ALB的相关描述与信息。 12、配置规则 选中该ALB,在页面下方的侦听器下按端口选择“查看/编辑规则”。 13、添加/编辑规则 […]

Read More