Author: AWS Team


新功能 – EC2 实例和 EBS 卷的每秒计费功能

在过去,如果您需要使用计算能力,则需要购买或租用服务器。当我们在 2006 年推出 EC2 时,使用一个实例一个小时只需支付一小时的费用是头条新闻。即付即用模式激励我们的客户思考开发、测试和运行所有类型的应用程序的新方法。

如今,AWS Lambda 等服务证明我们可以在短时间内完成大量有用的工作。我们的许多客户都在设计适用于 EC2 的应用程序,以便能够在更短的时间内 (有时仅为几分钟) 充分利用大量实例。

EC2 和 EBS 的每秒计费
于 10 月 2 日开始生效,以按需、预留和竞价形式发布的 Linux 实例的使用将按 1 秒的增量计费。同样,EBS 卷的预置存储也将按 1 秒的增量计费。

每秒计费功能也适用于 Amazon EMRAWS Batch

Amazon EMR – 我们的客户增加了其 EMR 群集的容量以更快地获得结果。借助适用于群集中的 EC2 实例的每秒计费功能,添加节点要比以往任何时候都更经济高效。

AWS Batch – 我们的客户运行的许多批处理作业在 1 小时内即可完成。AWS Batch 已启动和终止竞价型实例;利用每秒计费功能,批处理将变得更划算。

Elastic GPUsElastic GPUs 的使用按秒计费,最少1分钟。

Provisioned IOPS – io1 EBS 卷的 Provisioned IOPS 按秒计费。

我们的一些更精明的客户已构建系统,通过在管理其游戏、广告技术或 3D 渲染队列时战略性地选择最有利的目标实例来从 EC2 中获得最大价值。每秒计费功能消除了这种额外的实例管理层的需要,并实现了所有客户和所有工作负载的成本节省。

虽然这将导致许多工作负载的价格降低(您知道我们喜欢降价),但我认为这并不是此改变的最重要方面。我相信,这种改变将激励您进行创新并以新的方式思考您的受计算限制的问题。您如何利用这一点来增强对持续集成的支持?这是否能改变您为开发和测试工作负载预置瞬态环境的方式?您的分析、批处理和 3D 渲染将会怎么样?

云计算的许多优势之一是,在您需要时预置或取消预置资源的弹性特性。通过对使用量每秒计费,我们使客户能够提高其弹性、节省资金,并且客户将被定位以利用计算中的持续改进。

需知信息
此更改在所有 AWS 区域中都是有效的,并且将于 10 月 2 日开始生效,适用于新发布的或已经运行的所有 Linux 实例。每秒计费功能目前不适用于运行 Microsoft Windows 或 Linux 发行版的实例,后者已按小时单独计费。每个实例均最少有 1 分钟计费。

列表价格和竞价市场价格仍按每小时列出,但计费单位下调至秒,预留实例使用量也按秒计算(您可以在 1 个小时内启动、使用和终止多个实例并获得所有实例的预留实例优势)。此外,账单将以十进制格式显示次数,如下所示:

AWS Marketplace 中的区域专用费、EBS 快照和产品仍按小时计费。

Jeff

AWS Deep Learning AMI 现在包含 Apache MXNet 0.11 和 TensorFlow 1.3

AWS Deep Learning Amazon 系统映像 (AMI) 旨在帮助您在 AWS 上构建稳定、安全且可扩展的深度学习应用程序。AMI 预安装了常用的深度学习框架,具有 GPU 驱动程序和库,让您可以训练复杂的 AI 模型并在云中进行扩展。

最新版 AWS Deep Learning AMI 可用于 Ubuntu 和 Amazon Linux 平台。AMI 中包括多项更新,其中最引人注目的是支持 Keras 的 MXNet 0.11。MXNet 现可作为运行 Keras 1.2 的用户的后端选择。利用 MXNet,Keras 用户可以轻松设置多 GPU 以实现训练和近线性扩展的出色性能。要了解有关使用 MXNet 作为 Keras 后端的好处的更多信息,请参阅 NVIDIA 的博客。AMI 现在还可与最新版 TensorFlow (1.3.0 版) 一起运行。

使用 AMI 进行入门可谓轻松快捷。按照此分步指南 进行操作,在几分钟内便可开始深度学习。

以下是 AMI 上的深度学习框架和 GPU 驱动程序的完整列表 (同时适用于 Ubuntu 和 Amazon Linux 版本):

  • MXNet 0.11.0
  • TensorFlow 1.3.0
  • Keras 1.2.2 (DMLC 复制,具有 MXNet 0.11 支持)
  • Caffe1.0
  • Caffe2 0.8.0
  • CNTK 2.0
  • Theano 0.9.0
  • Torch (主分支)
  • CUDA Toolkit 8.0
  • cuDNN 5.1
  • NVIDIA Driver 375.66

您可以在 AWS Marketplace 上找到 AMI for UbuntuAmazon Linux

如何使用Amazon Macie 进行安全数据自动分类和用户行为监控

概述

当我们在Amazon S3中存储大量内容时,识别和分类其中潜在敏感数据可能会有点像在一个非常大的干草堆中找绣花针针,整个的过程是非常低效。那么能否有一种工具可以在数据加入到S3后就自动的识别敏感信息并自动进行分类?

同时在我们日常的工作中,访问数据的时间间隔及物理位置相对的固定。如果发生异常的事件,例如原来某个用户一天访问一到两个文件,但如果突然在某天访问超过一百个文件,能否由系统发出告警事件提醒相关人员进行相关检查,确保安全?

本文从如下几部分介绍Amazon Macie服务及主要功能,同时还列出常见使用场景,以及如何配置的简要步骤。希望能给大家带来帮助。

什么是Macie

Amazon Macie 是一种支持人工智能技术的安全服务,可以帮助您通过自动发现、分类和保护存储在 AWS 中的敏感数据来防止数据丢失。Amazon Macie 使用机器学习来识别敏感数据 (例如,个人身份信息 [PII] 或知识产权),分配业务价值,提供此数据的存储位置信息及其在组织中的使用方式信息。

Amazon Macie 可持续监控数据访问活动异常,并在检测到未经授权的访问或意外数据泄漏风险时发出警报。

为什么要使用Macie

对现存的海量文件进行自动的分类并且根据不同的分类制定不同的监控策略,一旦发生异常的访问需要得到及时的告警,是每个组织面临的挑战。

Amazon Macie提供了简单高效并且安全的方案,Macie通过使用机器学习来了解存储的内容和用户行为,同时提供可视化界面,展示安全分类,从而使客户能够专注于保护敏感信息,而不是浪费时间手工的处理。

Amazon Macie内置检测个人身份信息(PII)或敏感个人信息(SP)的常见敏感信息的引擎,可以自动识别出S3存储文件是否包含例如个人身份信息(PII)或其他公司财报等敏感信息,在没有Macie之前,这样的工作都需要手工的处理或者使用第三方平台。而现在可使用Macie很容易解决上述问题。

Amazon Macie持续监控数据和账户凭证 。 在发现可疑行为或对实体或第三方应用程序进行未经授权的数据访问时撤销访问或触发密码重置策略,来防范安全威胁。当Amazon Macie发出警报时,您可以使用预先在Amazon CloudWatch设置的规则发送告警,以便迅速采取行动,保护数据。

Macie主要功能

Amazon Macie首先功能分为两部分,一方面是使用自然语言处理(NLP)来理解数据,Macie可以自动对您的S3桶中的数据进行分类。另外一个是使用机器学习理解用户访问数据的行为,同时利用动态分析数据访问模式的预测分析算法,并使用日常访问的用户行为数据不断的训练并优化模型。

Macie 主要功能

  • 自动化处理数据:分析,分类和自动处理数据,从现有的数据和访问日志分析出有规律的历史模式,用户认证数据,用户位置信息及时间信息。
  • 数据安全和监控: 主动监控 日志数据,检测到的异常情况,转发告警信息到CloudWatch 事件或和Lambda以进行后续处理,例如自动修复安全漏洞或者发送邮件通知。
  • 主动预防的数据的丢失,提供即时保护,无需手动干预。
  • 可视化分析:提供存储数据的可视化详细信息。
  • 数据研究与报告:允许用户管理配置报告。

Macie如何运作

在数据分类过程中,Amazon Macie 识别 S3 存储桶中的对象,并将对象内容流式传输到内存中进行分析。

当需要对复杂文件格式进行更深入的分析时,Amazon Macie 将下载对象的完整副本,并在短时间内保存,直到完成对象的全面分析。Amazon Macie 对数据分类的文件内容分析完毕后,它将立即删除存储内容,仅保留未来分析所需的元数据。

Amazon Macie持续监控分析当前的用户行为习惯并以基础形成基线,例如敏感数据在哪个IP地址以及何时以什么样的频率被进行访问。随后Macie持续监控CloudTrail日志并训练机器学习所使用的模型,,一旦发现可疑的访问活动,Macie可以及时发出告警。

示意图如下:

信息分类

Amazon Macie已经定义好信息分类标准:

  • 配置合规性 – 与合规性内容策略,配置设置,数据日志记录以及补丁级别相关​。
  • 数据合规性 – 与合规性或安全控制内容的发现相关,例如存在个人身份信息或访问密钥。
  • 文件托管 – 与恶意软件,不安全的软件或攻击者的命令和控制基础架构相关的托管主机或存储服务。
  • 服务中断 – 可能导致无法访问资源的配置更改。
  • 恶意软件或活动- 潜在的恶意软件或活动。
  • 可疑访问 – 从风险异常的IP地址,用户或系统访问您的资源 。
  • 身份枚举 – 一系列API调用或访问,枚举系统的访问级别,可能指示攻击的早期阶段或受到破坏的凭据。
  • 特权升级 – 成功或不成功的尝试,以获得对通常受应用程序或用户保护的资源的高级访问,或尝试长时间访问系统或网络。
  • 匿名访问 – 尝试从IP地址,用户或服务访问资源,以隐藏用户的真实身份。 例如包括使用代理服务器,虚拟专用网络和其他匿名服务,如Tor。
  • 开放许可 – 识别受潜在过度允许访问控制机制保护的敏感资源。
  • 位置异常 – 访问尝试敏感数据的异常和危险的位置。
  • 信息丢失 – 敏感数据的异常和冒险访问。
  • 凭证丢失 – 可能损害您的凭据。

告警严重级别

Macie 内置了5种告警信息级别

  • 严重(Critical) – 该级别可能导致信息机密性,完整性和可用性受到损害的安全问题。建议将此安全问题视为紧急情况,并实施立即的补救或加固措施。
  • 高 –该级别可能导致信息机密性,完整性和可用性受到损害的安全问题。建议将此安全问题视为紧急情况,并实施立即的补救或加固措施。
  • 中等(Medium) – 该级别可能导致信息机密性,完整性和可用性受到中等性损害。建议在下次更新服务期间修复此问题。
  • 低(Low) -该级别可能导致信息机密性,完整性和可用性受到低等性损害。建议您将此问题作为未来服务更新的一部分。
  • 信息(Informational) – 该级别警告只描述基础架构的特定安全配置详细信息。根据相关业务和组织目标,可以简单地记录这些信息或使用它来提高系统和资源的安全性。

注:严重(Critical) 和高(High)之间的主要区别:

产生严重(Critical)警报的事件可能导致大量资源或系统受到损害。

产生高(High)警报的事件可能导致一个或多个资源或系统受到损害。

开始使用Macie

需要配置的IAM 角色

创建身份访问管理(IAM)角色,为Macie提供对您的AWS帐户的访问权限。这些角色只需要创建一次,以便在所有地区使用。

我们以Oregon区域作为例子 ,可以通过启动下面列出的URL中找到的AWS CloudFormation堆栈模板来创建这些角色和所需的策略。

https://s3-us-west-2.amazonaws.com/us-west-2.macie-redirection/cfntemplates/MacieServiceRolesMaster.template

配置Cloud Trail服务

首先需要建立相应IAM Role, 确保Amazon Macie能够访问S3及 CloudTrail,另外是要启动CloudTrail服务以对相关的AWS API操作进行分析。

开始使用Macie服务

添加需要管理的S3 存储桶

需要在Macie中添加需要访问S3存储桶并对其中的文件进行统计分类。

步骤如下:

1.     进入Macie Console 页面,点击 Integrations 页面后,选择SERVIES 标签页面,点击 Select an account 下拉框

2.     选择 Amazon S3 Detail

3.     选择Selected S3 buckets and prefixes

4.     选择Macie分析的S3 bucket

文件分类

在Macie中添加需要分析的S3 存储桶后,Macie会自动开始分析其中的文件,稍等一段时间后,进入Macie的Dashboard 页面。

在Dashboard中共提供10种视图,为了演示本文章仅仅展示其中的两个。

S3文件分类统计结果

S3文件分类统计详细结果

用户行为分析

根据CloudTrail的日志,Macie自动分析所有IAM user的相关操作。根据Macie预先定义的规则,把IAM用户分为如下四类:

  • 白金:这类IAM用户或角色曾有管理员或root用户的高风险API调用的历史,例如创建用户,授权安全组入口或更新策略。 应对这类帐户进行重点监控。
  • 黄金:这类IAM用户或角色曾有创建与基础设施相关的API调用的历史,这些API调用标志其具有高级权限,例如创建实例或拥有向Amazon S3写入数据的权限。 这些帐户应密切监控。
  • 白银:这类IAM用户或角色曾大量中等风险的API调用的历史,例如Describe和 List操作或对Amazon S3的只读访问请求。
  • 青铜:这些IAM用户或角色通常在AWS环境中执行较少量的Describe 和List  API调用。

Macie使用如下的界面展示用户行为分析。

告警管理

Macie内置了40种告警规则,我们可以根据实际情况选择启用或者禁用该规则。

下面我们选择级别为 严重(Critical) 的告警规则进行分析。

从上图可知该告警的规则是 “如果 IAM Policy 设置 S3存储桶可以被任何人可读,那么触发告警”, 告警样例如下:

添加自定义告警

Macie不仅仅支持内置的告警规则设置,同时也支持自定义规则的定义。

场景:

根据 Macie 定义的规则,如果文档中包含 “merger, acquisition, divestiture, reorganization, consolidation, demerger, restructuring, rebranding, takeover, subsidiary” 关键字,那么该文档会被分类为 “Corporate Growth Keywords”的类别。

现在假设用户往S3上传了具有上述关键字文档,可能存在信息泄漏的风险,需要发送告警严重级别为 “Medium”的告警。

下面演示如何添加自定义告警

1.     进入Macie Console

2.     点击 Setting-> Protect data –> Basic alerts

3.     点击 Add New 按钮

4.     按照如下样例填写

Alert Title: Test Customer Alert

Description: Test Customer Alert

Category: 选择 Information Loss

Query: themes:” Corporate Growth Keywords ”

Index: 选择S3 objects

Min number of matches:1

Severity:Medium

Whitelisted Users: 不选

5.     点击 Save 按钮.

6.     往S3上传如下内容的word文件

7.     上传成功(存储桶名字暴露了)

8.     回到DASHBOARD界面,收到告警

注:在Alert中定义最关键的部分是Query, Macie会把Query中的内容使用JavaCC转换成Lucene Query。有关查询语法的更多信息,请参阅Apache Lucene – Query Parser Syntax

如下是常见搜索的示例:

  • 搜索任何不是源自Amazon IP地址的控制台登录:

eventNameIsp.compound:/ConsoleLogin:~(Amazon.*)/

  • 公共S3存储中的PII(Personally Identifiable Information)

filesystem_metadata.bucket:”my-public-bucket” AND (pii_impact:”moderate” OR pii_impact:”high”)

同AWS其他服务集成

Amazon Macie 可以同其他AWS服务集成。如下示例如何使用CloudWatch和SNS集成。具体演示如下:

1.     创建SNS并使用相应的邮箱确认

2.     在CloudWatch 创建Rule

3.     收到告警邮件

更改S3元数据(Metadata)的保存周期

缺省条件下,Macie保存S3 元数据的周期是一个月,但可以系统支持该周期最长为12个月。更改步骤如下:

  1. 进入Macie Console
  2. 点击 Integrations -> Choose retention duration for S3 metadata –> Select a range

总结

Macie使用机器学习算法自然语言处理S3中存储的数据,并且使用上下文信息对信息进行分类,并给数据分配相应的业务价值标签。自动发现分类和保护存储在AWS中的敏感数据,同时持续检查S3桶中PUT请求的CloudTrail事件,并几乎实时自动对新对象进行分类。同时监控CloudTrail的API日志,识别出日常的用户行为模式,一旦Macie发现异常的行为,可以及时的发出告警。

通过Macie,可以方便的实现数据安全自动化,及数据可视化和数据丢失防护。

 

作者介绍
刘春华,AWS 解决方案架构师,AWS的云计算方案架构的咨询和设计,同时致力于AWS云服务在国内和全球的应用和推广,在大规模并发应用架构、无服务器架构,人工智能与安全等方面有丰富的实践经验。 曾任IBM云架构师,对企业应用迁移到云及应用系统改造有深入的研究。

 

 

应成文规定企业文化和聘用与企业文化相契合的人才的 3 个理由

“公司刚成立时,我们没有太多地讨论企业文化。根本没有任何成文规定。我们只是成立了一家自己感觉工作氛围良好的公司。在那时看来,这很不错了。但当我们开始进行更深层次的思索时,意识到企业文化是必不可少的。我们需要把它写下来,共同讨论。分解,精心讨论细节,再融合在一起。如此反复。一遍又一遍。” — 史蒂夫·乔布斯

大多数高管都认同“人才使组织变得独一无二”这句话。高绩效者的加入可以形成推动力,加快其参与的计划的进展,同时改善他人的成果。相反,如果缺少高绩效者,可能会形成“真空环境”,不能正常完成相关计划,同时降低组织的士气。无论哪种方式,团队增加或减少的每一个人都会影响组织的 DNA 或文化 — 这种影响有时微妙,有时深远。

在过去的几十年里,我有幸在几个具有高绩效文化的公司里工作过。

我花了 11 年时间从适应 — 到拥护 — Bloomberg LP 的企业文化,从工程师、工程经理一步步成长为业务负责人。在随后的 3 年里,我以首席信息官的身份在道琼斯内部推行了企业文化变革。在过去 3 年里,我作为 AWS 全球企业战略主管,四处推广 Amazon 强大的企业文化,帮助世界上一些最大的公司变革其企业文化。

通过这段经历,我发现,具有高绩效企业文化的组织在招聘人才时,对文化契合度的要求不亚于对专业领域和/或专业知识的要求。坚实的专业知识 — 无论是工程、销售、市场营销还是其他领域 — 不应忽视,但并非全部。

在我所经历的每一个高绩效企业文化中,组织对企业文化所扮演的角色都有其目的性,得益于它产生的上升力,有助于员工更快地发挥个人潜力。因此,在说明为什么我认为组织的聘用决策考虑文化契合度会对组织有益之前,您的组织需要明白自己的企业文化是什么,最好把它记录下来。

每一家公司 — 不管其规模、行业、资历如何 — 都有自己的企业文化。

企业文化是公司现状的结果 — 而不是其成因 。

并非每一家公司都会以书面形式记录其企业文化。

如果没有明确成文的企业文化,员工可能会猜测自己该以何种方式工作,这对企业来说是一种风险。因此,就算有很多员工向生产力低下的方向发展或与工作环境格格不入,也不足为奇。

例如,我在彭博工作期间 (2001 年到 2012 年),我们的部分企业文化是有成文规定的,有些更像是“部落文化”。每个部门都有一系列明确的指标 (如所有权、技术能力、沟通度),公司会对员工开展测评以强化某些行为;此外,公司还有一项隐含指标,我们简单地称之为“彭博价值观”(如勇往直前、不屈不挠、完成工作 (GSD)),这是需要随着时间的推移才能慢慢感受和体会到的。事后看,我发现有一些貌似高绩效者 — 特别是具有很多以往经验的人士 — 因为抵触“彭博价值观”而成长较慢 (稍后再详细说明这一点)。

同样,Amazon 也将我们的部分企业文化以 14 条领导准则 (在 Amazon 内部,我们将其简称为 LP) 的形式记录了下来。每条 LP 都在我们的日常工作中发挥着巨大的作用,它们是在 Amazon 做任何工作 (从招聘、绩效管理到业务决策) 的关键因素 (稍后详细说明)。

在一篇相关文章中,我在 AWS 的一位同事 Joe Chung (我很荣幸认识他,我从他身上学到了很多东西) 介绍了制定明确的准则在任何大型云项目期间帮助指导决策的重要性。Joe 的许多观点适用于任何大型变更管理或企业文化原则制定活动。

不管组织有没有明确的“准则”或“价值观”,或者以其他形式描述企业文化,历史经验表明,以成文形式规定企业文化优于什么都不做 (至少对 Apple、彭博和 Amazon 是这样)。

而且,以书面形式规定企业文化有助于甄别契合企业文化的人才。您应该考虑以成文形式规定企业文化并聘用契合企业文化的人才,主要原因有以下 3 个:

原因 1 — 招聘契合企业文化的人才有助于始终如一地指导招聘工作

© Roger W https://www.flickr.com/photos/24736216@N07/5869083813

聘用人才非常难。要聘用的人越多,难度越大。

我认识的大多数高绩效者 (您的团队需要的那些人) 已经有了他们喜欢的工作,这可能也是他们绩效较高的原因之一。我发现,这些高绩效者倾向于寻找能够帮助其取得成功的企业文化。(包括我自己在内;我那时*真的*很希望到 Amazon 工作,想感受这里的工作驱动力。)也就是说,您越拥护、丰富和尊重自己的企业文化,契合您企业文化的人也越容易发现它。

在 Amazon,我们聘用员工的速度很快。我们通过多种方法来满足我们的招聘需求 — 例如,摇滚明星式招募团队、不懈创新追求、能吸引其他能人的能人,等等。在所有这些方法中,我认为,按照最相关的 LP 评估每位候选人能够最大限度地加快我们的招聘流程。每位面试官都非常了解如何依照对招聘经理最重要的 LP 来评估候选人,我们的所有“汇报”(决定每位候选人聘用与否) 讨论都基于候选人与 LP 及风险的匹配度 (没有不存在风险的招聘)。如果没有这些 LP 和周密的过程,我们的招聘活动不会这么快速。

我在彭博任职期间经历过几次招聘高峰,那时,我们每年都会在大学校园直接聘用 100-150 名工程师。我们设立的技术门槛极低 — 每位候选人必须能够设计一个基本的系统,并且编写出解决一个简单问题的代码 — 其余的聘用决策都基于文化契合度。彭博招聘团队的大部分成员都已在该公司工作多年,非常熟悉自己的企业文化,足以衡量候选人是否具备适当的问题解决能力以及是否契合组织的“彭博价值观”。凭借这些洞见,我们能够在现场做出聘用决策,这引出了我们的另一个观点。

原因 2 — 招聘契合企业文化的人才有助于新员工融入新环境

开始一项新工作可能令人兴奋,也可能是一场可怕的经历。新员工一般不知道自己面临的是什么样的环境、同事,通常也不完全了解其角色所带来的细微差别。但是,候选人对企业文化了解越深 — 越理解自己与这种文化是一致的 — 就越容易适应新环境。

我经常将高绩效文化想象成一种气流。契合企业文化的新员工将得到助力,不契合者最后会非常疲惫,要么调整自己的行为,要么离开组织。

在 Amazon,我们相信新员工是顺流而不是逆流而行的人,因为在聘用决策前,面试过程中重视 LP 帮助我们做到了这一点。除此之外,在汇报期间讨论候选人风险时,我们还可以讨论降低这些风险的方式 — 指派辅导老师,提供培训计划或辅导课程 — 因此,候选人在我们的企业文化氛围中有最好的成功机会。

由于我们有成文的 LP,这就不限于任何个人、经理或计划。新员工更容易一贯如一地理解我们的行事方式。在我的职业生涯里,见过、听过很多高绩效者因为没有意识到自己与企业文化不一致而导致工作不开心或不成功。

原因 3 — 招聘契合企业文化的人才有助于部署 (或重新部署) 人才

有很多信源 (此处此处此处) 表明,当今企业的平均员工任期持续缩短,这也符合常识。

这里可以得出很多结论,其中一个合理的结论是高绩效企业文化的组织的员工任期更长。

此外,我还发现,聘用契合企业文化的人才不仅有助于为组织注入他人难以复制的灵活性,而且更有可能招聘到可确保组织在许多方面长期保持领先地位的人才。我尽量向我在 Amazon 聘用的每位候选人传达这样的信息:我们期望建立互惠关系,这样我们可以在较长的时间内 (我们乐于长远思考) 探索多个不同的角色和领域。

说点题外话,在 11 年的彭博职业生涯里,我担任过不同领域的 6 个不同职位。拥有如此多的机会是我一直呆在彭博的主要原因之一。而且,尽管我犯过无数的错误,但在彭博文化价值观的指导下,我的领导团队仍愿意为我提供各种机会。回想起来,在这 6 个职位中,有 3 个是我在之前的领域做出一定贡献后获得的;而另外 3 个职位,我很确信是因为契合彭博企业文化而得到的。
您的经验是什么?您的企业文化是否有成文规定?如果没有,为什么?您会写些什么?您在聘用人才时是否考虑企业文化契合度?我很乐意倾听您的想法!我将继续发表关于企业文化的文章,欢迎发表意见和提供新想法!

不断前进
– Stephen
orbans@amazon.com
@stephenorban
http://aws.amazon.com/enterprise/

 

将 AWS 认证工程师的数量从零增加到数百个的 12 步计划

“不要总希望得到您还未得到的;这会使您看不到目前拥有的可能性”

作为 AWS 企业战略家,我拥有与全球各地面对着各种业务和技术难题的高管们会面的特权。每个客户都是独一无二的。但是,许多难题,如同历史一样,往往具有规律性。

其中一个规律是,市场中的技能难题以及“不在相应岗位上配备合适的人员就会妨碍您提高行动速度、节省资金和在云上拓展业务”这一想法。可以肯定的是,随着人们认识到让 AWS 完成基础设施领域的无差别的繁重工作的好处,包含单词“AWS”和“云”的招聘广告显著增加了。但是,我认为这种不断增加的需求或者您没能获得所需人才的感觉并不会阻碍您的企业在云方面获得成功。

AWS 企业战略部主管 Stephen Orban 在一篇最新文章中就这一问题有力地指出,“您已经拥有成功实现云迁移所需的人才。”而且,为了加强这一说法的说服力,我想要分享我本人遇到一个主要技能难题时发生的故事。事情要追溯到 2014 年,我的云之旅才刚刚开始。

当时我在英国的 Capital One 担任首席技术官,然后,我发现自己在深入思考我在我的工程师身上发现的技能差距。这些工程师确实很有才华,但他们只是精通传统的内部技术;因此,他们掌握的大部分是孤立的基础设施技能。

为了寻求改变,我随后又犯了一个经常犯的错误:创建一个独角兽式的工作规范并自以为是地将它应用于外部就业市场。当我发现在收件箱中没有收到任何对这则招聘广告的回应时,我感到十分惊讶和失望。

很明显,我漏掉了一个重要的事实。

我拥有的技能高超、积极主动且全心投入的团队就是我需要的团队。只不过,团队成员们需要一个途径、一个动机以及一个善于倾听和帮助他们消除自身与生俱来的对未知技术恐惧的人。

有关人才转型的这种认识和企业云之旅为我积累了大量最佳实践,也让我更深刻地了解人类。但我必须说实话;在这个过程中,我们犯了很多错误并且浪费了很多时间。但是我们还是找到了一条途径,最终发挥了作用并且为 Capital One 在英国的成功做出贡献。这帮助 Capital One 将全球的技术人才提升到了极高的水平。实际上,所有 AWS 认证开发人员中现在足足有 2% 的人在 Capital One 工作

在说明优势之后,下面将介绍适合我们的 12 个步骤 —

步骤 1 — 接受

心理健康专家们表示,接受是走向恢复的第一步;这种说法在此处也完全适用。您的工程师们必须接受他们有能力学习 AWS 云技能并成为专家的事实。接受这一事实对于您组织内的技术主管来说也同样非常重要。正如 Stephen Orban 在文章中所述以及我在 Capital One 任职期间的经历所表明的那样,您拥有的人才就是您需要的人才。这些是在开发和运行您的现有系统方面拥有多年的重要经验的人员。

步骤 2 — 培训

在接受之后,您应该迅速开始 AWS Technical Essentials 课程。此课堂教学课程能让人大开眼界并愉快地一窥无限可能的艺术。对此,AWS 自己的培训团队或我们的其中一位获批培训合作伙伴可以起到很大的推动作用。

步骤 3 — 动手实践时间

对于经验的获得,没有任何捷径可言。因此,现在需要进行动手实践。即使略显笨拙,工程师也需要花费这些时间并在一个安全的位置实施配置。此外,目前似乎有数百万个实现这种可能性的方法,并且这些方法都有点难以掌控。您的工程师可能会非常兴奋,也可能会有点垂头丧气。识别每个人经历的正常变化曲线 (有些人的很短,有些人的很长 — 因人而异) 非常重要。持续激励也很重要。

步骤 4 — 创建您的双比萨团队

您组建的第一个工程团队应彻底包含各项核心技能的组合 — 网络、数据库、Linux 服务器、应用程序、自动化、存储和安全性。该团队将取得一些进步。它可能着眼于 Terraform 之类的工具以及其他东西。它还将编写一些 CloudFormation 代码。该团队会犯错。这是非常自然的事情。

步骤 5 — 引进一些专家

对于经验的获得,没有任何捷径可言 (续)。现在,您应该引进一些真正的专家。事实上,增加一些乐意分享经验教训和最佳实践的专家级工程师是目前至关重要的事。在英国的 Capital One,我与 CloudReach 密切合作,引进大量具有专业认证且经过现场证实的 AWS 工程师来达到此目的。我将这些专业工程师分配到不同的团队来满足他们对专业知识的需求。这一举措产生了变革性的影响。员工们通过观察、提问和“照着做”来互相学习。更好的一点是,工程师们喜欢向工程师同事学习。此外,由于在小型团队中工作,他们有机会提出问题并尝试在课堂环境下不会尝试的事情。我们甚至将这一过程所需的时间缩短至一天。在这样短的时间内,一位新工程师加入了团队,与一位专家结成搭档,然后通过 CloudFormation 和已出现的关联的持续集成/持续开发 (CI/CD) 最佳实践展示了自己。

步骤 6 — 实现目标

在这个阶段,敏捷双比萨团队的目标应是构建真实的环境并投入生产。这可能是用于托管小型应用程序和相关网络设置的基本 Amazon 系统映像 (AMI)。目的是找出对于着手工作来说很重要但并非关键的东西。设定在数周内而不是数月内完成这一目标。跟踪进度。展示好处。设置演示截止时间。随时查看进度以及最终结果。一句忠告 — 切忌让团队好高骛远。仅使用所需的 AWS 构建块。(您无需从一开始就掌握所有 90 多个构建块。)以后将有大量时间来扩展到其他构建块,因为您的解决方案会需要它们。实验的好处很关键,在学习过程中可以根据需要不断地丢弃然后重新开始,就像 AWS 在教您“走路”一样自然。

步骤 7 — 利用“细胞核分裂”推广学习成果

由于第一个团队达到了一定的 AWS 熟练度并且交付了一款产品,您现在需要观察这第一个团队的细胞核分裂。此外,您还需要逐渐但有意识地将已获得经验和最佳实践的这第一个团队分为两个全新的 4 人团队,然后为每个团队再引进 4 位工程师。这项工作将会很困难,应该小心处理。坦诚对待团队成员并肯定他们的共同成果将至关重要。此外,还要请求成员帮助您将经验教训和最佳实践传递给新的队友。采用这种细胞核分裂式方法继续拆分和重组团队,直到所有工程师融合成一个技术水平相当的团队。

步骤 8 — 认证

通过与 AWS 技术培训或我们的其中一位出色的合作伙伴合作,您现在可以开启认证之路。鼓励使用 A Cloud Guru 之类的服务还可以为工程师提供让他们根据自己的时间和节奏通过认证的流程。我提倡从助理级认证开始,然后逐渐提升到专家级认证。我在这里要暂停一下来重点说明这一点。对于这个经常被忽视的步骤,无论我怎么强调其重要性都不过分。在 Capital One,我们在工程师认证、应用程序的迁移以及 AWS 上的新系统构建之间发现了一种直接关联。Capital One 甚至为一个用于度量转型的过程申请了专利。工程师的认证过程展示出显而易见的专业上的进步,它还使通用 AWS 语言能够传播并形成支持解决方案开发的事实方法。

步骤 9 — 推广认证和相关领导力

Capital One 本身的经验、与我们许多客户的合作经验以及科学研究表明,在网络效应产生作用之前,您的拥护平台的工程师需要达到 10% 的临界数量。因此,将这种学习和认证推广到您的 10% 的工程师是您的云之旅中的重大里程碑。从这个阶段开始,您将获得强有力的晕轮效应,这种效应将开始影响外部人员看待您公司的方式,而不只是影响内部人员。您组织外的那些仅希望与原生云公司合作的工程师将开始认真考虑为您工作。因此,随着您吸引更多人才或将原有人才转变为具有云素养的人,您转型的速度将呈指数级提高。

步骤 10 — 认可并奖励专业知识(以非常公开且自豪的方式!)

作为 IT 主管,您的目标是公开宣布通过每个认证考试的每个工程师的姓名。以您能力范围内的任何方式奖励并认可技术进步。这包括宴请、优惠券、饮品、特别团队岗位、新奇的奖励,总之就是您能够想到的各种奖励。在 Capital One,我们拥有一份包含所有员工姓名以及他们获得的所有 AWS 认证的全球花名册。认证被视为一种有形的发自内心取得的成就。我遇见的几乎每一位工程师都渴望得到同行的尊重,而认证以及您获得的成就将为社区荣誉做出贡献。

步骤 11 — 挑战自我

当我在市政厅会议上表彰和奖励取得进步的工程师时,听众席中的一位言辞尖锐的人大声地说:“既然您如此热情洋溢地相信认证,那么您将在什么时候参加考试?”这很直接地打断了我的话。我有很长一段时间没有参加过行业考试了。但是,正如喜欢实践我宣扬的理论的人一样,我走进了考场。然后,我通过了 AWS 助理架构师认证考试。现在,我也能骄傲地站在这个舞台上!参加考试对我而言是一种极好的强迫机制,进而确保我获得了对关键 AWS 构建块的广泛但足够详细的了解。

步骤 12 — 创建统一的同类职业组合

最后,在适当的时候,您需要为您的技术员工提供具体的同类职业跟踪。以下是英国的 Capital One 在 IT 中创建的一些同类职业跟踪 —

技术项目经理 (TPM) — 通常负责敏捷执行、版本系列一致性和团队相互依赖性。

AWS 基础设施工程师 (IE) — 之前的数据中心系统工程师,过去通常负责 Linux/Wintel/Network 等。现在负责根据产品团队的需要创建用于不同的 AWS 构建块的 CloudFormation 代码。AWS 专家。

软件开发工程师 (SDE) — 编写逻辑并处理采用各种软件语言的数据结构。

软件质量工程师 (SQE) — 使用测试驱动型设计原则。确保在整个生命周期中都考虑并执行测试。

安全工程师 — 确保安全问题的全面性。

工程经理 — 该经理负责设计意图以及管理由上述技能团体的工程师组成的团队。

在您采用此途径时,应注意一些无形的晋升障碍可能会被打破。具体来说,不负责管理人员的工程师现在能够晋升到非常高的职位 (包括主管或主管以上职位) ,并且仍然不需要管理人员。这些晋升应考虑技术深度和相关能力发展以及逐渐提高的技术领导力成熟度。作为领导者,看到员工攀升到新的高度并获得来之不易的晋升始终是在该职位上令人欣慰的事情。我的团队中抓住绝佳机会的很多成员都自豪地获得了晋升。我们还自行打破了这种无形的障碍,而当我从英国 Capital One 离职时,我最自豪的时刻之一就是将我们的云卓越中心中的一位创始成员提升到了基础设施工程部门主管级别。这个人一直是一个独立贡献者和动手实践 AWS 专家,同时也是大家的好朋友。

将上述 12 个步骤作为人才转型的途径可以发挥您的团队成员的潜力,让他们为您的客户带来巨大的成果。

记住 — “您的所有假定的限制条件都是可辩驳的。”

Jonathan Allen
@jonathanallen02
jnatall@amazon.co.uk
EMEA 企业战略家和推广者

 

结合深度学习网络 (GAN 和 Siamese) 生成逼真的高品质图像

由于深度学习依靠用于训练它的数据的数量和质量,因此公司花费了大量资金来获得良好的图像数据。通常,公司会使用昂贵的人工注释或其他劳动密集型任务,如拍摄大量产品或人员照片。这种方法的成本高昂且不能扩展。训练计算机以生成高品质图像可大大降低成本并推动业务增长。

在这篇文章中,我用简单的术语解释由我的一些 Amazon 同事共同撰写的标题为“从语义上分解生成式对抗网络的潜在空间”的学术论文中介绍的概念。本文介绍了生成式对抗网络 (GAN)、Siamese 网络 (SN) 的实际应用,以便能够从语义上分解 GAN (SD-GAN)。

GAN 和 SN 是相对高级的深度学习符号,您可以单独使用 GAN 和 SN,也可以将其与其他深度学习符号结合使用来解决实际问题。通过将这些符号结合使用,AI 应用程序能够解决更多的难度更大且更复杂的业务问题。例如,面向 AI 的主要难题之一是缺少带注释或标记的数据。高品质的、带注释的数据的成本非常高,因此仅大型公司或资金充足的公司能够获得此类数据。通过使用深度学习方法 (如本文中介绍的那些方法),可让更多的公司从几个示例生成高品质数据。

我将说明作者如何使用 GAN、SN 和 SD-GAN 分析实际图像,并使用它们生成带同一人员或对象的受控变体的“假”图像。根据您设置的参数或“观察属性”,这些假图像可能看起来像是从不同的视角拍摄的、使用了不同的光照或具有更高的分辨率或其他类似变体。通过使用本文中介绍的图像分析方法,您可以创建出非常真实的图像,这些图像看起来像已使用 Photoshop 专门处理过或是使用 3D 模型创建的。

图 1:使用本文中介绍的方法生成的示例。每行均显示同一面部的变体。每列均使用相同的观察属性。

什么是生成式对抗网络?

生成式对抗网络 (GAN) 是适用于神经网络的相对较新的深度学习架构。它们是由蒙特利尔大学的 Ian Goodfellow 与其同事在 2014 年共同开发的。一个 GAN 训练两个不同的网络,二者彼此针对,因此它们具有对抗性。一个网络通过拍摄一个实际图像并尽可能多地修改该图像来生成图像 (或任何其他示例,如文本或语音)。另一个网络尝试预测图像是“假”还是“真”。第一个网络 (称为“G 网络”) 学会生成 更佳的图像。第二个网络 (称为“D 网络”) 学会辨别 真假图像。其辨别能力随时间的推移不断增强。

(more…)

使用 Apache MXNet 和 Apple Core ML 将机器学习引入 iOS 应用程序

作者:Sebastien Menant – Amazon Web Services 的解决方案架构师;Pracheer Gupta – 帕洛阿尔托的 AWS 深度学习团队的成员 / 原文链接

利用 Apple 在 WWDC 2017 上发布的 Core ML,iOS、macOS、watchOS 和 tvOS,开发人员现在可以轻松地将机器学习模型集成到其应用程序中。这使得开发人员只需编写几行代码即可为用户带来智能的新功能。利用 Core ML,移动开发人员能够更方便地使用机器学习。它可让您进行快速原型设计,并使用不同的传感器 (如摄像机、GPS 等) 来创建具有比以往更强大的功能的应用程序。

MXNet 社区的成员 (包括来自 Apple 和 Amazon Web Services (AWS) 的参与者) 已展开合作以生成用于将使用 MXNet 构建的机器学习模型转换为 Core ML 格式的工具。利用此工具,开发人员能够轻松构建面向 Apple 设备的由机器学习支持的应用程序。借助此转换工具,您现在将获得适用于支持深度学习的应用程序的快速管道。您可以从 AWS 云中使用 MXNet 的可扩展的高效分布式模型训练迁移到 Apple 设备上的快速运行时推理。

为了支持该转换工具的发布,我们已决定构建一个出色的 iOS 应用程序。我们从上一篇 AWS AI 博客文章 在 AWS EC2 上使用 MXNet 和 Multimedia Commons 数据集估计图像的位置获得了灵感,这篇文章介绍了用于预测图片拍摄位置的 LocationNet 模型。

在这篇博客文章中,我们说明了如何设置环境以将 MXNet 模型转换为 Core ML,转换现有模型,然后将模型导入用 Swift 编写的示例 iOS 应用程序中。iOS 应用程序向模型提供图片,从而预测图片拍摄位置,然后在交互式地图上显示该位置。出于性能的考虑,我们建议您在安装了 iOS 11 测试版的物理 iOS 设备 (如 iPhone) 上运行该应用程序,但您也可以在 Xcode 9.0 测试版附带的模拟器上试用该应用程序。

请注意,在编写 Xcode 9 时,iOS 11 和 Core ML 仍为测试版,并且您需要 Apple 开发人员计划 账户来下载 Xcode 和 iOS。但是,在今年晚些时候公开发布这些产品后,您便能使用 Mac 上的应用商店和 iOS 设备上的软件更新来获取它们。

MXNet 和该转换工具的安装

已在 macOS High Sierra 10.13 测试版 8 上安装并测试该工具。但是,只要您未在 Mac 上的 Core ML 模型上运行推理,便能在 macOS El Capitan (10.11) 及更高版本上运行该转换器。

要运行该转换工具,您需要安装 Python 2.7。

运行以下命令可安装 MXNet 框架以及 mxnet-to-coreml 工具:

pip install mxnet-to-coreml

MXNet 模型的转换

已在单个 p2.16xlarge Amazon EC2 实例上使用 MXNet 来训练 LocationNet 模型,该实例包含来自 AWS Multimedia Commons 数据集的带有地理标记的图像。它会在 MXNet Model Zoo 上公开分享。

与任何 MXNet 模型一样,LocationNet 包含两个部分:

  • 一个包含模型定义的 JSON 文件
  • 一个包含参数的二进制文件

继续并下载存储在 Amazon S3 上的 .json 模型定义.params 模型参数

此外,您还将需要从 GitHub 存储库下载类文件 grids.txt,该文件包含用于训练模型的地理单元格。已使用 Google 的 S2 Geometry Library 通过训练数据创建该文件。此文本文件中的每一行都采用 S2 单元格标记、纬度和经度的形式 (例如,8644b594 30.2835162512 -97.7271641272)。iOS 应用程序中的 Swift 代码将删除 S2 单元格标记信息,并且仅使用坐标。

按 GitHub 存储库中对该转换工具的描述,我们现在将转换模型。

在将所有内容下载到同一目录中后,请运行此命令:

mxnet_coreml_converter.py --model-prefix='RN101-5k500' --epoch=12 --input-shape='{"data":"3,224,224"}' --mode=classifier --pre-processing-arguments='{"image_input_names":"data"}' --class-labels grids.txt --output-file="RN1015k500.mlmodel"

在内部,该模型首先由在内存中重新创建整个符号图的 MXNet 进行加载。转换器浏览此符号图,并将每个运算符转换为其 Core ML 等效项。提供给转换器的一些参数由 MXNet 用来生成该图,而其他参数由 Core ML 用来预处理输入 (在将输入传递到神经网络之前) 或以特定方式处理神经网络的输出。

您应看到正在处理模型的多个层的转换工具,然后通过所生成文件的名称确认 SUCCESS。在后面的阶段,您将生成的文件 RN1015k500.mlmodel 导入 Xcode 项目中。

(more…)

Apple Core ML 和 Keras 支持现适用于 Apache MXNet

我们对于 Apache MXNet 版本 0.11 的可用性感到很兴奋。利用此版本,MXNet 在社区发展以及酝酿 Apache 项目方面都达到了重要里程碑。参与者 – 包括来自 Apple、Samsung 和 Microsoft 的开发人员 – 向此版本提交了代码。到目前为止,该项目已有 400 多名参与者。该项目现已将其代码库完全迁移至 Apache,并且已使其首个正式版本成为孵化项目。我们在上一篇博客中讨论了此版本的一些重要功能。本博客文章将简要回顾这些重点内容。

使用 MXNet 模型将机器学习构建到适用于 iOS、macOS、watchOS 和 tvOS 的应用程序中

利用 Apple 在 WWDC 2017 上发布的 Core ML 版本,开发人员现在可以轻松地将机器学习模型集成到其应用程序中,这使得他们只需编写几行代码即可为用户带来智能的新功能。我们已开始了解这些功能 (如增强实境) 将如何改变我们体验周围环境的方式。随着快速发展的 AI 空间中的功能的扩展,开发人员将有权访问新的机器学习模型,这些模型能够开启用于增强体验的新功能。

Apple 已将代码提交至 Apache MXNet 项目,以方便应用程序开发人员使用一流的模型。MXNet 现在与 Core ML 结合在一起,使开发人员能够利用 MXNet 在云中构建和训练机器学习模型,然后将这些模型导入 Xcode 中,以便您能够在应用程序中轻松构建智能的新功能。您可以从适用于各种应用程序的预训练模型的 MXNet Model Zoo 中选择,也可以构建您自己的模型。此版本为您提供一种用于将 MXNet 模型转换为 Core ML 格式的工具 (预览版)。要将 MXNet 模型导入 Apple 的 Core ML 格式中,您将需要安装转换器并运行 Python 命令以转换训练的模型。安装转换器只是执行一条简单命令:

pip install mxnet-to-coreml

按照本教程,了解如何构建由机器学习支持的用于确定图片中地点的地理位置的简单 iOS 应用程序。有关说明以及端到端示例,请访问此 GitHub 存储库

(more…)

在云中自动实现合规性的 3 个好处

“建立声誉需要 20 年的时间,而毁掉声誉只需 5 分钟。” — Warren Buffett

在我的技术生涯中,我一直支持遵从性和安全需求。在某些情况下,这些要求是极其苛刻的 - 例如,当我的团队为国防部审核做准备时,花费了几个月的时间,超出了我们时间的 50%。但是,在几乎所有的情况下,我都能够促进使用自动化的解决方案来使我们的生活更轻松,同时提高我们的安全性和遵从性水平。现今,移至云为您提供了明显改善合规性工作的可能性,而不需要在人力和成本上有同样的显著提升。

我来解释一下 –

合规官通常负责评估和管理企业财务、组织和声誉的风险。在企业环境中,这是一项艰巨的任务,因为人员、流程和技术的复杂性,加上跨行业和地理区域的监管差异。

企业和合规性之间也存在着一种天然的紧张关系。企业必须进行产品创新并改善客户体验。另一方面,合规性团队专注于限制或防止风险暴露,这可能与引入新产品和新特性相冲突。这就是合规性团队经常寻求维持现状的原因。底线是企业和合规性之间的自然紧张关系 - 有时运行状况 - 可能会导致关系紧张并经常导致成本增加,以及减慢上市速度。

通常,合规性团队会进行年度合规性评估、撰写报告和设定补救目标。随后,为业务和技术团队提供对任何发现结果进行补救的时间安排。产品经理和技术领导者了解合规性的重要性,但他们通常将评估视为“练习”并且从价值生成中分散注意力。对他们来说,企业领导者担心年度合规性报告的结果,因为他们认为这些“非功能性”要求会将资源重定向到未来几个季度的战略路线图中未包含的事情上。此外,在开发过程中,合规性常常被作为事后的补充。但遗憾的是,经验告诉我们,如果放任不管,合规性问题最终可能会转化为技术债务。

尽管合规性过程通常被认为是繁重的,但结果可以为客户增加有意义的价值。实际上,根据法律和道德的考虑,合规性应该被看作是一种质量的度量,确保了良好的客户体验,特别是在审查包含了安全性、可靠性和响应性的情况下。您的云策略可在这里扮演重要角色 - 方式是转化企业和合规性利益相关者之间的关系,从而改善企业及其客户的结果。更具体地说,通过在产品或服务生命周期的早期包含合规性要求,您可确保您满足政策和法规目标,同时改善您的价值主张。

方法如下 –

首先,迁移到 AWS 是一种直接的节省。在我自己的云之旅中,我发现 AWS 责任共担模式可让我们获益。以前,我们必须管理物理基础设施才能确保法规遵从性。当我们不得不采购硬件以支持技术计划时,这就造成了额外的延迟。它也总是增加我们的运营负担,因为它通常意味着基础设施团队的工作更多,而不需要额外的人员。通过将我们的工作负载迁移到云,我们将维护一个安全的、合规的物理基础设施的责任转移给了 AWS,从而带来了我们永远无法提供的资源和专业知识。换句话说,我们能够提升我们的能力,同时减少我们必须自己保护的表面积。这为我们的运营团队腾出了时间来专注于其他的增值工作,例如,创建其他自动化。

AWS 责任共担模型

其次,将工作负载转移到云可鼓励更大的自动化。可以基于标准化的和经过批准的模板部署环境,然后可以进行版本控制。此概念称为“基础设施即代码”,安全性和合规性的好处是深远的。在将基础设施作为代码进行管理时,可使用脚本自动验证基础设施来确保遵循安全最佳实践。AWS 还支持在 AWS Config 中定义可自动验证的合规性规则。因此,在使用自动化时,合规性团队可在每次系统更改时验证法律和安全需求,而不是依赖于定期的系统审查。此外,合规性和安全性测试自动化可推入软件开发过程中,并有可能在部署到生产环境之前防止策略违规。最后,可以在每日的报告中捕捉到这些发现,并发送到一个将问题分配给某个特定个体的票证系统,甚至可以触发一个自动修复响应。例如,Capital One 已开发出名为云 Custodian 的规则引擎,此引擎用于在其云平台中定义策略并以编程方式强制实施策略。

第三,当自动化过程或手动审查发现问题时,可更轻松地部署补救措施。例如,在基础设施存在漏洞的情况下,基础设施模板可在代码中进行修改并将自动应用于所有未来的实现。如果应用程序中存在此问题,则可通过将修复部署到应用程序,或通过实现补偿控件 (例如,将规则添加到 AWS Web 应用程序防火墙) 来缓解风险。

随着时间的推移,您的云策略可形成一种积极的合规性文化,将合规性和安全性作为增值的以客户为中心的活动。当您的产品团队在产品待办事项列表中将合规性要求作为用户案例包含时,或当开发人员定期向其软件开发过程添加与合规性相关的测试时,您将实现此里程碑。

如果您已在 AWS 中实现合规性过程的自动化,或者您想要了解有关此主题的更多信息,请告诉我。与此同时,这里还有一些其他的资源可能会有所帮助 –

自动在 AWS 上执行管理

如何监控 AWS 账户配置更改和对 Amazon EC2 安全组的 API 调用

AWS 上的 DevSecOps 简介 — Slideshare

期待再次相会,

– Thomas

thoblood@amazon.com
@groberstiefel
http://aws.amazon.com/enterprise/

 

使用AWS Lambda和AWS Step Functions轻松构建Serverless应用

作者: Vivian Zhang(张芸)

Serverless(无服务器)应用可以说是当前的行业热点,用户无需预配置或管理服务器,只需要部署功能代码,AWS Lambda会在需要的时候执行代码并自动缩放, 从每天几个请求到每秒数千个请求,轻松地实现FaaS (Function as a Service)。无服务器应用的使用场景非常广阔,从微服务架构,到批处理、流处理、运维自动化和移动计算。

实现Serverless应用,除了AWS Lambda还需要什么?

我们来看一个典型的基于Lambda的无服务器应用。

当我们将作为计算和存储实体的Lambda函数、消息队列、DB去掉,可以看到下面这张图。

这张图上的箭头,就是上一张图里Lambda函数之间的流程,或者可以称为Lambda函数之间的“胶水”,它们起到了编排协调各个Lambda函数的作用。通常在应用中,我们会需要有这样的一些流程:

  • 我想要顺序地执行方法。
  • 我想要并行地运行这些方法。
  • 我想要基于数据选择执行方法。
  • 我想要重试某些方法。
  • 我想要try/catch/finally。
  • 我想要代码运行一定时间或者等待一段时间……

通常我们可以通过方法调用、函数链、DB和消息队列来协调这些函数,实现流程。但是对于所采用的协调机制,我们都希望它具有以下功能:

  • 可以自动伸缩;
  • 不会丢失状态;
  • 可以处理错误和超时;
  • 可以简单的搭建和运维;
  • 可以审计。

这里我们介绍一种方式,采用AWS Step Functions协调Lambda函数之间的流程。

AWS Step Functions

AWS Step Functions是一个可视工作流服务,可用来轻松协调分布式应用程序和微服务的各个组件。用户从单个组件构建应用程序,每个组件都执行一个特定的功能,也就是Task(可以采用Lambda函数实现)。Step Functions提供了一种可靠的方法来协调这些组件并逐步完成应用程序中的这些功能,并且 提供了一个图形控制台,将应用程序的组件可视化为一系列步骤,它可以自动触发并跟踪每一个步骤,并在出现错误时重试,这样应用程序就可以每一次都按照预先设定的顺序执行。Step Functions会记录每一步的状态,因此当事情出错时,用户可以快速地诊断和调试问题。

要使用Step Functions构建应用,首先我们需要在Step Functions里创建State Machine(状态机),也就是对应每一个应用的工作流程。可以采用以下8种蓝图,包括7种预定义好的状态机和1种自定义的。创建好的状态机用JSON描述。

在每一个状态机里,我们需要定义一系列的State(状态),用来完成不同的功能:

  • Task:在状态机中完成特定的功能,可以采用Lambda函数实现。
  • Choice:在各种执行分支中进行选择。
  • Fail和Success:停止一个执行,并设为Fail或者Success。
  • Pass:简单地将输入传给输出,或者注入一些数据。
  • Wait:提供一定时间的延迟,或者等待到特定的时间/数据。
  • Parallel:并行地执行分支。

可以看出,上一节中我们所需要的协调和流程在这些状态中都得到了支持。其中的Task状态是用来真正实现应用的功能,而其他状态用来处理功能之间的流程。比如说,下面是一个名为HelloWorld,执行Lambda函数的状态。

下图是一个拥有所有状态的状态机:

在Console里看到一个创建好的状态机是这样:

我们点击New Execution并且传入input数据,就可以启动该状态机的一次执行,并且可以从界面上查看执行的情况。

此外也可以通过AWS SDKs,Step Functions API和AWS CLI来启动状态机的执行并且查看进程。

采用AWS Lambda和AWS Step Functions构建Serverless应用的例子

这里介绍一个镜像识别和后端处理的例子,展示如何使用 AWS Step Functions 编排一个集成 AWS Lambda、Amazon S3、Amazon DynamoDB 和 Amazon Rekognition 的无服务器处理工作流。此工作流处理上传至 Amazon S3 的照片,并从镜像中提取元数据,如地理位置、大小/格式、时间等。然后,它使用镜像识别功能标记照片中的对象,同时还生成照片的缩略图。该例子的源代码在github上:https://github.com/awslabs/lambda-refarch-imagerecognition

整个架构的流程如下:

  1. 一张图片上传到名为PhotoRepo的S3 bucket里,位于“Incoming/”前缀下。
  2. S3 upload event产生,触发了名为ImageProcStartExecution的Lambda函数,该函数启动了AWS Step Functions中ImageProc状态机的执行,并将S3 bucket和object key作为参数传入状态机。
  3. ImageProc状态机执行以下步骤:
  4. 从S3中读取文件并抽取出图片的元数据(格式、EXIF数据、大小等等);
  5. 基于上一步骤的输出,验证上传的文件格式是否支持(png或者jpg);如果不支持,抛出NotSupportedImageType错误并且结束执行。
  6. 将抽取出的元数据保存在ImageMetadata DynamoDB中。
  7. 并行地同时启动两个进程:
  • 1)    调用Amazon Rekognition探测图像文件的对象,如果探测到,将tag保存到ImageMetadata DynamoDB中;
  • 2)    生成缩略图并且保存在名为PhotoRepo的S3 bucket的“Thumbnails/”前缀下面。

可以通过源代码中的test web app上传图片来测试该图像识别和处理工作流的结果。

可以通过源代码中的CloudFormation template来创建该后端处理应用程序。

结论

用AWS Lambda函数定义应用程序需要执行的每一个特定功能,而用AWS Step Functions定义在各个功能中流转的流程,这样采用AWS Lambda和AWS Step Functions联合使用的方式,可以轻松地构建出Serverless应用。

此外,AWS 还提供一系列完全托管的服务,可以用来构建和运行无服务器应用程序。

参考

可以在我们的网站上下载到相关例子的sample code:https://github.com/awslabs/lambda-refarch-imagerecognition

关于AWS Step Functions的 更多内容请参考网站:https://aws.amazon.com/cn/step-functions/

关于AWS Lambda的更多内容请参考网站:https://aws.amazon.com/lambda/

关于AWS服务器平台请参考网站:https://aws.amazon.com/cn/serverless/