亚马逊AWS官方博客

AWS文件存储网关初体验

1.    背景介绍 AWS Storage Gateway 是一项可以帮助用户实现在混合架构环境中将本地数据中心内设施与AWS云端存储进行无缝集成的服务。通过Storage Gateway可以简化本地IT环境与云端存储间移动数据,将数据存储到AWS云,并且实现备份,存档以及灾难恢复等主要功能。 Storage Gateway家族之前已经包含有基于卷接口以及磁带接口类型的网关设备,帮助用户可以在适当的场景下选择合适的方式去将本地的数据迁移到云端,在去年Las Vegas 举办的re:Invent大会上,AWS更进一步又推出基于文件接口(支持NFS3和NFS4.1)类型的存储网关,给用户提供了更多的选择,方便用户可以通过标准的文件协议将文件作为对象直接存储在Amazon S3上,这样不但可以借助于S3超高的持久性优势对文件进行持久化保存,还可以将S3对象的版本控制,生命周期管理以及跨区域复制等存储策略直接应用到存储对象中。 要使用文件存储网关服务,必须为存储网关下载虚拟机镜像,并从 AWS 管理控制台或存储网关 API 激活它。写入到 NFS 的文件成为 Amazon S3 中的对象, 文件与对象之间存在一对一的映射,对象使用 Amazon S3 托管的加密密钥 (SSE-S3) 在服务器端加密,所有数据传输通过 HTTPS 执行。 文件存储网关服务使用分段并行上传等技术,优化了网关与 AWS 之间的数据传输,以更好利用可用带宽。与缓存卷类似,系统维护本地缓存以提供对最近访问数据的低延迟访问,并减少数据传出成本。 新年伊始,让我们撸起袖子,一起来体验一下新型的存储网关带来的超能力,尝试如果使用文件存储网关这项新的功能来实现对本地文件的云端迁移。 2.    部署与配置存储网关 文件存储网关适用于将数据传入到 S3 以供应用日常使用、备份和存档到 AWS 云上不同类型的存储服务。 图1 在进入具体的安装部署环节之前,我们首先来了解一下使用文件存储网关中涉及到的主要调用流程。用户的应用服务器运行在自有数据中心内,在用户环境中部署文件存储网关(File Gateway),用户或应用服务器通过NFS客户端连接存储网关,利用网关,可以将 S3 中的存储桶作为 NFS 装载点,从而对文件进行写入和访问。 2.1  安装部署文件存储网关 首先登录到AWS Storage Gateway Console https://console.amazonaws.cn/storagegateway/home?region=cn-north-1 […]

Read More

Amazon DynamoDB 让海量数据管理变为可能

随着大数据技术的发展,其数据集可以增长的非常庞大,以至于基于传统的关系型数据库管理系统及其工具集很难处理这些庞大的数据集。处理这些问题需要新的工具、框架、软件和服务。与此同时,越来越多的企业需要连续不断地访问数据,从而提高效率,改善用户体验。好的大数据工具集将以较低的成本,接近实时的速度提供可伸缩、高性能的数据管理和分析功能。企业借助于这些工具可以获得更强大的智能及竞争优势。 NoSQL(Not only SQL)非关系型数据库是近年来发展最为迅猛的大数据处理技术之一。在这一领域有非常多的产品和解决方案,包括众多的开源工程。如何选择一款合适的产品往往是困扰企业的难题。此外,企业应用场景各式各样,如何将NoSQL与企业IT融合也是一个重要的课题。如今的企业中,并非所有用例都直观地倾向于使用关系型数据库,或者都需要严格的ACID属性(特别是一致性和隔离性)。以Web为中心的企业中信息管理的新兴模式,使得“非关系型数据库”成为处理这些数据的最佳选择(较之关系型数据库来说)。NoSQL提供了对非结构化数据的支持,拥有支持分区的水平伸缩性,支持高可用性等。常见的NoSQL应用场景包括:日志挖掘、分析社交计算、外部数据聚合、前端订单处理系统、企业内容管理等。 Amazon DynamoDB是一种完全托管的NoSQL数据库服务,提供快速且可预测的性能,能够实现无缝扩展。Amazon DynamoDB可自动将表的数据和流量分布到足够多的服务器中,以处理客户指定的请求容量和数据存储量,同时保持一致的性能和高效的访问。所有数据项目均存储在固态硬盘(SSD)中,并在区域的多个可用区间自动复制,以提供内置的高可用性和数据持久性。例如,您可以使用Amazon DynamoDB创建数据库表,并可在表中存储和检索任意数量的数据和处理任何级别的请求流量。也可以通过AWS管理控制台创建新的Amazon DynamoDB数据库表、扩展或缩小表的请求容量而不导致停机或性能降低,还能查看资源使用率与性能指标。使用Amazon DynamoDB,你可以将操作和扩展分布式数据库的管理工作负担交给AWS服务,无须担心硬件预配置、设置和配置、复制、软件修补或集群扩展等问题。 使用Amazon DynamoDB能带来哪些好处 1    可扩展:Amazon DynamoDB旨在实现吞吐量和存储容量的高效无缝扩展 预配置吞吐量:创建表时,只须指定所需的吞吐容量即可。Amazon DynamoDB会为您的表分配专用资源以满足性能要求,并自动将数据分区到足够多的服务器以满足请求容量。如果您的应用程序需求发生变化,只须使用AWS管理控制台或Amazon DynamoDB API调用更新表的吞吐容量即可。在扩展过程中,仍然能够保证之前的吞吐量水平没有下降。 自动存储扩展:Amazon DynamoDB表中可存储的数据量没有限制,而且随着您使用Amazon DynamoDB写入API所存储数据量的增加,该服务会自动分配更多存储。 完全分布式的无共享架构:Amazon DynamoDB可水平扩展并在数百台服务器中无缝扩展单个表。 2     快速、可预测的性能:Amazon DynamoDB的服务端平均延迟不超过10毫秒。该服务在固态硬盘中运行,其构建方式旨在任何规模均能保证服务性能持续优良,降低延迟。 3     轻松管理:Amazon DynamoDB是完全托管的服务,您只须创建数据库表,其余事情都交由该服务代劳。您无须担心硬件或软件预配置、设置和配置、软件修补、操作可靠的分布式数据库集群,也不必担心随着扩展的需要在多个实例间对数据进行分区等问题。 4     内置容错能力:Amazon DynamoDB内置容错能力,可在某个地区多个可用区域之间自动同步备份数据,以实现高效的可访问性,即使单台机器甚至设施出现死机,防护措施可保证数据万无一失。 5     灵活:Amazon DynamoDB没有固定模式。相反,每个数据项目可以有不同数量的属性。多种数据类型(字符串、数字、二进制数据和集)使数据模型更加丰富。 6     高效的索引:Amazon DynamoDB表中的每个项目均由一个主键标识,让您能够快速高效地访问数据项目。还可以就非键值属性定义二级索引,并使用替代键查询您的数据。 7     强一致性、原子计数器:与许多非关系数据库不同,Amazon DynamoDB允许您对读取操作使用强一致性检验以确保始终读取最新的值,从而使开发更加便捷。Amazon DynamoDB支持多种本地数据类型(数字、字符串、二进制数据和多值属性)。该服务还支持本地原子计数器,允许您通过调用单个API调用自动递增或递减数字属性。 8     安全:Amazon DynamoDB非常安全,采用经过验证的加密方法验证用户身份,以防未授权数据访问。此外,它还与AWS Identity and […]

Read More

AWS Snowmobile——在数周内将数EB数据迁移至云端

将大规模数据由内部环境迁移至云端往往是业务转移工作中的最大挑战——但这种挑战本不必存在。即使配合高速传输连接,将PB甚至EB规模的影片库、财务记录、卫星图像或者科学数据通过互联网进行转移仍然需要耗时数年甚至数十年。从商业角度来看,添置新型网络或者升级现有连接显然并不现实,特别是考虑到转移完成后数据中心将不再需要这样奢侈的网络资源。 去年我们公布了AWS Snowball服务(具体请参阅AWS Snowball——利用Amazon提供的存储设备在一周内迁移1 PB数据)作为大规模数据迁移的一种可行方案。凭借着80 TB高存储容量,这些设备能够很好地解决大多数客户面临的难题,而且其目前已经得到广泛采用。 然而,对于拥有EB级别内部存储规模的客户,这80 TB容量仍然显得相当可怜。通过计算,他们发现要完成全部数据的迁移需要大量设备,并且需要解决令人头痛的大规模物流寄送问题。 AWS Snowmobile介绍 为了满足此类客户的实际需求,我们在AWS re:Invent 2016上公布了Snowmobile服务。这一安全数据存储车可容纳高达100 PB数据,从而帮助大家在数周之内将EB级别数据迁移至AWS当中(如果必要,您还可以使用多辆存储车)。其设计目标在于帮助来自金融服务、媒体及娱乐、科学乃至其它行业的客户解决问题。Snowmobile可接入您的网络并作为本地NFS挂载式分卷使用。大家可利用现有备份与归档工具将需要上传至Amazon简单存储服务(简称S3)或者Amazon Glacier的数据导入其中。 从物理结构来看地,Snowmobile采用一款坚固耐用且难于侵入的,尺寸为45英尺长、9.6英尺高、8英尺宽海运集装箱作为外壳。Snowmobile具备防水防恶劣天气设计,能够随意停靠在您现有数据中心附近。每台Snowmobile需要使用350千瓦交流电源; 如果大家现场不具备充足电力,我们还可提供发电机供其运作。 在安全层面,Snowmobile将包括从监管追踪到视频监控在内的多个逻辑与物理保护层,并加以结合。用户的数据利用AWS密钥管理服务(简称KMS)提供的密钥进行加密,而后才会被写入设备当中。每套集装箱都配备有GPS追踪,其利用蜂窝或者卫星连接与AWS方面进行通信。我们将在Snowmobile行进过程中安排一辆安保车全程保护。在Snowmobile处于您的内部基础设施附近时,我们还可以提供专门的安保人员进行配合。 每台Snowmobile中包含一根网络线缆,连接在一台高速交换机上,能够通过多条40 Gb/S的连接以1 Tb/S的速率传输数据,从而实现高速数据交换能力。假定大家的现有网络能够在传输速度上达到这一水平,则可在约10天时间内装满一台Snowmobile。 Snowmobile的运作 我个人手头没有EB级别数据中心,我当然也没有足够的空间容纳这一45英尺长的大型集装箱。不过为了帮助大家更好地理解Snowmobile的运作流程,我决定使用自己的乐高组装台,并借此建立起一套缩小模型。我希望大家能够喜欢这种以小见大的解释方式! 下面从客户的数据中心起步。其之前就已经构建完成,而且已经颇有年头。机架中塞满了不同年份的磁盘与磁带驱动器,每一台都包含有珍贵的关键性业务数据。而您和您的同事则不得不将大量时间投入到规划楼层面积、追踪线路排布以及尽可能压榨性能方面: 而管理者则越来越沮丧,不知道这样勉强为之的作法还能持续多久: 幸运的是,一位同事每天都在关注博客,而她借此找到了解决问题的办法: 在与AWS进行通话之后,双方很快安排了一次会议: 大家齐聚AWS办公室,希望了解更多与Snowmobile以及迁移计划相关的细节信息: 大家围在Snowmobile微缩模型周边,连小狗也来凑热闹。管理者则拍下了照片: 一辆Snowmobile出现在您的数据中心附近: AWS Professional Services(专业服务)帮助大家将其与设施对接,从而开始进行数据传输: Snowmobile重新驶回AWS,而您的数据亦按照指定要求导入至云端! Snowmobile在 DigitalGlobe的表现 作为我们的合作伙伴,DigitalGlobe公司利用Snowmobile将100 PB卫星图像数据迁移至AWS当中。以下为Jay Littlepage(前Amazon员工,现任DigitalGlobe公司基础设施与运营副总裁)对于这项服务的评论: 与多数大型企业一样,我们也在努力将IT运营负载由自有数据中心迁移至AWS。我们的地理空间大数据平台GBDX自建立以来始终以AWS作为运行基础。但我们的高分辨率卫星影像已经拥有16年的收集历史,其覆盖地球表面60亿平方公里面积且始终存放在自有设施之内。我们虽然已经开始将归档逐步迁移至AWS,但整个过程缓慢且效率低下。我们的卫星每年都在生成更多地球拍摄影像(10 PB),而其总量甚至超过了以往迁移能力的上限。 我们需要一套解决方案,能够把我们现有的100 PB归档快速迁移至AWS环境当中,但在Snowmobile出现之后并无可行的途径可用。DigitalGlobe公司目前能够将全部原始影像归档直接通过一辆Snowmobile转移至Amazon Glacier存储库内。AWS Snowmobile运营人员提供极为出色的定制化服务,他们协助进行了配置、监控与物流追踪。利用Snowmobile强大的数据传输能力,我们得以越来越快地将影像归档导入至AWS端,这使得我们的客户及合作伙伴能够快速获取海量数据集。通过在GBDX当中使用AWS的弹性计算平台,我们将能够运行分布式图像分析、以前所未有的速度揭示全球范围内的环境变化速度与格局发展趋势,并以较内部设施更具成本效益的方式获得洞察结论。如果没有Snowmobile,我们无法在这么短的时间内传递如此庞大的数据集或者为客户创造新的商业机遇。Snowmobile已经成为真正的游戏规则改变者! 需要了解的情况 以下为大家应当了解的,与Snowmobile相关的一些情况: 数据导出——这项服务的最初目标在于实现面向AWS的数据导入。但我们很清楚,也有一部分客户希望借此实现数据导出,从而建立起更为快速高效的灾难恢复用例。 推出时间——Snowmobile目前已经在全部AWS服务区正式上线。正如在以上章节中所提到,其并不属于自助服务型产品。大家可以同AWS方面的销售人员讨论实际需求以及需要进行导入的具体数据类型与规模。 价格——目前还无法公布确切的定价信息。然而,我们可以保证Snowmobile在速度与实施成本上优于基于网络的数据传输模式。 -Jeff 原文链接: https://aws.amazon.com/cn/blogs/aws/aws-snowmobile-move-exabytes-of-data-to-the-cloud-in-weeks/

Read More

使用Amazon CloudFront签名URL+S3实现私有内容发布

前言 Amazon CloudFront 是一个全球性内容分发网络 (CDN),可实现网站、API、视频内容或其他 Web 资产的快速分发。用户可以使用CloudFront来加速分发保存在Amazon S3存储桶上的各种内容,比如文档、图片、媒体文件和软件安装包等。很多AWS客户在使用CloudFront+S3通过互联网向自己的最终用户提供内容下载的时候,也希望能够限制到只允许合法的用户下载,比如那些已经通过了身份认证或已经付费的用户,避免开放下载可能造成的数据安全和流量成本等问题。进一步,这些AWS客户还希望能够限制其最终用户可以执行下载操作的日期时间段,发起下载请求的来源IP地址范围等等。使用CloudFront的签名URL功能就可以帮助AWS客户实现其私有内容的安全发布。 CloudFront签名URL功能简介 CloudFront的签名URL功能通过在普通的Http或Https请求中添加经过哈西和签名认证的策略内容,来保护私有内容不受非法访问。当收到来自客户端比如浏览器、移动App或桌面应用对特定资源的访问请求后,CloudFront会首先利用保存的密钥解密请求中包含的签名部分内容,检查是否完整和正确。然后CloudFront继续分析解密出的权限策略内容,并根据权限策略定义的限制条件来决定是否向客户端提供请求资源。 AWS客户可以开发Web服务或工具软件来向自己的最终用户提供签名URL,就可以让这些最终用户在受限的条件下安全地访问通过CloudFront发布的内容,比如存储在S3中的图片。 AWS客户除了可以在签名URL的权限策略定义中直接限制资源请求客户端可以访问的资源种类、请求发生时间、来源IP地址范围以外,结合CloudFront既有功能还可以进一步限制其发出请求的协议类型(Http或Https)、访问域名类型(CloudFront自动分配域名或客户自有域名)。 整体技术方案 需求 在正式开始创建CloudFront私有内容发布之前,我们首先要明确在创建过程中的一些主要的选项。对于这些选项的不同设置会影响最终所创建的私有内容发布的效果。好在通过CloudFront发布私有内容的主要步骤基本类似,通过了解一个典型的CloudFront私有内容发布的完整过程就可以快速理解和掌握其他方式的发布过程。下面的表格列出了几个主要可选项和我们本次演示所做的选择。   选项 值域 本次选择 源站类型 S3存储桶, 普通Web服务器 S3存储桶 客户端到CloudFront的协议类型 Http, Https Https CloudFront到源站的协议类型 Http, Https Https CloudFront发布点的类型 Web发布点, RTMP发布点 Web发布点 CloudFront发布点的域名类型 CloudFront自动分配的域名, 客户自有域名 客户自有域名 签名类型 签名URL, 签名Cookie 签名URL 权限策略类型 Canned Policy, Custom Policy Custom Policy 架构 一般地,一个完整的高性能私有内容发布平台主要包括四部分:内容源站,加速CDN,身份认证和权限管理,资源请求客户端。基于上面的需求分析,我们可以明确本次介绍中的四部分组成: 内容源站:S3存储桶 加速CDN:CloudFront 身份认证和权限管理:签名URL生成器 […]

Read More

AWS Snowball Edge——更多存储容量、本地端口与Lambda函数

正如在之前的文章中已经提到,我们于去年推出了AWS Snowball服务(AWS Import/Export Snowbal——利用Amazon提供的存储设备一周内传输1 PB数据),并随后对各项相关更新进行了整理。总体而言,Snowball服务最初是一台50 TB数据传输设备,其设计目标在于强调物理接入及数据安全等要求。一年之后,这项服务的存储容量有所提升,目前达到80 TB,同时还增加了任务管理API、HIPAA认证、HDFS导入与S3适配机制,同时亦可用于更多AWS服务区。 不过最重要的是,这些改进并不会影响该设备的基本特性。一年以来,众多AWS客户将初代Snowball应用于不同类型的物理环境当中,并借此实现包括大数据、基因组学以及数据收集在内的各类工作负载的迁移工作。我们发现这款设备还拥有更为广泛的施展空间。 很多客户掌握着规模庞大且增长速度极快的数据集(通常达数百TB),而其网络连接能力无法将这些数据及时上传至云端,同时现有物理环境则几乎达到极限。客户们希望收集产生自农田、工厂、医院、飞机乃至油井中的数据——从车间监控到视频摄制再到物联网设备信息收集。客户希望能够利用单一模式实现高度简化的数据存储与转发,并在数据到达时进行本地处理。他们希望在数据到达时对其进行过滤、清理、分析、组织、追踪、总结以及监测。他们希望扫描输入数据以掌握其模式或者存在的问题,而后在发现特定情况时快速发出通告。 全新Snowball Edge 现在,我们将Snowball Edge正式加入AWS阵容。这款设备扩展了Snowball的适用范围,其中包含了更多连接方式、存储资源、集群化横向可扩展性,可立足现有S3与NFS客户端进行接入的存储端点以及Lambda支持下的本地处理功能。 从物理角度讲,Snowball Edge的设计目标在于提供一套适用于工业、航空航天、农业以及军事类用例的环境。其新的外形设计亦可实现机架内安装,从而帮助大家发挥其中新增的集群化功能。 下面就让我们看看Snowball Edge带来的各项新特性! 更多连接选项 Snowball Edge拥有出色的连接能力,允许大家从多种高速选项中做出选择。在网络方面,大家可以使用10GBase-T、10或25 Gb SFP28或者40 Gb QSFP+。您的物联网设备能够利用3G蜂窝网络或者Wi-Fi向其中上传数据。如果这还不够,Snowball Edge还提供了一个PCIe扩展端口。 如此丰富的连接选项允许大家以高达每秒14 Gb的速度将数据复制至Snowball Edge当中; 这意味着复制100 TB数据仅需要19小时左右。而从开始到结束,整个导入周期(即由初始数据传输到数据实现S3内可用)大约需要一周,其中包括设备寄送及后续处理的时间。 更高存储容量 Snowball Edge包含100 TB存储容量。 通过集群化方式实现横向扩展 大家可以轻松将两台或者更多Snowball Edge设备配置至单一集群当中,从而提升存储容量及耐用性,同时继续通过单一端点访问全部存储内容。举例来说,将六台设备进行集群化对接将能够提供一套存储容量达400 TB的集群,其耐用性可达99.999%。这意味着大家能够移除其中两台设备而数据仍受到严格保护。 大家还可将该集群扩展至PB级别,并通过简单移除及接入设备实现规模伸缩。此类集群拥有自我管理能力,大家不需要考虑其软件更新或者其它维护工作。 要构建这样一套集群,大家只需要在设置任务时勾选“Local compute and storage only(只使用本地计算与存储)”选项并随后勾选“Make this a cluster(将此创建为集群)”即可,具体如下图所示: 新的存储端点(S3与NFS) 如果您已经拥有某些备份、归档或者数据传输工具,例如S3或者NFS,那么大家可以利用其直接立足Snowball Edge实现数据存储及访问。如果大家创建一套包含两台或者更多设备的集群,则同一端点将可适应于其中全部设备; 这意味着大家能够将这类集群视为本地网络附加型存储资源。 Snowball Edge支持一组强大的S3 API子集,其中包括LIST、GET、PUT、DELETE、HEAD以及Multipart Upload。其同时支持NFS […]

Read More

敬请期待——Amazon EC2 Elastic GPU

在之前的文章中,我们曾经探讨过基于GPU的通用计算所带来的优势,而最近P2实例更是升级到可以搭载16 块GPU。正如之前所提到,GPU能够提供极为强大的处理能力与资源规模,同时可有效降低您时间及整体计算成本。 今天,我很高兴向大家公布一项我们正在努力开发的全新GPU功能。大家将能够很快向现有的各种EC2实例类型中加入图形加速机制。在使用G2或者P2实例时,实例的具体规模将决定其中包含的GPU数量。虽然这种方式适用于多数应用类型,但我们认为,同样存在大量需要配合更新且更为灵活的GPU使用模式的应用实例。 Amazon EC2 Elastic GPU 即将推出的Amazon EC2 Elastic GPU允许大家充分发挥这两类优势。大家可以选择最适合自身应用的EC2实例类型及规模,而后在启动该实例时指定您需要使用Elastic GPU,并从以下四种选项中做出选择: 名称 GPU内存 eg1.medium 1 GiB eg1.large 2 GiB eg1.xlarge 4 GiB eg1.2xlarge 8 GiB 现在,大家已经能够在启动新实例时自由创建EBS分卷。而在这项服务推出后,您将可以通过类似的方式使用Elastic GPU,即在启动过程中通过停止、修改与启动等选项指定必要的GPU资源规模——整个变更过程非常轻松。 从 OpenGL开始 我们的Amazon优化型OpenGL库将自动检测并使用Elastic GPU。作为初步方案,目前我们能够在Windows环境下支持Open GL,并计划未来为Amazon Linux AMI及其它OpenGL版本提供支持。我们还将整合对其它3D API的支持能力,具体包括DirectX以及Vulkan(如果大家对此抱有兴趣,请与我们联系)。我们还将在未来的版本中把Amazon优化型OpenGL库添加至现有微软Windows AMI当中。 OpenGL在渲染方面表现出色,但客户要如何查看渲染后的成果?问得好!选项之一是利用NICE的桌面云可视化工具将渲染内容以流媒体形式交付至任意HTML 5兼容型浏览器或者设备当中(AWS于今年早些时候收购了NICE)。支持最新版的Firefox与Chrome浏览器,以及全部智能手机与平板设备。   我相信这种独特的硬件与软件结合方案将适用于各类3D视觉与技术计算应用的托管用例。我们目前已经有两家客户与我们分享春反馈意见。 ANSYS公司企业解决方案与云副总裁Ray Milhem告诉我们: ANSYS Enterprise Cloud提供一套虚拟化模拟数据中心,其专门面向AWS进行优化。该云服务提供丰富的交互式图形体验,可用于支持端到端工程技术模拟流程,帮助我们的客户交付各类创新型产品设计方案。利用Elastic GPU,ANSYS公司将能够更为轻松地以符合客户价格与性能需求的方式提供出色体验。我们已经对运行在Elastic GPU上的ANSYS应用进行了认证,旨在帮助客户更为高效地立足云环境实现创新。 西门子产品生命周期管理(简称PLM)公司NX产品管理副总裁Bob Haubrock同样给出了非常积极的反馈意见: Elastic GPU堪称云环境下计算机辅助设计(简称CAD)的游戏规则改变者。凭借Elastic GPU的帮助,我们的客户现在能够在Amazon EC2之上配合专业级图形处理能力运行西门子PLM NX,同时充分发挥AWS提供的灵活性、安全性及全球化规模优势。西门子PLM对于NX在EC2 […]

Read More

从IaaS到FaaS—— Serverless架构的前世今生

今天大多数公司在开发应用程序并将其部署在服务器上的时候,无论是选择公有云还是私有的数据中心,都需要提前了解究竟需要多少台服务器、多大容量的存储和数据库的功能等。并需要部署运行应用程序和依赖的软件到基础设施之上。假设我们不想在这些细节上花费精力,是否有一种简单的架构模型能够满足我们这种想法?这个答案已经存在,这就是今天软件架构世界中新鲜但是很热门的一个话题——Serverless(无服务器)架构。 什么是Serverless 如同许多新的概念一样,Serverless目前还没有一个普遍公认的权威的定义。最新的一个定义是这样描述的:“无服务器架构是基于互联网的系统,其中应用开发不使用常规的服务进程。相反,它们仅依赖于第三方服务(例如AWS Lambda服务),客户端逻辑和服务托管远程过程调用的组合。” 最开始,“无服务器”架构试图帮助开发者摆脱运行后端应用程序所需的服务器设备的设置和管理工作。这项技术的目标并不是为了实现真正意义上的“无服务器”,而是指由第三方云计算供应商负责后端基础结构的维护,以服务的方式为开发者提供所需功能,例如数据库、消息,以及身份验证等。简单地说,这个架构的就是要让开发人员关注代码的运行而不需要管理任何的基础设施。程序代码被部署在诸如AWS Lambda这样的平台之上,通过事件驱动的方法去触发对函数的调用。很明显,这是一种完全针对程序员的架构技术。其技术特点包括了事件驱动的调用方式,以及有一定限制的程序运行方式,例如AWS Lambda的函数的运行时间默认为3秒到5分钟。从这种架构技术出现的两年多时间来看,这个技术已经有了非常广泛的应用,例如移动应用的后端和物联网应用等。简而言之,无服务器架构的出现不是为了取代传统的应用。然而,从具有高度灵活性的使用模式及事件驱动的特点出发,开发人员/架构师应该重视这个新的计算范例,它可以帮助我们达到减少部署、提高扩展性并减少代码后面的基础设施的维护负担。 Serverless的历史 Serverless这个概念并不容易理解。乍见之下,很容易让人混淆硬件服务器及软件上的服务与其所谓的“服务器”差别。在这里强调的所谓“无服务器”指的是我们的代码不会明确地部署在某些特定的软件或者硬件的服务器上。运行代码托管的环境是由例如AWS这样的云计算厂商所提供的。 Serverless这个词第一次被使用大约是2012年由Ken Form所写的一篇名为《Why The Future of Software and Apps is Serverless》的文章。这篇文章谈到的内容是关于持续集成及源代码控制等内容,并不是我们今天所特指的这一种架构模式。但Amazon在2014年发布的AWS Lambda让“Serverless”这一范式提高到一个全新的层面,为云中运行的应用程序提供了一种全新的系统体系结构。至此再也不需要在服务器上持续运行进程以等待HTTP请求或API调用,而是可以通过某种事件机制触发代码的执行,通常这只需要在AWS的某台服务器上配置一个简单的功能。此后Ant Stanley 在2015年7月的名为《Server are Dead…》的文章中更是围绕着AWS Lambda及刚刚发布的AWS API Gateway这两个服务解释了他心目中的Serverless,“Server are dead…they just don’t know it yet”。到了2015年10月份,在那一年的AWS re:Invent大会上,Serverless的这个概念更是反复出现在了很多场合。印象中就包括了“(ARC308)The Serverless Company Using AWS Lambda”及“(DVO209)JAWS: The Monstrously Scalable Serverless Framework”这些演讲当中。随着这个概念的进一步发酵,2016年10月在伦敦举办了第一届的Serverlessvconf。在两天时间里面,来自全世界40多位演讲嘉宾为开发者分享了关于这个领域进展。 在Serverless的世界里面,AWS扮演了一个非常重要的角色。但是AWS并不是唯一的Serverless架构服务的供应商。其他厂商,例如Google Cloud Functions、Microsoft Azure Functions、IBM OpenWhisk、Iron.io和Webtask等各种开源平台都提供了类似的服务。 Serverless与FaaS 微服务(MicroService)是软件架构领域业另一个热门的话题。如果说微服务是以专注于单一责任与功能的小型功能块为基础,利用模组化的方式组合出复杂的大型应用程序,那么我们还可以进一步认为Serverless架构可以提供一种更加“代码碎片化”的软件架构范式,我们称之为Function as a […]

Read More

通过AWS目录服务管理AWS资源

背景 前段时间在拜访客户时,客户提了一个问题:如何结合企业内部既有的身份管理/鉴权体系,更加灵活、经济的实现对AWS 资源实现分角色管理的问题 ? 该客户目前在AWS多个 Region部署了业务系统,并且计划通过AWS Direct connect建立Region之间的专线连接,通过AWS的全球架构支持公司业务的快速扩展。客户的技术运营团队根据各协作团队的分工建立了不同权限的IAM用户,通过制定相应的IAM策略,各个协作团队可以管理对应的云端资源 。在实际工作中由于人员在项目之间频繁调整,及各种原因的人员流动等因素,导致 AWS IAM用户需要频繁调整。 就该客户情况而言,如果人员角色的任何变化只需在AD账户体系就能完成管理并自动映射到AWS 权限体系中, 客户就能平滑遵循企业内部的既有合规体系只需要管理AD帐号统一管理云端与本地的资源, 。 为解决这类的问题,通常可以部署ADFS实现IAM与本地活动目录间的联合身份认证,具体可参考这篇博客内容:https://aws.amazon.com/cn/blogs/china/adfs-bjs/ 今天介绍另外一种实现方式,通过AD Connector与本地活动目录整合,使用本地活动目录中的用户登录AWS Console 页面。以下是基于 AWS Global 环境中的测试部署过程: 一.AD 连接器( AD Connector)是什么 AD连接器 AWS托管目录服务中的一种目录服务类型,用于将本地Microsoft Active Directory连接到AWS云端,无需进行复杂的目录同步设置或部署托管联合基础架构的组件。 AD连接器将登录请求转发到本地Active Directory域控制器进行身份验证,并使应用程序能够查询目录中的数据。用户可以使用其现有的企业凭据登录AWS应用程序,如Amazon WorkSpaces,Amazon WorkDocs或Amazon WorkMail。授予适当的IAM权限,还可以访问AWS管理控制台并管理AWS资源,如Amazon EC2实例或Amazon S3存储桶。 如上图,AD Connector与企业本地数据中心可以通过AWS Direct Connect 服务或IPSEC VPN进行数据交互。 二.活动目录服务器准备 1. 网络环境 在测试环境的vpc中规划以下子网: 子网“lab-DC”将运行一个测试的活动目录服务器(域控) 其他两个子网为位于不同az的私有子网,AD Connector 将部署在这两个子网中 在生产环境中,可以考虑在 AWS vpc部署多个与本地域控建立复制关系的只读域控服务器用于和 […]

Read More

Token Vending Machine:移动应用客户端安全访问AWS服务的解决方案

背景介绍 广大移动互联网应用和移动游戏开发者在利用AWS服务进行开发过程中,经常需要为移动客户端提供AWS服务访问安全证书,以便让这类移动端应用有权限直接访问AWS服务,比如通过AWS S3服务上传图片文件或者通过AWS SQS服务发送消息。 有些移动开发者可能会考虑为每个移动应用用户分配一个固定的AWS IAM安全证书来实现移动客户端访问AWS服务。但是一款热门的移动互联网应用或者移动游戏往往拥有数百万甚至上千万的用户基数,让系统管理员为每一个用户分配和管理IAM 安全证书工作量将会非常巨大。而且移动客户端相对服务器端具有较低的安全等级,保存在移动设备内部的敏感信息比如用户账号或密码存在泄露的风险,强烈建议移动开发者不要将AWS安全证书长期保存在用户的移动设备中。 利用AWS 安全令牌服务Security Token Service (简称STS)可以动态的为大量移动客户端用户分配临时安全证书 ,并且可以限制这些临时安全证书的AWS服务访问权限和有效时间。使用AWS STS临时安全证书没有用户总数的限制,也不需要主动轮换,证书自动会过期,拥有非常高的安全性。对于这种采用AWS STS和其他相关AWS服务构建的移动客户端访问AWS服务安全证书分配系统,我们把它命名为Token Vending Machine,即令牌售卖机,简称TVM。 下面我们以一个典型的手机图片管理APP演示项目为例来介绍如何利用AWS相关服务设计和开发一套TVM系统。读者可以通过参考演示项目的设计思想和相关源码快速开发出符合自己项目需求的TVM系统。 假设该演示项目的基本需求如下: 1) 用户在使用该APP前要先完成注册 2)   用户成功登录后可以通过APP上传,查看和管理自己的图片 3)   用户不可以访问到其他用户的图片 实现原理 整个演示项目实现可以分为三个主要模块:移动客户端、TVM系统和S3服务。 A. 移动客户端 包括访问TVM系统获取临时安全证书的客户端代码 包括直接访问AWS S3存储桶用户个人目录内容和图片管理相关的代码逻辑实现。 B. TVM系统 使用了一台AWS EC2实例来运行Apache Tomcat Web服务器,用于向移动客户端提供远程访问接口以获取临时安全证书。在Tomcat内部则部署了使用JAVA语言开发的TVM服务器端实现。 使用了AWS 高性能的NoSQL数据库DynamoDB做为后台用户数据库。该数据库用来保存注册用户的账号、密码和会话Key等信息。 开发者自行设计和实现TVM系统的时候,完全可以使用自己熟悉的数据库产品或者集成第三方已有的用户数据库服务,比如基于LDAP的企业内部用户数据库。 TVM系统的JAVA实现通过访问AWS STS服务获取临时安全证书以提供给移动客户端。 在真实的项目中,运行TVM系统的服务器端往往还将直接管理S3中保存的所有用户资源,比如可以限制每个用户允许上传图片的数量和文件合计大小等等。这部分功能在本演示项目中暂时没有实现。 C. S3服务 AWS S3服务为用户上传图片提供了持久化存储能力。 在用户成功完成账号注册后,TVM系统的基本工作流程如下: 1) 用户通过移动客户端输入账号和密码,登录系统。 2) TVM查询用户数据库,校验账号和密码组合的合法性。 3) TVM访问AWS […]

Read More

利用S3fs在Amazon EC2 Linux实例上挂载S3存储桶

背景介绍 Amazon S3是互联网存储解决方案,能让所有开发人员访问同一个具备可扩展性、可靠性、安全性和快速价廉的数据存储基础设施。Amazon S3 提供了一个简单 Web 服务接口,可用于随时在 互联网上的任何位置存储和检索任何数量的数据。开发人员可以利用Amazon提供的REST API接口,命令行接口或者支持不同语言的SDK访问S3服务。 对于原来使用本地目录访问数据的应用程序,比如使用本地磁盘或网络共享盘保存数据的应用系统,如果用户希望把数据放到S3上,则需要修改数据的访问方式,比如修改为使用AWS SDK 或CLI访问S3中存储的数据。为了让用户原来的应用系统能在不做修改的情况下直接使用Amazon S3服务,需要把S3存储桶作为目录挂载到用户服务器的本地操作系统上。常用的挂载工具有S3fs和SubCloud等。本文主要介绍如何利用S3fs将S3存储桶挂载到Amazon EC2 Linux实例上。 S3fs介绍 S3fs是基于FUSE的文件系统,允许Linux和Mac Os X 挂载S3的存储桶在本地文件系统,S3fs能够保持对象原来的格式。关于S3fs的详细介绍,请参见:https://github.com/s3fs-fuse/s3fs-fuse 利用S3fs挂载S3存储桶 一、准备 使用拥有足够权限的IAM账号登录AWS控制台。 创建S3存储桶,给存储桶命名如“s3fs-mount-bucket”(如果使用已有存储桶,本步骤可略过)。      3. 创建具有该S3存储桶访问权限的 IAM 用户,并为该IAM用户创建访问密钥。 a) 关于如何创建IAM用户,请参见:http://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/id_users_create.html#id_users_create_console b) 关于如何为IAM用户创建访问密钥,请参见:http://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/id_credentials_access-keys.html c) 关于如何为IAM用户设置权限策略,请参见:http://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/access_policies_create.html https://aws.amazon.com/cn/blogs/security/writing-iam-policies-how-to-grant-access-to-an-amazon-s3-bucket/ 4. 创建并启动Amazon EC2 Linux实例 具体过程请参见:http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/launching-instance.html 二、安装和配置S3fs 安装s3fs a) 使用Amazon EC2默认用户“ec2-user”和对应的私钥文件登录启动的Linux实例(请注意将下边例子中的私钥文件和ec2实例域名替换为用户自己的值) ssh -i /path/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com b) 安装必要的软件包 sudo yum install […]

Read More