亚马逊AWS官方博客

AWS Team

Author: AWS Team

走近Fargate,动手配置属于自己的Fargate集群

Fargate简介 就在大约三年前,AWS宣布Amazon Elastic Container Service(Amazon ECS)在AWS上大规模运行和管理容器。 利用Amazon ECS,您可以高规模和高可用性地运行您的工作负载,而无需担心运行自己的集群管理和容器编排软件。 现在,AWS宣布推出AWS Fargate ,使您能够将容器作为基本的计算单元,而无需管理底层实例。 借助Fargate,您不需要在集群中配置,部署或扩展虚拟机来运行容器。 今天,Fargate可以与Amazon ECS一起使用,计划在未来支持Kubernetes(Amazon EKS)的亚马逊弹性容器服务。 Fargate具有灵活的配置选项,因此您可以紧密匹配您的应用程序需求和精确的每秒计费。 无需管理任何EC2实例 基于任务的源生API 计费到CPU和Memory级别,按照Task使用的这些资源按秒计费 Fargate优势 无需管理群集 使用 AWS Fargate,您只需考虑容器,以便能够集中精力构建和运行应用程序。AWS Fargate 消除了管理 Amazon EC2 实例群集的需要。您不必再选择实例类型、管理群集调度和优化群集利用率。使用 Fargate,所有这些麻烦都将不复存在。 无缝扩展 借助 Fargate,您可以轻松扩展应用程序。您不必再担心是否为容器应用程序预置了足够多的计算资源的问题。在您指定应用程序要求 (例如 CPU、内存等) 后,AWS Fargate 会以高度可用的方式管理运行您的容器所需的所有扩展和基础设施。您不再需要决定何时扩展群集,也不需要将其打包即可实现最佳利用率。使用 Fargate,您可以在几秒钟内启动数以万计的容器,并轻松扩展以运行最重要的关键任务型应用程序。 与 AMAZON ECS 和 EKS 集成 AWS Fargate 与 Amazon ECS 无缝集成。您只需按照定义 Amazon ECS 的方式定义您的应用程序。您可以将应用程序打包到任务定义中,指定所需的 CPU […]

Read More

如何使用AWS CodePipeline,AWS CodeBuild与AWS CloudFormation实现Amazon ECS上的持续集成持续部署解决方案

作者:郭威 1. 前述 通过本文章,您将了解如何通过AWS CodePipeline,AWS CodeBuild,AWS CloudFormation 来实现基于Amazon ECS的持续集成持续部署方案。 开发人员在GitHub中提交的新版本代码,会自动触发代码获取,打包镜像,上传镜像仓库,更新新版本容器服务,注册到负载均衡器等操作。 方案中会涉及使用如下组件: GitHub:示例使用的源,一个提交到GitHub上的PHP示例网站。AWS CodePipeline支持GitHub, AWS CodeCommit服务,或者S3作为源。此次实例使用的Demo软件工程可以从以下链接Fork: https://github.com/awslabs/ecs-demo-php-simple-app Docker:作为发布服务使用的容器。演示方案的Build阶段会使用AWS CodeBuild托管的ubuntu/docker 1.12.1基础镜像。 Amazon EC2:作为ECS的容器宿主机集群。 Amazon VPC:服务所在的网络。 Amazon ECS:AWS托管的容器编排服务。文档链接 http://docs.aws.amazon.com/zh_cn/AmazonECS/latest/developerguide/Welcome.html Amazon ECR:AWS 托管的容器镜像仓库。文档链接 http://docs.aws.amazon.com/zh_cn/AmazonECR/latest/userguide/what-is-ecr.html AWS CodePipeline:AWS 托管的持续集成持续交付服务,可以快速可靠的更新应用程序和服务,集成支持GitHub,Jenkins等主流开源工具。文档链接 http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/welcome.html AWS CodeBuild:AWS 托管的构建服务,用于打包代码生成可部署的软件包。文档链接 http://docs.aws.amazon.com/zh_cn/codebuild/latest/userguide/welcome.html AWS CloudFormation:批量创建和管理AWS资源的自动化脚本。文档链接 http://docs.aws.amazon.com/zh_cn/AWSCloudFormation/latest/UserGuide/Welcome.html 2.方案架构 流程如下: 开发者将一个新版本的代码工程提交到GitHub Pipeline的Source阶段,检测到指定GitHub的repo有新版本的更新,从GitHub上拉取代码工程,开启已设定好的CICD Pipeline Pipeline的Build阶段,AWS CodeBuild将新版本的代码工程打包为Docker镜像 AWS CodeBuild将打包好的镜像推送到Amazon ECR Pipeline的Deploy阶段,AWS CodePipeline触发AWS CloudFormation,其定义了Amazon ECS的Task […]

Read More

帮助企业成功迁移到云的 7 条最佳实践

“生命是一场旅程。如果停下脚步,就无法看到新的风景。”-Pope Francis 去年十二月,我在一篇文章中提到云将成为新常态,并将成熟企业采用云的过程比作一场旅程。这场旅程是一个需要时间的迭代过程。在那篇文章中,我列出了企业云之旅中常见的几个阶段。在去年的十一月份,我还写了一篇详细介绍成功的云企业会做的十件大事的文章。 在那以后,我跨越重洋跟很多公司的领导人会了面,这些公司都使用了云作为满足其业务目标的平台。虽然我以前文章中的观点仍然适用,但我对云之旅的想法有了一些改变。 © Anne Worner https://www.flickr.com/photos/wefi_official/14053017844/ 这篇文章旨在介绍我的新思维,并阐述了我访问在迁移过程中取得累累硕果的企业后总结出的七条最佳实践。在接下来的几个月中,我会深入介绍每条最佳实践,并谈谈我所看到的适合 (及不适合) 每条实践的做法。我很乐意听到您的反馈意见,在撰写此系列文章的过程中,欢迎大家跟我分享自己的经验或想法。 在介绍最佳实践之前,我要再重申一下:云之旅是一个需要时间的迭代过程。因为云颠覆了 IT 的交付和使用方式,这是您反思和重新审视组织 IT 运营方式的大好时机。换句话说,云之旅是一次实施变革管理的练习。它将触及您的技术、管理、工作职能、组织结构图和公司的许多其他方面。好消息是,已有成千上万家公司踏上了云之旅,我们可以相互学习。 以下是我观察到的七条最佳实践,它们都是云迁移企业取得成功的一环: 1. 提供执行支持 自上而下的支持对于创造重大变革至关重要 — 无论这种变化是技术上的还是文化上的。首席信息官/首席技术官的职责总是在不断地发展,在当今的环境下,技术主管需要成为公司的首席变革管理官 (CCMO™)。这项工作包括获得执行团队的支持,并为您自己的团队提供支持和后勤保障。这意味着提供明确的目的,将业务和技术目标映射到期望的结果,并制定 (或打破) 新的规则。我将在下一篇文章中更详细地讨论这个问题,并且打算在 re:Invent 举行几次有关该主题的会议。(希望在会上与您相遇!) 2. 教育员工 人们往往会对未知事物心生畏惧。当人们感到害怕时,就会更坚持自己已习惯的做法。在某些情况下,这会给您的云之旅造成障碍。让您的员工掌握新技能是减轻恐惧心理的好办法。聘用具有适当技能的新人也很有效,但这种方法的实施难度很高。给已掌握系统知识的员工机会去学习和参与可加快您的迁移步伐。 3. 培育试验文化 与本地环境相比,云中的试验成本更低。在云中进行试验几乎没有或只需很少的前期投入,万一试验失败,对您也没有什么影响。当您将每个项目当作一场能够从中汲取经验教训的试验看待时,您就有可能会创造出一个“教育飞轮”,帮助组织慢慢对其加以改进。有些企业会从某个 IT 部门的单一项目入手,有些则立即着手进行多个项目。不管采用何种策略,重要的是,一定要记得总结成功经验,汲取失败教训。配合适当的执行支持,您将有机会培育出一种持续的试验文化。 4. 寻找合作伙伴 大多数企业在交付 IT 时都会或多或少地与他人进行合作。这种合作伙伴关系有许多形式和规模:员工增加、解决方案交付、托管服务、许可软件、SaaS 解决方案等。每一家大型 IT 服务提供商都必须确定如何为其业务采用云,许多 IT 服务提供商都是通过 AWS 合作伙伴网络寻找合作伙伴的。在迁移到云时,您可以寻求现有合作伙伴的帮助,也可以请求近几年从云中诞生并成长壮大的公司提供一臂之力。AWS 很乐意帮您确定最适合您需求的合作伙伴。除此之外,许多合作伙伴会将其解决方案放到 AWS Marketplace 上出售,您可以在此购买和部署他们的服务 (跟采购 AWS 的方法相同),这可极大地减少官僚采购流程。 5. 创建云卓越中心 在我的职业生涯中,我经常看到应用程序交付团队与基础设施团队之间关系紧张。这种制衡体系有时是有益的,但我也见过它产生负面影响的情况。传统基础设施背负的重担正在向云计算转移,再加上代码和自动化的强大驱动力,这两个团队已经变得难分彼此。云之旅为组织创造了重新思考这些边界及其之间协议的机会。据我所知,迅速取得云迁移方案成功的大多数组织都建立了云卓越中心,由其负责整个组织的最佳实践、管理和自动化工作。例如,我在担任道琼斯公司的首席信息官时,就通过我们的 DevOps 团队做了相同的工作。该团队负责实现卓越的客户服务、树立运行您构建的内容的心态并设定实施几个月后要达到的目标等工作。 6. 实施混合架构 几乎所有企业的现有 IT 投资都仍在给组织带来源源不断的回报。每个组织都以不同的方式管理其现有资产和刷新周期,但没有任何组织能在一夜之间完成所有这些工作。构建混合架构可让您充分利用云计算的优势,同时仍能继续享受现有投资带来的回报。在提供混合产品方面,没有任何一家提供商能达到 AWS 的完善体验和广度。只要您避开混合架构的三大误区,您的卓越中心就能随时帮您的组织切换到混合架构。一旦混合架构部署到位,增强和迁移现有应用程序就会容易很多了。混合架构为分解一体式应用程序并实现解耦的服务提供了一个绝佳的机会,这是大多数公司应对大型机所常采用的办法。 […]

Read More

业务现代化的必备秘密武器:团队云培训

现代培训师的任务不是砍倒丛林,而是浇灌沙漠。 — C.S. Lewis 我很荣幸能够知晓数百位来自全球最大公司的高管们是如何使用现代技术和云实现企业转型的。转型并非易事 — 企业内部少数值得做的事 — 并且,在我看来,变化最大的阻力通常来自企业内部。人们 (天然) 对未知事物心存畏惧。任 Dow Jones 的 CIO 和 AWS 的 Enterprise Strategy 负责人时,我都发现,帮助团队成员克服对未知事物的恐惧最好办法    是对他们进行培训。 这也是我认为 Maureen Lonergan — 我个人的朋友,同时也是 AWS 的培训和认证负责人 — 肩负着世界上最重要的工作之一的原因。Maureen 和她的团队致力于对尽量多的人进行全面的云培训和教育。 今天,我十分高兴主持介绍 Maureen 的一篇文章,概述如何进行团队培训。 很多大型和小型企业正在考虑过渡到云技术,但是不知道自己的团队如何才能以最好的方式在业务中应用这项技术。作为 AWS 培训和认证部门的主管,我认为要最大程度利用云投资,最好的办法是投资于培训,帮助组织内的员工掌握云技能。这样可以利用现有员工的技能,更快实现业务目标,并对组织能够最大程度利用云技术充满信心。 这篇文章将探讨为什么培训是重要、有价值的云之旅步伐,以及具体来说,AWS 可以如何帮助您过渡到云并让您的员工变成真正的专家。 您已经有了所需的人 去年,Stephen Orban 撰写文章讨论过现有员工云技能培训的重要性。他说,“推动云迁移所需的所有人才都已经到位,您只需要激发他们即可。” 培训可以帮助您的员工利用他们已有的基本 IT 技能和系统知识转变为云角色。因为不必雇用新员工来担任云角色,所以培训现有的员工可以节省时间和资金。 从根本上说,无论采用什么云平台,越快评估现有角色和所需要的人才,然后投资于培训来培养员工,您的工作就越轻松。 培训可帮助您更快实现业务目标 员工经过培训,可以更好地使用云,从而让您更高效地完成业务目标。云培训可以让员工获得更快速地进行创新所需要的技能。 对于正在进行复杂迁移的组织来说,培训尤其重要。下面是培训可帮助加速角色转换的几个主要方面: 培训将帮助员工了解如何使用云。例如,他们可以学习使用 AWS 有效管理、操作和部署应用程序。 通过对团队进行知识培训,从而缓解团队焦虑感,这种方式可以增进内部认同。 培训让员工有共识,他们可以更高效地合作。 无论是在 AWS 还是其他平台方面进行了培训的员工,都能够更快地找到所需要的服务和解决方案,这意味着可以快速为客户开发更好的解决方案。 通过认证来验证掌握了知识 鼓励员工通过认证,让团队中的每个人都为所拥有的技能感到自信。AWS 认证核心团队有助于领导组织完成转变和实施最佳实践。认证可帮助您确定组织中哪些人可以获得晋升。 如果组织需要更多有云技术经验的人才,可以考察通过认证的人,这样您能够充满信心地任用这些人才。 AWS 培训和认证导览 AWS 培训和认证可帮助培养云技能,让您更轻松地过渡到 […]

Read More

AWS之旅:混合云构建及常见的应用场景

作者:袁春华,AWS解决方案架构师 混合云融合了公有云和私有云,是企业上云的中间之旅,也是云计算发展过程中的一种模式和阶段。出于如信息保密、行业合规、市场细分等因素或考虑,有些企业更愿意将数据存放在本地数据中心或私有云中,但是同时又希望可以获得公有云的计算资源、存储资源。在这种情况下,混合云在企业上云之初被广泛的采用。 1     构建混合云的关键技术点 1.1   网络连接 第一点,公有云具备用户自定义网络的能力。这里自定义网络泛指云上的私有网络,Amazon VPC允许企业用户在AWS云上自定义逻辑隔离的专用网络的能力,包括允许用户可以自行划分子网、配置路由,设置公网、VPN网关等基础能力。 第二点,多样、稳定的网络接入能力。混合云最突出的特点就是连接,连接方式主要分为两种:公网接入和专线接入。 为保护用户的信息安全,公网接入在Internet上的流量通常需要经过IPsec VPN加密,AWS提供了托管VPN服务和用户自建VPN两种方式,如果采用用户自建方式,一般小型VPN网关(200Mbps以下)可以通过虚拟软件VPN网关实现,中或大型VPN网关(300Mbps及以上)可通过硬件VPN网关设备实现。VPN部署一般半天即可完成,可以快速满足企业用户需求。 AWS Direct Connect(简称DX专线)为企业上云提供了专线接入能力,能够全时段、全方位的保障用户数据传输隔离加密,并保证可用网络带宽,用户无需担心容量太大而无法承载的问题。 示图1:AWS DX专线与VPN混合组网示意图 1.2   安全与监控 混合云在网络层面上将私有云和公有云进行了连接,如果发生网络故障或者攻击,需要有能力保障网络间故障不会相互影响,将攻击或者故障限制在一定范围之内。云上的网络环境需要具备灵活、易配置的网络安全访问控制能力。Amazon VPC提供了有状态的EC2实例级别的网络防火墙功能(安全组),还则提供了无状态的子网级别的网络访问控制(网络ACL)。 监控方面,Amazon VPC 提供了流日志(flow log)功能,可以利用此项功能来捕获传入和传出的网络IP流量信息。流日志数据使用 Amazon CloudWatch Logs 存储,创建流日志后,用户可以在 Amazon CloudWatch Logs 中监控和查看其VPC网络的流量传入和传出状态,并可通过CloudWatch预设告警策略以及时反馈网络异常。VPC流日志还可以帮助用户排查网络故障等问题,比如流量为什么没有进入到EC2实例的原因。另外,针对VPC流日志的分析,可以帮助检查AWS云上的网络安全设置,消除网络安全漏洞。 1.3   统一服务,混合云管理平台 云管理平台的定义是Gartner提出来的,总结起来就是两块,第一是管理,管理公有云、私有云,形成混合云。第二是自服务,镜像划分,计量与计费,以及基于策略的负载优化。云管理平台最终的目标是应用在云平台上运行时取得最优化的效果。 企业用户构建混合云平台之后,首先需要解决的就是服务门户的统一,资源状态监控界面的统一,在一个平台上实现本地数据中心(或私有云)和公有云资源的统一申请、统一审批、统一监控、统一计费。这样能够大幅度降低用户跨平台切换带来的复杂运维工作量,让用户跨平台的资源使用与监控更加方便。 示图2:混合云管理平台(CMP)功能示例图 2     常见的混合云应用场景 2.1   利用AWS公有云应对业务的爆发式增长 大多数互联网业务呈指数型增长,很难预测基础设施的储备量。一般在业务成长初期很长一段时间内,小规模的物理机托管可以满足用户需求。但随着市场推广活动展开,业务规模爆发增长,原物理托管机房可部署机位有限,只能选择公有云作为弹性手段,快速部署业务,满足用户需求。 今天已经有越来越多的企业用户将他们的互联网业务系统,诸如电子商务系统、Web网站、移动端产品和信息订阅服务系统迁移到AWS云上。应对业务规模爆发增长的用户需求,AWS云服务采用多种方式确保应用系统的可靠性和稳定性,作为最基础的云服务,Amazon EC2提供了大小可调的计算容量,用户可以根据自己的实际需求,完全控制所需的计算资源。配合AWS的Auto Scaling功能,用户可以按照事先设定的条件自动扩展Amazon EC2容量,确保所使用的Amazon EC2数量在需求峰值期间实现无缝增长以保持性能,同时也可以在需求平淡期间自动减少Amazon EC2数量以降低成本。此外,Elastic Load Balancing可以在多个Amazon EC2实例之间自动分配应用程序的访问流量,也可以检测出系统中不健康的实例并自动更改路由,将应用的访问流量导向健康的实例。通过不同功能云服务之间的组合,AWS云平台可以确保应用系统的高可靠性和稳定性。 示图3:混合云架构下的电商平台三层系统架构图 与早期基于传统数据中心的系统相比,依托AWS云平台的新系统在稳定性、可靠性和响应速度等方面都有了极大的提升,同时大幅度降低了固定资产投资(CAPEX)和运营成本(OPEX)。在传统数据中心模式下,用一台服务器的寿命大约为5年来计算,购入一台与Amazon EC2 c3.4xlarge机型(16 […]

Read More

Amazon IoT 安卓SDK 中国区实践

作者:任庆杰,AWS解决方案架构师。 简介 物联网(IOT)是现在非常火热的一个概念。那么怎么样利用AWS提供的IoT服务,快速在自己的安卓智能设备上搭建起IoT的消息推送和订阅呢? 本文将分两部分为你解读: 1)如何动态生成和绑定设备证书 2)如何利用MQTT协议接入Amazon IoT 平台 服务简介 AWS IoT平台 AWS IoT 是一种托管的云平台,使互联设备可以轻松安全地与云应用程序及其他设备交互。AWS IoT 可以支持数十亿台设备和数万亿条消息,并且可以对这些消息进行处理并将其安全可靠地路由至 AWS 终端节点和其他设备。借助 AWS IoT,您的应用程序可以随时跟踪您的所有设备并与其通信,即使这些设备未处于连接状态也不例外。 Amazon Cognito Cognito Identity 可让您轻松实现联合身份,您可以让用户通过Amazon, OpenID, SAML或者自定义的身份认证系统进行认证。匿名或认证登录后,IoT设备被赋予临时性受限权限凭证,可以利用此凭证访问 AWS 资源。 过程介绍 1.  获取连接IoT的权限证书 1)通过安装在安卓设备上的SDK连接Amazon Cognito,认证用户(本文示例将采用匿名模式),并且获取临时权限的Access Key和Secret Key。 2)使用临时权限向AWS IoT发起创建证书请求,激活证书并且下载。 3)将证书加密存储为Keystore在设备上,用以认证之后的IoT请求。Android Keystore保护你存储在设备上的证书,让它不容易被它人破解和提取。 2.  通过MQTT协议连接AWS IoT,并订阅和推送消息。 1)连接设备与AWS IoT,使用Keystore来通过认证 2)与AWS IoT的设备网关交互来订阅和推送消息 3)通过规则引擎还可以过滤消息,并调度AWS各种服务 操作指南 1.  配置环境 1)下载并安装Android Studio 2)下载样例代码https://github.com/awslabs/aws-sdk-android-samples/ 3)在Android […]

Read More

Amazon Cognito集成Login with Amazon详解

作者:薛峰,亚马逊AWS解决方案架构师 背景介绍 Amazon Cognito可以为我们移动开发中的终端用户维护唯一标识符,跨不设备和平台维护用户登录的一致。Cognito还可以为我们的应用提供限制权限的临时凭据来访问 AWS的资源。 使用Amazon Cognito我们的应用可以支持未验证用户,以及使用公开的身份提供方来验证用户,目前支持的身份提供方包括Facebook, Google 和Login with Amazon。 未验证的用户绑定到设备,即通过Cognito客户端SDK在用户使用相同设备时为他们维护唯一标识符。而已验证的用户则可以跨设备维护唯一标识符,即使他们使用iOS和Android这样不同的操作系统。 今天我们通过一个Android开发实例,详细讲解Amazon Cognito 与 Login with Amazon 集成,以针对移动应用程序和 Web 应用程序用户提供联合身份验证。 Login with Amazon 使用Amazon账号登录,可以省去注册账号的繁琐,使用用户已经熟练使用的账号直接登录。借助Amazon.com相同的验证机制,可以轻松享受其健壮的安全性和可扩展性。开发者可以不必自己再构建用户管理系统,而集中精力于自己的产品。Login with Amazon使用业界主流的OAuth 2.0标准,方便更快速地接入开发,也基于此Amazon Cognito也可以方便地接入。 我们使用当前主流的 Android Studio,为了方便调试先使用模拟器进行开发和演示。这些基础工作请大家自行准备好。 注册Login with Amazon 首先需要注册成Amazon开发者,然后到以下网址注册一个应用。 http://login.amazon.com/manageApps 左上角Applications 模块下点击“Register New Application”按钮。Name 和 Description按自己需求填写。 Privacy Notice URL这是在登录时显示给用户的隐私协议页面,生产环境中需要是你的网站的一个页面。这里我们可以使用演示页面的URL https://www.example.com/privacy.html Logo Image 这里是显示给用户的我们的应用图标,该图片会被自动缩小到50 x150像素,所以选择一个适当尺寸的图片上传。点击 save保存即可。 创建成功后,我们到该应用详情页,标题名称右下角有一行形如下面的应用ID: App ID: […]

Read More

AWS Glue 全托管 ETL 服务使用指南

作者:蒋华, AWS合作伙伴解决方案架构师 目  录 第1章 Glue概述 1.1 Glue介绍 1.2 Glue主要特征 1.3 Glue定价与计费 第2章 Glue入门 2.1 数据准备 2.2 在线演示 2.2.1 增加IAM Role 2.2.2 配置Data Catalog 第1章  Glue概述 1.1  Glue介绍 AWS Glue 是一项完全托管的提取、转换和加载 (ETL) 服务,让客户能够轻松准备和加载数据进行分析。您只需在 AWS 管理控制台中单击几次,即可创建并运行 ETL 作业。您只需将 AWS Glue 指向存储在 AWS 上的数据,AWS Glue 便会发现您的数据,并将关联的元数据 (例如表定义和架构) 存储在 AWS Glue 数据目录中。存入目录后,您的数据可立即供 ETL 搜索、查询和使用。AWS Glue 可生成代码执行数据转换和数据加载流程。 AWS Glue […]

Read More

Amazon S3 深度实践系列之二:如何实现 S3 数据跨区域高效可靠传输

背景 在Amazon S3 深度实践系列之一:S3 CLI深度解析及性能测试一文中,我们深度剖析了AWS CLI S3相关命令的实际工作原理及单机下载S3数据的基本性能测试情况。在实际工作场景中,很多客户会在AWS多个区域的S3桶里面存储大量数据,而且会遇到将数据批量从一个区域一次转移到另外一个区域的情形;因此,在本篇中,作者和大家一起来探讨下出现这样的需求我们如何进行架构设计及高效实现。 架构设计 存储在S3中的对象随着时间的推移,对象数量逐渐增加,而且总体的数据量也不断膨胀,如果碰到需要将数据从某一个区域的S3存储桶完全复制到另外一个S3存储桶里面,我们会遇到哪些挑战呢? 网络传输带宽的限制 存储桶里面所有对象的分析和列表 源存储桶和目标存储桶权限的设定 传输失败识别和重试的挑战 如何利用并发来加速传输及降低成本 如何判断目标存储桶中的对象和源存储桶中的对象差异及完整性 在通用架构设计环节,我们将复杂的问题分解成一系列的子问题进行分析,并讨论在不同场景下的具体实现时要考虑的因素。如下图所示,我们将该任务分解成独立的五个环节,从图上我们也可以看出来,如何实现大规模数据或任务的并发执行是每个环节能否高效完成的一个很关键的技术要求;而且,只有在步骤三执行数据传输任务时,才会涉及到具体场景中的技术限制,因此我们在执行数据传输任务章节来讨论,同区域不同存储桶之间,AWS海外不同区域存储桶之间,以及AWS海外和国内不同存储桶之间的具体技术考量点。 S3对象“清单” 了解源和目标存储桶里的S3 对象是非常重要的准备工作,该章节我们讨论,如何获得S3存储桶的所有对象列表,包含对象的基本的信息,比如最新版本的对象大小,ETag等等。 Amazon S3本身提供了存储桶管理功能之清单生成功能,该功能是一个异步的AWS后台定期执行,可以实现每天生成一个存储桶清单保存成Excel格式。 同时我们也看到很多用户提问,如何实现一个自定义的清单功能,满足大家对于对象变化比较频繁的存储桶对象的实时统计场景以及更多高级自定义的业务逻辑。 接下来我们来看看这两种方法的具体实现逻辑。 利用S3 CLI实现高效的清单功能 作者利用AWS S3 CLI实现高效的清单功能基于以下两个事实前提: s3api 的 list-objects-v2虽然文档中说明最多返回1000个对象,但实测可以获得所有对象列表 同样利用s3api 的 list-objects-v2的delimiter和prefix参数,我们可以实现类似文件夹目录逐级扫描功能 基于以上两个事实,我们实现桶清单的主要逻辑如下图所示: 输入参数主要是:bucket,region和IAM 配置的profile名字,profile默认为default;另外depth控制扫描的“目录”层级 当depth为零时,我们直接尝试利用list-objects-v2一次性获取存储桶中所有对象列表并生成一个json格式的文件(但当桶里面对象太多时,该操作会超时) 当depth为零即单线程无法直接生成存储桶清单时,我们就尝试如下迭代逻辑: 生成存储桶当前“目录”里面的所有对象和该目录中所有“子目录”列表 遍历上一步的“子目录”列表,迭代生成该目录下的对象列表和“子目录”列表 如果遍历的深度等于输入参数depth=n,或者“子目录”列表为空,那么停止遍历子目录,直接生成该层级“目录”里面所有的对象列表 以下是几个关键点实现的代码说明,首先,生成某个“目录”前缀下所有对象列表的AWS S3 CLI命令参考,如下命令将在操作系统后台执行并生成存储桶jason中“目录”前缀“qwikLabs/”下的所有对象列表(包括所有嵌套“子目录”中的所有对象): $ nohup aws s3api list-objects-v2 –bucket “jason” –prefix “qwikLabs/” –profile […]

Read More

如何使用Amazon EC2 Systems Manager自动创建数据一致的EBS快照(Part 2)

作者:王宇 上一期我们讨论了如何在不关机的前提下实现AWS上实例的数据一致性快照问题,传送门:《如何使用Amazon EC2 Systems Manager自动创建数据一致的EBS快照(Part 1)》 在本文的介绍中,我们将共同探索如何利用Amazon EC2 Systems Manager(SSM)和Microsoft VSS (Volume Shadow Copy Service)来创建数据一致的EBS快照。 SSM + VSS数据一致快照的原理 VSS (Volume Shadow Copy Service)是一个Windows操作系统内置的服务,用来协调与VSS兼容的应用程序(如SQL Server、Exchange Server等)的备份工作,如冻结或释放这些应用程序的I/O操作等。 VSS服务能够启动和监督副本拷贝的创建。“副本拷贝”是指一个逻辑卷在某一个时间点上的数据一致快照。比如:“C:”是一个逻辑卷,它与EBS快照不同。创建副本拷贝的步骤包括: 请求方向VSS发出创建副本拷贝的请求。 VSS provider创建并维护副本拷贝。 VSS写入器(writer)保证数据的一致性。写入器负责在VSS provider创建副本拷贝之前固化临时数据并冻结I/O操作,并在VSS provider完成创建后释放I/O操作。通常情况下,会为每一个与VSS兼容的应用程序分配一个独立的写入器(writer)。 我们可以使用Run Command在windows实例中运行一个PowerShell脚本: $EbsSnapshotPsFileName = “C:/tmp/ebsSnapshot.ps1” $EbsSnapshotPs = New-Item -Type File $EbsSnapshotPsFileName -Force Add-Content $EbsSnapshotPs ‘$InstanceID = Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/instance-id’ Add-Content $EbsSnapshotPs ‘$AZ = […]

Read More