亚马逊AWS官方博客

如何使用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.方案架构

流程如下:

  1. 开发者将一个新版本的代码工程提交到GitHub
  2. Pipeline的Source阶段,检测到指定GitHub的repo有新版本的更新,从GitHub上拉取代码工程,开启已设定好的CICD Pipeline
  3. Pipeline的Build阶段,AWS CodeBuild将新版本的代码工程打包为Docker镜像
  4. AWS CodeBuild将打包好的镜像推送到Amazon ECR
  5. Pipeline的Deploy阶段,AWS CodePipeline触发AWS CloudFormation,其定义了Amazon ECS的Task definition和service
  6. AWS CloudFormation创建新版本的Task definition关联到新版本的Docker镜像,并更新Service
  7. Amazon ECS从Amazon ECR中取到新版本的Docker镜像,并运行来替换旧Task以完成服务的更新部署

3. 搭建

搭建部分分为以下几个步骤:基础设施,与CICD Pipeline的搭建。

3.1   基础设施部分的搭建

这里需要准备好网络,负载均衡器,S3以及运行ECS所需要的宿主机集群。

3.1.1 网络搭建

创建VPC,子网,Internet Gateway,路由表。将Internet Gateway Attach到VPC上,路由表配置0.0.0.0/0指向Internet Gateway,并关联子网。

之后的EC2宿主机集群,负载均衡器等都使用在这个网络里。

3.1.2 负载均衡器

创建ALB应用负载均衡器,监听80端口

选择对应的子网

新建安全组,端口80,并新建目标组

注册目标此时不选择,ECS创建服务时会注册集群和对应端口进来。

下一步审核后创建。

3.1.3 ECS宿主机集群

在ECS的界面下,创建集群

实例配置保持默认或根据情况自行选择,示例中保持默认。

联网配置,选择创建好的VPC,子网,创建Role允许宿主机上的ECS代理调用ECS服务的API。

创建后画面下面会显示集群信息

集群一览会显示

修改ECS宿主机集群的安全组,inbound源设置为建好的应用负载均衡器的安全组ID

3.1.4 ECR镜像仓库创建

创建一个用于Build阶段上传存放软件工程Docker镜像的镜像仓库

ECS界面下,创建存储库,创建好后如下

3.1.5 S3桶创建

创建一个S3桶用来存放Deploy阶段CloudFormation使用的脚本模版,创建桶时选择和以上服务同一Region,并且打开桶的版本控制。

将CloudFormation模版压缩zip后上传到桶中。

示例中将模版文件service.yaml放在templates文件夹后压缩为templates.zip。

service.yaml如下,注意缩进

Parameters:

  Tag:

    Type: String

    Default: latest


  DesiredCount:

    Type: Number

    Default: 0


  TargetGroup:

    Type: String


  Cluster:

    Type: String


  Repository:

    Type: String


Resources:

  ECSServiceRole:

    Type: AWS::IAM::Role

    Properties:

      Path: /

      AssumeRolePolicyDocument: |

        {

            "Statement": [{

                "Effect": "Allow",

                "Principal": { "Service": [ "ecs.amazonaws.com" ]},

                "Action": [ "sts:AssumeRole" ]

            }]

        }

      Policies:

        - PolicyName: root

          PolicyDocument:

            Version: 2012-10-17

            Statement:

              - Resource: "*"

                Effect: Allow

                Action:

                  - ec2:*

                  - elasticloadbalancing:*


  Service:

    Type: AWS::ECS::Service

    Properties:

      Cluster: !Ref Cluster

      Role: !Ref ECSServiceRole

      DesiredCount: !Ref DesiredCount

      TaskDefinition: !Ref TaskDefinition

      LoadBalancers:

        - ContainerName: simple-app

          ContainerPort: 80

          TargetGroupArn: !Ref TargetGroup


  TaskDefinition:

    Type: AWS::ECS::TaskDefinition

    Properties:

      Family: !Sub ${AWS::StackName}-simple-app

      ContainerDefinitions:

        - Name: simple-app

          Image: !Sub ${AWS::AccountId}.dkr.ecr.${AWS::Region}.amazonaws.com/${Repository}:${Tag}

          EntryPoint:

            - /usr/sbin/apache2

            - -D

            - FOREGROUND

          Essential: true

          Memory: 128

          MountPoints:

            - SourceVolume: my-vol

              ContainerPath: /var/www/my-vol

          PortMappings:

            - ContainerPort: 80

          Environment:

            - Name: Tag

              Value: !Ref Tag

        - Name: busybox

          Image: busybox

          EntryPoint:

            - sh

            - -c

          Essential: false

          Memory: 128

          VolumesFrom:

            - SourceContainer: simple-app

          Command:

            - /bin/sh -c "while true; do /bin/date > /var/www/my-vol/date; sleep 1; done"

      Volumes:

        - Name: my-vol

到此基础设施部分的搭建工作结束。

3.2   Pipeline的搭建

分为Source,Build以及Deploy三阶段:

Source阶段设置GitHub上的软件工程位置,并设置Deploy阶段会使用的CloudFormation脚本模版来更新ECS服务,

Build阶段使用AWS CodeBuild来打包软件工程到Docker镜像并上传到ECR,

Deploy阶段使用Source阶段引入的CloudFormation脚本,找到对应的宿主机集群,负载均衡器,以及上传到ECR的Docker镜像等对象,更新服务。

AWS CodePipeline创建后的展示图是这样的,串起了整个CICD流程

在AWS CodePipeline界面点击创建管道Pipeline,可以看到画面左侧一个基本流程,从源,到生成Build,到部署Deploy,到角色等配置。实际应用中用户可以随实际需要,或随着CICD流程的由简入繁在创建后编辑加入新的阶段或操作。

点击下一步。

3.2.1 Source阶段配置

源提供商下拉菜单选择GitHub,

点击连接到GitHub来授权访问权,来允许AWS CodePipeline从GitHub上获取软件工程源内容,认证后选择GitHub上软件工程所在位置和分支

此次实例使用的Demo软件工程可以从以下链接Fork:

https://github.com/awslabs/ecs-demo-php-simple-app

点击下一步。

3.2.2 Build阶段配置

AWS CodePipeline在Build阶段支持包括AWS CodeBuild,Jenkins在内的引擎,此方案选用AWS 托管的CodeBuild服务

选择新建构建项目

选择AWS CodeBuild托管的镜像,支持Ubuntu系统,运行时支持包括Java,Python,Go语言,Node.js,Docker在内的众多选择,此次方案使用Docker。

构建规范这里选择使用buildspec.yml,里面预定了AWS CodeBuild在Build生命周期中要执行的动作,如login到ECR,打包Docker镜像,给Docker镜像打tag,上传Docker镜像到已login的ECR镜像仓库。

Buildspec.yml放在GitHub软件工程源代码目录中,如果复制粘贴的话注意yaml文件的缩进

version: 0.2

phases:

  pre_build:

    commands:

      - $(aws ecr get-login)

      - TAG="$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | head -c 8)"

  build:

    commands:

-    docker build --tag "替换创建好的ECR镜像仓库的URI:${TAG}" .

  post_build:

    commands:

      - docker push "替换创建好的ECR镜像仓库的URI:${TAG}"

      - printf '{"tag":"%s"}' $TAG > build.json

artifacts:

  files: build.json

选择Role

新建一个Role,这个Role允许AWS CodeBuild来调用相关的AWS服务,此方案中需要调用包括S3,ECR,CloudWatch在内的服务。

*默认创建的Role不具备对ECR的权限,需要在保存构建项目后,到IAM找到新创建的Role,编辑添加对ECR的权限否则后面Pipeline执行到Build时会报错。

保存构建项目。

点击下一步。

3.2.3 Deploy

AWS CodePipeline部署阶段支持包括AWS CloudFormation,AWS CodeDeploy,AWS Elastic Beanstalk在内的服务提供商,此方案选用AWS CloudFormation来部署ECS容器服务。

这里暂时选择无部署,等Pipeline创建好后,编辑引入Deploy的CloudFormation模版源,再进行配置。

点击下一步。

3.2.4 角色

配置AWS CodePipeline对AWS服务的调用权限,包括S3,AWS CodeBuild,AWS CloudFormation,IAM等。点击创建角色到IAM界面选择相对应的策略创建。

创建好后画面回到Pipeline,IAM创建好的Role已经显示在里面。

点击下一步。

3.2.5 审核后创建管道。

管道创建好后会自动运行,现有的从GitHub软件工程源代码抓取工程,打包Docker镜像并推送到ECR上。界面上显示如图

3.2.6 添加Deploy阶段CloudFormation需要的模版源以及配置Deploy阶段

点击编辑,点击Source阶段右上角的画笔图标

可以看到AWS CodePipeline的编辑界面在南北纵向和东西横向都可以添加

在GitHub这个Source右侧,点击添加操作,选择源,操作名称Template,选择S3,输入创建好的S3桶的地址

画面往下拉,注意在输出项目这里,输入Template。

Pipeline中各阶段的传递需要制定南北向的输入输出,即Source阶段S3源的输出Template,在Deploy阶段用输入Template来衔接。

点击更新。

点击Build阶段下面的添加阶段,画面右侧选择部署,选择AWS CloudFormation

操作模式选择创建或更新堆栈,输入创建的堆栈名称,模版这里输入Template::templates/service.yaml,也就是对应的输入是S3源桶中templates.zip里的service.yaml文件。功能选择CAPABILITY_NAMED_IAM。

同样需要创建一个Role,允许AWS CloudFormation调用包括IAM,ECS,ECR在内的AWS服务。

在IAM界面创建好后选择Role。

高级这里点开

在参数覆盖这里输入CloudFormation需要传入的参数,其中的固定参数也可以在S3的service.yaml中直接定义。

{

  "Tag" : { "Fn::GetParam" : [ "MyAppBuild", "build.json", "tag" ] },

  "DesiredCount": "2",

  "Cluster": "CICD-DEMO-CLUSTER-01",

  "TargetGroup": "arn:aws:elasticloadbalancing:us-east-2:305890642658:targetgroup/CICD-DEMO-TG-01/b7649674ee8ab97b",

  "Repository": "cicd-demo-ecr-01"

}

Tag是Build阶段传出的Docker镜像Tag使用的值,传入CloudFormation中用于建立Task Definition的Container时从ECR拉取对应版本的Docker镜像。

DesiredCount,即想要在ECS的Service中建立的Task的数量。

Cluster,即建立好的宿主机集群的名称。

TargetGroup,即建立好的宿主机集群的应用负载均衡器的ARN。

Repository,即建立好的ECR的镜像仓库名称。

 

输入项目这里输入Build阶段和S3模版源的输出。

点击添加操作。

保存管道更改。

4. 运行以及模拟版本更新

4.1   运行

访问负载均衡器的DNS地址来确认目前服务已经运行正常。

4.2   模拟版本更新

4.2.1 修改代码

在开发本地更新代码,示例中在src/index.php加入一行文字

<h1 style="color:FF7F00;">Amazon ECS Awesome!</h1> 4.2.2 提交新版本后查看AWS CodePipeline各阶段触发 

4.2.3 刷新服务来确认新修改的部分已经发布

作者简介

郭威,目前在AWS负责推广针对初创企业的最佳云计算架构实践。具有8年软件设计研发,存储,容器与云计算方案经验。曾任某跨国外企高级研发经理与售前经理,在广电视频行业,金融行业等方面有丰富的云计算经验。后加入某容器创业公司任产品研发与容器云方案工作。现致力于容器服务与Devops等方向的学习与研究。

Amazon Rekognition 推出实时面部识别、图像文本识别功能支持以及改进的面部检测功能

Amazon Rekognition 今天推出了三项新功能:用于检测和识别图像中的文本的功能、用于从数千万个面部中实时识别面部的功能以及用于从一堆照片中检测出最多 100 个面部的功能。在大多数情况下,客户通过使用 Amazon Rekognition 进行面部验证和识别可将准确度提高最多 10%。

图像文本识别

使用 Amazon Rekognition 检测图像中的对象和面部的客户一直要求我们提供用于识别图像中嵌入的文本的功能。此文本的示例包括路标、交通摄像头捕获到的牌照、新闻、电视屏幕上的字幕以及手机捕获的家庭照片上覆盖的程式化引述。从今天开始,您可以使用 Rekognition 图像文本识别功能来识别和提取图像中的文本内容。图像文本识别功能专用于处理真实图像,而不是文档图像。它支持大多数拉丁文脚本中的文本以及各种布局、字体和样式中嵌入的数字。它还支持识别不同方向的背景对象 (如横幅和海报) 上覆盖的文本。

“作为一个视觉驱动型平台,Pinterest 在很大程度上依赖于图像的速度和质量,但这些图像背后的文本同样重要,因为它提供了上下文,并使我们 2 亿个以上的活跃用户能够操作书签。利用 Amazon Rekognition 的图像文本识别功能,我们可以更好地针对存储在 Amazon S3 中的数百万个“书签”,大规模地提取图像中捕获的丰富文本信息,并且延迟很低。我们期待继续与 AWS 合作,为书签用户提供优质而快速的体验并拓展我们的 Pinterest 业务。”– Vanja Josifovski,Pinterest 首席技术官

“专业摄影师经常使用 SmugMug 分享和售卖包含文字的照片,例如马拉松比赛号码布上的数字。借助 Amazon Rekognition 的图像文本识别功能,我们能够大规模地提取号码布上的数字,并向活动摄影师提供更多功能,使他们能够快速轻松地分享和售卖这些活动的照片。”– Don MacAskill,SmugMug 联合创始人、首席执行官兼首席技客

实时面部识别

您现在可对包含数千万个面部的集合执行实时面部搜索。这可将搜索延迟缩短 1/10 到 1/5,同时可对存储的面部数量比以前多 10 到 20 倍的集合执行搜索。对于安全和公共安全应用,此更新可帮助在包含数百万个面部的集合中实时识别出相关人员,从而支持需要立即响应的使用案例。

华盛顿县警察局是俄勒冈州市民拨打 911 电话时的首要响应方。该警察局还为全县其他城市警察部门提供预防犯罪的支持。在过去的一年里,该警察局一直在使用 Amazon Rekognition,将报告嫌疑犯的识别时间从 2-3 天缩短至几分钟,并且利用他们的新系统在第一周内就逮捕了第一个嫌疑犯。

“这些改进使得现场警官能够近乎实时地接收到对搜索的响应。这使他们能够获得所需的信息并迅速采取行动。在现场节约几秒钟时间对于挽救生命非常重要。”– Chris Adzima,华盛顿县警察局的高级信息系统分析师。

人群模式面部检测

从今天开始,客户还可以在单张图像中检测多达 100 个面部 (15 个起),并对这些面部进行分析和编制索引。通过这种改进,您可以准确地捕获到人口统计信息,并分析群体照片、人群拥挤的活动和公共场所 (如机场和百货商店) 中所有面部的情绪。

“我们的大量照片都是用户以前购买或上传到我们的平台上的。我们通常需要在这些集合中搜索特定用户的孩子的照片,并且我们一直使用 Amazon Rekognition 执行此操作。由于我们有许多组包含几十个小脸的照片,因此,我们之前不得不裁切并分割原始图像以正确检测所有面部。通过使用新的人群面部检测功能,现在我们可以轻松检测出所有面部,而无需预先进行复杂的处理。– Shinji Miyazato,Sen Corporation 的工程部 SRE 主管。

提高了面部检测模型的准确度

我们还提高了面部检测算法的准确度,这使得检票柜台和员工转门处以及基于面部的手机身份验证中使用的面部验证和识别应用程序的准确度提高了 10%。

最让我们兴奋的是来自多个垂直行业的客户对大型图像分析工作负载的生产推广。我们的客户群不断壮大,其中值得一提的一些新客户包括:

Butterfleye,一家面向家庭和小型商场的安全摄像头的供应商,该公司使用 Amazon Rekognition 快速、经济高效地开发其面部和对象检测摄像头,将其开发时间从 18 个月缩短至 4 个月,并且节省了 100 万美元以上的研发费用。

Open Influence 帮助企业客户找到社交媒体影响者来推广其品牌。由于能够轻松地将 Amazon Rekognition 与其自己的数据管道集成,他们可以生成高质量的搜索结果,帮助其客户发现他们从未发现过的影响者。

Amazon Rekognition 正在帮助 Marinus Analytics 打击人口贩卖活动。美国执法机构使用其旗舰软件来调查性交易。有了 Amazon Rekognition,使用 Marinus Analytics 的调查人员可通过在几秒内搜索数百万条记录来找到受害人,并采取快速高效的行动。

了解有关 Amazon Rekognition 的更多信息。您也可以快速开始使用 Amazon Rekognition。如果您有任何疑问,请在评论中留言。


Ranju 已在 Amazon 工作将近 5 年了,他主管 Amazon Rekognition,这是一项基于深度学习的图像识别服务,可让您搜索、验证和整理数百万张图像。在加入 Amazon 之前,Ranju 就职于 Barnes and Noble,负责 Nook Cloud 工程工作。他的团队负责 Nook 移动服务和数字资源管理服务的策略、设计、开发和 SaaS 运行。

宣布设立 AWS 机器学习科研奖

我们非常激动地宣布设立 AWS 机器学习科研奖,这项全新的计划将资助那些在机器学习 (ML) 领域进行新奇科研的大学院系、院系教师、博士生和博士后研究员。我们将与卡内基梅隆大学、加州理工学院 (Caltech)、哈佛大学医学院、华盛顿大学以及加州大学伯克利分校就此计划开展合作。

AWS 云的规模和性能,再加上 Apache MXNet、Tensorflow、Caffe2、Microsoft Cognitive Toolkit (CNTK) 以及 Pytorch 等功能强大的架构,为推动机器学习领域的科研向前发展提供了前所未有的机遇。此计划的目标是,帮助科研人员加快各种机器学习应用程序和重点领域中创新算法的开发、成果发布和源代码开发。获奖者除了可以获得资助,还能获得计算资源、培训,以及来自 Amazon 科学家和工程师的指导,还有机会参加在西雅图的 AWS 总部举办的科研研讨会。

AWS 机器学习科研奖励计划特色

参与此计划的科研人员会从以下几个方面受益:

  1. 资助 – 奖金在院系和项目级别分配,以一次性不受限制的赠与形式提供给科研机构。
  2. AWS 积分 – 奖励包括 AWS 积分,可用于兑换任何服务,包括 EC2 P3 实例类型以及 Deep Learning AMI。
  3. 培训 – 我们向大学院系提供培训资源,包括如何在 AWS 上运行机器学习的教程,以及由 Amazon 科学家和工程师提供指导的实践讲座。
  4. 科研研讨会 – 获奖者将受邀参加西雅图的 AWS 总部举办的科研研讨会,与 Amazon 科学家讨论工作及互动。
  5. 功能强大的 ML 工具 – 科研人员可以利用功能强大的基础设施和工具加快科研速度。例如,EC2 P3 实例类型专门针对机器学习进行了优化,借助 NVIDIA Tesla V100 GPU 的前沿性能,可以大幅缩短模型训练时间。Deep Learning AMI 预置了许多常用的深度学习框架,每种框架都提供了易于上手的教程,演示正确的安装和配置方法,以及正确的模型精度,从而帮助科研人员快速入门。

来自院系教职科研人员的早期反馈

卡内基梅隆大学

卡内基梅隆大学计算机科学学院的院长 Andrew Moore 说:“如今,AWS 云为学生们提供了许多唾手可得却令人惊叹的强大功能,而且还提供 Apache MXNet 等成熟的框架工具,这简直太棒了。”他还说:“借助这个资助计划,下一代机器学习从业者和研究者有机会充分利用这些工具,这真是激动人心。我们已经迫不及待地要试一试了。”

加州理工学院

加州理工学院计算与数学科学学院的教授兼行政主任 Adam Wierman 说:“在加利福尼亚理工学院,我们一直投入重金为学生创造各种机会,接触和学习机器学习这样最前沿的创新。”他还说:“与 AWS 合作将帮助我们继续在此领域进行投入,相信我们会在未来引领许多突破的实现。”

哈佛医学院

哈佛医学院附属医院,马萨诸塞州眼耳科医院喉科研究院主任 Kristina Simonyan 说:“这个全新的 AWS ML 科研奖励计划让我们非常激动,它让我们有机会使用 AWS 积分在神经语言失调症领域进行新奇的 AI 科研,这会影响全球数千万人。”她还说:“目前,大部分失调症的诊断精确性并不可靠,医生之间一般很难达成共识。基于 ML 的神经语言失调症客观诊断的会取得突破性进展,可以大幅减少医生误诊率或诊断低估率造成的负担,提高患者的生活品质,并极大减少与这些失调症的治疗延误相关的整体成本。AWS 云前所未有的计算能力使得这项研究成为可能。”

华盛顿大学

华盛顿大学 Paul G. Allen 计算机科学与工程学院,Amazon 机器学习教授 Emily Fox 说:“在华盛顿大学从事此前沿科研领域的研究让人无比激动。在我们研究人脑功能性网络的过程中,深度学习是为我们观察的非线性动态进行建模的重要工具。”她还说:“对于这个全新的 AWS ML 科研奖励计划,我们深感兴奋,它让华盛顿大学能利用 AWS 云与 Apache MXNet 的结合显著提高机器学习方面的技术水平,并加速我们对于人脑的了解。”

加州大学伯克利分校

加州大学伯克利分校电气工程和计算机科学系的副教授 Ben Recht 说:“使用 AWS 进行机器学习,最让我们心仪的是,AWS 向我们提供的计算能力会定期增强。”他还说:“每次 AWS 发布全新的服务、功能或实例类型,研究生们都会立即想出办法,利用它们简化科研项目。能够在具有全新 GPU 架构的超快 P3 实例上训练我们的模型,这让我们非常兴奋,因为这样我们就可以更快地迭代并训练更为复杂的模型。我们希望可以早日与 AWS ML 科研奖励计划进行合作。”

了解更多

有关 AWS ML 科研奖的更多信息,包括如何申请的信息,请参阅 https://aws.amazon.com/aws-ml-research-awards


作者简介

Sebouh Der Kiureghian 是 AWS Deep Learning 高级产品经理,他专注于通过云服务推动机器学习方面的学术研究,并提供相关补助,以及促成与 AWS 科学家的合作。他在闲暇时喜欢玩滑雪板。

使用 Amazon Polly 针对 AWS 账户安全事件进行电话呼叫报警

AWS 账户的安全性是重中之重。随时了解您 AWS 账户中与安全相关的所有最新事件非常重要。您可以通过多种方式接收警报,例如通过电子邮件或短信,不过在本博客帖子中,我将向您演示如何使用 Amazon AI 服务 (例如 Amazon Polly) 以及任何基于云的通信平台 (例如 Twilio),在手机上接听语音警报。

Amazon Polly 是一项将文本转换为逼真语音的服务,让您可以构建支持聊天功能的应用程序,从而打造全新类别的具有语音功能的产品。它使用深度学习技术来合成类似于人声的语音。该服务提供了不同语言的各种语音。

对于外出的企业 IT 安全人员,有关 AWS 账户安全事件的电话呼叫警报可以带来极大的帮助。这些安全事件可以根据事件的严重性和优先级进行自定义。严重性和优先级较高的安全事件可以发送到通过电话呼叫报警的系统中。

对于电话呼叫报警,我会使用 Twilio,它提供了 API 功能,例如语音、视频和消息传送。当给定 AWS 账户中发生安全事件时,使用 Twilio 的平台能够以编程方式发布 API 调用,用于进行电话呼叫。Amazon Polly 将此文本警报转换为在电话呼叫上播放的语音消息。

解决方案概述

该解决方案包括两个系统,如以下架构图所示:

  • 事件检测和通知系统
  • 文本到语音转换系统

事件检测和通知系统与文本到语音转换系统彼此分离,这是因为后一个系统对用户定义的任何其他事件检测通用。在此博客帖子中,作为解决方案示例,我重点介绍文本到语音转换系统,并使用来自我之前博客帖子中介绍的事件检测和通知系统

(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 的完善体验和广度。只要您避开混合架构的三大误区,您的卓越中心就能随时帮您的组织切换到混合架构。一旦混合架构部署到位,增强和迁移现有应用程序就会容易很多了。混合架构为分解一体式应用程序并实现解耦的服务提供了一个绝佳的机会,这是大多数公司应对大型机所常采用的办法。

7. 实施云优先策略

获得一定的经验后,您的组织会触及临界点。在有上述六个“活塞”推动业务飞轮不停旋转的情况下,您的 IT 在云中的运营可能比本地还要高效。我发现在这一阶段,有许多公司都采取了云优先的策略,他们将 IT 项目的证明责任从“为什么要使用云?”转变成了“为什么不使用云?”这向组织发送了一个重要信息,为您最大限度地利用云奠定了良好的基础,并使您能够将更多的资源用于核心业务。

在接下来的几个月里,我会跟大家深入探讨上述最佳实践。我很乐意听到您的想法。

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

 

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

现代培训师的任务不是砍倒丛林,而是浇灌沙漠。 — C.S. Lewis

我很荣幸能够知晓数百位来自全球最大公司的高管们是如何使用现代技术和云实现企业转型的。转型并非易事 — 企业内部少数值得做的事 — 并且,在我看来,变化最大的阻力通常来自企业内部。人们 (天然) 对未知事物心存畏惧。任 Dow Jones 的 CIO 和 AWS 的 Enterprise Strategy 负责人时,我都发现,帮助团队成员克服对未知事物的恐惧最好办法    是对他们进行培训。

这也是我认为 Maureen Lonergan — 我个人的朋友,同时也是 AWS 的培训和认证负责人 — 肩负着世界上最重要的工作之一的原因。Maureen 和她的团队致力于对尽量多的人进行全面的云培训和教育。

今天,我十分高兴主持介绍 Maureen 的一篇文章,概述如何进行团队培训。
很多大型和小型企业正在考虑过渡到云技术,但是不知道自己的团队如何才能以最好的方式在业务中应用这项技术。作为 AWS 培训和认证部门的主管,我认为要最大程度利用云投资,最好的办法是投资于培训,帮助组织内的员工掌握云技能。这样可以利用现有员工的技能,更快实现业务目标,并对组织能够最大程度利用云技术充满信心。

这篇文章将探讨为什么培训是重要、有价值的云之旅步伐,以及具体来说,AWS 可以如何帮助您过渡到云并让您的员工变成真正的专家。

您已经有了所需的人

去年,Stephen Orban 撰写文章讨论过现有员工云技能培训的重要性。他说,“推动云迁移所需的所有人才都已经到位,您只需要激发他们即可。”

培训可以帮助您的员工利用他们已有的基本 IT 技能和系统知识转变为云角色。因为不必雇用新员工来担任云角色,所以培训现有的员工可以节省时间和资金。

从根本上说,无论采用什么云平台,越快评估现有角色和所需要的人才,然后投资于培训来培养员工,您的工作就越轻松。

培训可帮助您更快实现业务目标

员工经过培训,可以更好地使用云,从而让您更高效地完成业务目标。云培训可以让员工获得更快速地进行创新所需要的技能。

对于正在进行复杂迁移的组织来说,培训尤其重要。下面是培训可帮助加速角色转换的几个主要方面:

  • 培训将帮助员工了解如何使用云。例如,他们可以学习使用 AWS 有效管理、操作和部署应用程序。
  • 通过对团队进行知识培训,从而缓解团队焦虑感,这种方式可以增进内部认同。
  • 培训让员工有共识,他们可以更高效地合作。
  • 无论是在 AWS 还是其他平台方面进行了培训的员工,都能够更快地找到所需要的服务和解决方案,这意味着可以快速为客户开发更好的解决方案。

通过认证来验证掌握了知识

鼓励员工通过认证,让团队中的每个人都为所拥有的技能感到自信。AWS 认证核心团队有助于领导组织完成转变和实施最佳实践。认证可帮助您确定组织中哪些人可以获得晋升。

如果组织需要更多有云技术经验的人才,可以考察通过认证的人,这样您能够充满信心地任用这些人才。

AWS 培训和认证导览

AWS 培训和认证可帮助培养云技能,让您更轻松地过渡到 AWS 云,从而更快地最大程度利用投资。

AWS 培训有几种方式:

宣传日:

在培训开始之前或培训期间,您可以要求 AWS 前往您的公司,举办“宣传日”活动。如果您正苦于组织中其他人不认同云技术,或者只是需要有人帮忙更清晰地展示云技术优势,这会是特别有用的资源。“宣传日”各环节介绍诸多内容,如 AWS 常规优势,如何成为敏捷组织,以及云帮助创新的诸多方式。您可以联系 AWS 培训团队安排举办“宣传日”活动。

基于角色的培训:

AWS 为架构开发运营角色的员工提供基于角色的学习方法。每种方法都包括与员工使用 AWS 的方式最为相关的培训、实验和认证。每种方法都有助理级和专业级认证考试,以便员工检验其新技能的掌握情况。

自定义培训:

您可以与 AWS 合作制定自定义培训策略,包括安排哪些人参加哪些培训的分步指导和时间表。这样,可按照清晰的路线图培训员工。下面是一个示例,介绍组织如何分阶段进行培训:

第 1 阶段:对广大员工进行云宣传和基础知识培训

第 2 阶段:对技术员工和关键业务部门员工进行基于角色的基础培训

第 3 阶段:对具有相关经验的优秀技术员工进行助理级认证

第 4 阶段:根据需要对优秀技术员工进行高级专业的培训

第 5 阶段:对具有相关经验的优秀技术员工进行专业级认证

在线培训:

员工掌握基础知识后,可以通过免费或低成本的实验进行 AWS 实践练习。他们还可以了解有关大数据和安全性等主题的免费在线课程产品。通过这种简单、经济高效的方法,员工可以掌握组织云所需的技能。

使用方便:

无论您倾向于实际课堂培训还是在线培训,自学课程还是导师指导课程,AWS 都有适合您组织的选择。培训在全球以 8 种语言通过 AWS 和 APN 合作伙伴培训网络提供。这意味着培训可在您所在的位置以您当地的语言和自定义选项提供。

不止于知识

AWS 培训和认证可以帮助员工为迁移到云做好准备。归根结底,培训不只是增长知识和了解新事物。而在于帮助您的企业以更少的投入更快实现目标。通过适当的培训,员工将掌握云方面的知识,可帮助您利用云实现更多创新,更快地将产品投放市场。AWS 与授权 AWS 培训合作伙伴网络合作,在全球提供培训服务。您可以立即联系 AWS 培训和认证,开始制定您的培训策略。

 

Amazon ML 解决方案实验室简介

我们非常激动地宣布推出 Amazon ML 解决方案实验室,这是一项新计划,可将 Amazon 的机器学习专家与 AWS 客户联系在一起,帮助识别客户业务中机器学习的创新用途,并引导客户开发支持机器学习的新型功能、产品和流程。

Amazon 在机器学习方面的投入超过 20 年,在配送和物流、个性化和建议、预测、防欺诈以及供应链优化等领域均有创新。Amazon ML 解决方案实验室可让您与专家沟通联系,他们构建了许多以 Amazon Machine Learning 为强大后盾的产品和服务。Amazon ML 解决方案实验室合作旨在让您完成实施机器学习的整个过程;我们会举办各种教学研讨会和新手训练营、提供咨询专业服务并且在实践操作中帮助您使用自己的数据构建自定义模型。

在 Amazon ML 解决方案实验室的帮助下实施机器学习

Amazon ML 解决方案实验室在以下三个方面提供协助:

  1. 头脑风暴和目标公式化 – Amazon 的机器学习专家将与您合作,同时从您的潜在机会中反思,帮助您确定机器学习在哪些方面可发挥作用,解决您所面临的各种挑战,并指明一条清晰明确的途径帮助您取得成功。
  2. 自定义建模 – Amazon 的机器学习科学家将使用您自己的数据来构建可部署到生产环境中的自定义模型。这些科学家在解决诸如配送和物流、个性化和建议、防欺诈、异常检测、交易风险管理、安全性、预测、容量规划、文本和移动分析以及供应链优化等领域都有着丰富的经验。
  3. 培训 – Amazon ML 解决方案实验室不仅可以帮助您快速从概念转向原型,还可以通过这个过程向您传授知识和经验,让您接受专业培训。这样,您的开发人员能够在整个组织内传授知识、讲解新的经验体会并传播对机器学习的热情,建立良好的机器学习实践和打造一流的卓越中心。

各种各样的合作模式

Amazon ML 解决方案实验室将与您一起,根据您的需求定制合作模式,包括邀请您使用西雅图 AWS 总部的专用设施,或者将机器学习模型开发人员派驻到现场与您一起工作。另外,根据解决方案的性质,合作时间长度可以从几周到几个月不等。如果您已经准备好用于机器学习的数据,AWS 建议您参加 Amazon ML Solutions Lab Express 计划。这是一个为期四周的计划,时间安排比较密集,从在 Amazon 举办的为期一周的新手训练营开始,之后是三周与 Amazon Machine Learning 专家一起紧张地构建问题解决和机器学习模型。

Amazon ML 解决方案实验室将为您提供切实可行的模型。此外,您可以预期通过研讨会、辅导和新手训练营等形式接受各种各样的培训和教育,使得开发人员可以将他们在这个过程中学到的知识应用到组织的其他地方。

准备好开始使用?

请联系您的 AWS 客户经理,了解如何开始。如果您还没有 AWS 客户经理,请联系销售人员。有关计划细节的更多信息,请访问 https://aws.amazon.com/ml-solutions-lab


作者简介

Vinayak Agarwal 是 AWS 深度学习高级产品经理。他满怀热忱地工作,目的是让全球 AWS 客户能够更轻松地学习和使用深度学习,工作重点是通过 Amazon ML 解决方案实验室计划为客户提供支持。在业余时间,他喜欢参加志愿项目、打网球、阅读哲学和社会心理学书籍。

《制作无人驾驶车辆》第 4 部分:通过 Apache MXNet,为您的自动驾驶车辆应用行为克隆技术

在我们无人驾驶车辆系列的第一篇博客文章中,您制作了一辆 Donkey 车并将导航服务器部署到了 Amazon EC2 实例上。在第二篇博客文章中,您学习了如何驾驶 Donkey 车辆,Donkey 车辆也学习了如何自行驾驶。在第三篇博客文章中,您学习了如何通过 AWS IoT 将 Donkey 车辆的遥测数据流式传输到 AWS 的过程。

在这篇博文中,我们将深入探讨实现车辆自行驾驶的深度学习框架,并介绍采用卷积神经网络 (CNN) 的行为克隆概念。CNN 是一项面向计算机视觉任务的先进建模技术,可帮助解答车辆可能会遇到的问题,例如,“我前面是轨道还是圆锥形路标?”


1) 在 AWS 上制造一辆无人驾驶车辆,并参加 re:Invent 机器人车拉力赛
2) 《制作无人驾驶车辆》第 2 部分:驾驶您的车辆
3) 《制作无人驾驶车辆》第 3 部分:连接您的无人驾驶车辆
4) 《制作无人驾驶车辆》第 4 部分:通过 Apache MXNet,为您的自动驾驶车辆应用行为克隆技术


P2 上的 Donkey 训练数据设置

我们已在博客文章 2 中详细演练了如何运行训练。但是,让我们在这里回顾一下关键步骤和命令:

  1. 将数据从 Pi 复制到 Amazon EC2 实例:
    $ rsync -rva --progress -e "ssh -i /path/to/key/DonkeyKP-us-east-1.pem" /home/pi/d2// ec2-user@ec2-your-ip.compute-1.amazonaws.com:~/d2/data/
  2. 启动训练过程:
    $ python ~/d2/manage.py train --model /path/to/myfirstpilot
  3. 将训练过的模型复制回 Pi:
    $: rsync -rva --progress -e "ssh -i /path/to/key/DonkeyKP-us-east-1.pem" ec2-user@ec2-your-ip.compute-1.amazonaws.com:~/d2/models/ /home/pi/d2/models/

模型幕后

在本部分中,我将讨论模型学习的内容以及它如何能够自行驾驶。目前制作的 Donkey 车辆使用 Keras 作为其默认的深度学习框架。AWS 正在添加面向 Apache MXNet、Gluon 和 PyTorch 等其他框架的支持。在这篇博文中,我们将使用 Apache MXNet 来深入分析实现自动驾驶的模型的内部工作原理。如前所述,我们使用名为行为克隆的技术来实现车辆的自动驾驶。基本上,此模型基于训练数据学习驾驶,而训练数据则是通过环绕轨道行驶收集而来的。保证大部分数据都很“干净”非常重要,也就是说,假定我们的目标始终未偏离轨道,那么训练数据中车辆脱离轨道或转弯错误的图像就不会太多。就像驾驶员控制方向盘,保证车辆在车道上行驶一样,我们将制作一个会根据当前场景确定转向角的模型,引导我们将问题模型化为“根据输入图像,我们需要采用哪种转向角?”。实际驾驶情况更复杂,因为涉及到了加速和变速齿轮等更多组件。为了简单起见,我们在开始的时候先把油门固定到某个百分比,然后再让车辆行驶。在实践中我们发现,对于备用训练数据,25-30% 的油门已被证明是 Donkey 车辆的最佳行驶速度。

为实现这一目标,我们将使用名为卷积神经网络 (CNN) 的深度学习技术。CNN 已成为面向计算机视觉问题的实际网络。CNN 由多个卷积层组成,其中每个节点都与一个名为感受野的小窗口关联。这可以让我们提取图像中的局部特征。像“图像中是否有轨道或人?”这样的问题就可以通过使用先前计算出来的这些局部特征进行计算。您可以在此处找到有关 CNN 工作原理的详细说明。

数据集

在这篇博文中我将使用一个数据集,这个数据集是车辆环绕轨道行驶大约 15 分钟收集来的。如前所述,我们会先过滤一下,将车辆明显不在轨道上的图像丢弃。Donkey 软件已经提供了一个基于浏览器的 UI,用来删除“坏”的图像 (命令: donkey tubclean <包含 Tub 的文件夹>)。与此类似的、车辆在轨道上行驶的图像数据集可在此处获取

(more…)

在 Amazon EMR 上运行带有多种 GPU 实例类型的深度学习框架

今天,AWS 很高兴地宣布 Amazon EMR 将支持 Apache MXNet 和新一代 GPU 实例类型,让您可以在进行机器学习工作流程和大数据处理的同时运行分布式深度神经网络。此外,您还可以在采用 GPU 硬件的 EMR 群集上安装并运行自定义深度学习库。通过使用深度学习框架,您可以使用新工具包来处理多种使用案例,包括无人驾驶车辆、人工智能、个性化医疗和计算机视觉。

Amazon EMR 提供一个 Hadoop 托管框架,可以让您轻松、快速且经济高效地使用 Apache Spark、Apache Hive、PrestoApache HBase 和 Apache Flink 等框架处理 Amazon S3 中的大量数据。您可以低成本安全、高效地处理大量大数据使用案例,包括日志分析、Web 索引、数据转换 (ETL)、财务分析、科学模拟、实时处理和生物信息。

多年来,EMR 一直致力于帮助您运行可扩展的机器学习工作负载。2013 年,我们增加了对 Apache Mahout 的支持,以帮助您使用 Apache Hadoop MapReduce 来运行分布式机器学习工作负载。2014 年,客户开始利用 Apache Spark (我们在 2015 年增加了官方支持),以便利用 Spark ML 中提供的各种开源机器学习库来轻松构建可扩展的机器学习管道。

在过去 2 年内,我们还增加了对 Apache Zeppelin 笔记本、易于安装的 Jupyter 笔记本以及适用于交互式 Spark 工作负载的 Apache Livy 的支持,从而让数据科学家可以轻松快速地开发、培训以及将机器学习模型投入生产。EMR 的按秒计费方式以及使用 Amazon EC2 竞价型实例可实现的高达 80% 的成本节约,使您可以低成本轻松运行大规模的机器学习管道。 (more…)

re:Invent 大会期间的 AWS 云幕后故事

当您漫步在 AWS re:Invent 大会现场时,不妨花点时间来思考一下,对于需要整合在一起的所有要素,您有哪些期望…

从会议地点开始,我的同事们选择最合适的场馆,精心设计各种研讨会,挑选发言嘉宾,制定日程表,选择色彩方案,准备电子或印刷的所有指示牌等等,我们所有这些努力的目标是,希望为您和成千上万的其他 AWS 客户创造一个优良的学习环境。

不过,通常情况下,您看到的只是表面的那一部分而已。在幕后,我们将人员、流程、计划和系统有机地组织起来,将所有这些基础设施安排到位,让各个部分都运作得如此顺利,以至于您通常不会注意到这些细节。

今天我想说的是,re:Invent 大会基础设施的关键部分实际上位于地下。除了为您的手机、平板电脑、相机、笔记本电脑和其他设备提供一流的 Wi-Fi 连接之外,我们还需要确保在从现场直播主题演讲到 WorkSpaces 支持的动手实验室等各项活动中,彼此之间的连接以及互联网连接正常工作。要确保在沿着拉斯维加斯大道上各个酒店中举办的各项活动正常开展,可靠、低延迟的连接至关重要!

感谢 CenturyLink/Level3 的大力支持
多年以来,我们一直在与 Level3 的优秀员工合作,共同实现这一目标。他们最近成为了 CenturyLink 的一份子;CenturyLink 现在是 re:Invent 大会的官方网络赞助商,负责提供将各个 re:Invent 会场连接在一起的光纤网络和线路等服务。

为了让大会顺利举办,他们在大道下面埋设了两英里的暗光纤,路由到两个独立的 AWS 区域中的多个可用区。金沙博览中心配备了 10 Gb 冗余连接,其他场馆 (Aria、MGM、Mirage 和 Wynn) 分别预配置了 2 到 10 Gb 连接,这意味着大道半数以上的区域都支持 Direct Connect。根据某处设施 IT 经理的说法,这可能是拉斯维加斯有史以来配置的最大临时混合网络。

在 Wi-Fi 方面,showNets 接通到同一个网络;您的设备可以直接与 Direct Connect 接入点通信 (这太酷了!)。

下图概要说明了这些功能如何结合在一起:

CenturyLink 团队将在 re:Invent 大会现场值班,并通过推特发布整周内的实时网络统计数据。

我希望我们在幕后和街道下的这些工作,能够让您愉悦地享受本次盛会!

Jeff