亚马逊AWS官方博客

AWS 纽约峰会 – 公告汇总

多么充实的一周!TaraRandallAna 和我一直忙于为我们在 AWS 纽约峰会上发布的公告撰写博客文章。下面提供的汇总信息可帮助您初步了解这一活动:

Amazon Macie – 这项新服务可以帮助您发现、分类和保护海量的内容。以机器学习和使用自然语言处理 (NLP) 为强大后盾,Macie 可以识别模式并提醒您各种可疑行为,并帮助您完成治理、合规和审计工作。您可以阅读 Tara 的博文,了解如何使用 Macie;您可以选择感兴趣的存储桶,自定义分类设置,并在 Macie 控制面板中查看结果。

AWS GlueRandall 的博文 (带有精美动画 GIF) 向您介绍了这种新的提取、转换和加载 (ETL) 服务。Glue 采用完全托管的无服务器架构;正如您在博文中看到的那样,Glue 可以爬取您的数据,推断模式,并使用 Python 生成 ETL 脚本。您利用各种各样的转换来定义将数据从一个位置移动到另一个位置的作业,每个作业都以代码形式表示,并以人类可读的形式存储。Glue 使用开发终端节点和笔记本,为您提供用于所构建脚本的测试环境。我们还宣布,Amazon Athena 现在已与 Amazon Glue 集成,并且 Apache Spark 和 Hive 在 Amazon EMR 上可用

AWS Migration Hub – 这项新服务可帮助您将应用程序产品组合迁移到 AWS。我的博文简要介绍了主要步骤,并说明了 Migration Hub 如何加速、跟踪和简化您的迁移工作。您可以从发现步骤开始,也可以跳过这些步骤并直接开始迁移。Migration Hub 可与我们的迁移合作伙伴提供的各种工具集成,建立在 Server Migration ServiceDatabase Migration Service 的基础之上。

CloudHSM 最新动态 – 我们对 AWS CloudHSM 进行了重大升级,使更多的用户可以享受到基于硬件的密钥管理的优势。该服务按即用即付的方式提供并完全托管。它是开放的,可与各种标准兼容,支持多种 API、编程语言和加密扩展。CloudHSM 是 AWS 的有机组成部分,可以通过 AWS 管理控制台AWS 命令行接口 (CLI) 和 API 调用来访问。请阅读我的博文了解更多信息,并了解如何设置 CloudHSM 集群。

保护 S3 存储桶的托管规则 – 我们向 AWS Config 添加了两个新规则,可帮助您保护您的 S3 存储桶。使用 s3-bucket-public-write-prohibited 规则可以确定具有公共写入访问权限的存储桶;而使用 s3-bucket-public-read-prohibited 规则可以确定具有全局读取访问权限的存储桶。正如我的博文中介绍的那样,您可以针对配置更改或按计划运行这些规则。这些规则使用了一些前沿的约束求解技术,而这些技术是我们对 AWS 使用自动化形式推理的更庞大计划的一部分。

面向所有客户的 CloudTrail – Tara 的博文介绍了 AWS CloudTrail 现在已对所有 AWS 客户可用,并且默认情况下是启用的。此外,Tara 回顾了 CloudTrail 的主要优点,并向您说明了如何查看事件历史以及深入了解单个事件。她还说明了如何创建另一个跟踪,以便与 CloudWatch 事件配合使用。

适用于 EFS 的静态数据加密 – 当您创建新文件系统时,现在可以选择一个用于加密文件系统上的文件内容的密钥。加密操作使用行业标准的 AES-256 算法进行。我的博文向您说明了如何选择密钥以及验证密钥是否正在使用中。

Jeff

AWS 合作伙伴系列网络研讨会 – 2017 年 8 月

我们乐于向客户提供有帮助的信息;在这里我非常高兴地向大家介绍另一个非常棒的系列。AWS 合作伙伴系列网络研讨会是一系列直播和录播演示视频,讲述各种各样的主题,涵盖不同的技术水平以及各种规模。与我们的 AWS 在线技术讨论稍有不同,每个 AWS 合作伙伴系列网络研讨会主持人包括一位 AWS 解决方案架构师,和一位已经成功帮助客户评估和实施了 AWS 的工具、方法和技术的 AWS 能力合作伙伴

观看本月的网络研讨会,让我们知道您认为哪些内容对您最有用!所有时间安排都采用太平洋时间 (PDT)。

安全网络研讨会

Sophos
更进一步了解:ATLO 软件通过 AWS Link 上的 SophosUTM 来保护劳教所的在线培训解决方案。
2017 年 8 月 17 日 | 上午 10:00 (太平洋时间)

F5
AWS 上的 F5:MailControl 如何提高应用程序的可见性和安全性
2017 年 8 月 23 日 | 上午 10:00 (太平洋时间)

大数据网络研讨会

Tableau、Matillion、47Lining、NorthBay
通过在 AWS 上实现数据仓库的现代化,获得洞察力并降低成本
2017 年 8 月 22 日 | 上午 10:00 (太平洋时间)

存储网络研讨会

StorReduce
Globe Telecom 如何通过 StorReduce 将主备份存储到 AWS 云
2017 年 8 月 29 日 | 上午 8:00 (太平洋时间)

Commvault
加快发展的步伐:莫那什大学如何使用 Commvault 自动将 3500 个虚拟机的数据转移到 AWS
2017 年 8 月 29 日 | 下午 1:00 (太平洋时间)

Dell EMC
加快发展的步伐:在 AWS 上保护您的工作负载、扩大规模和提高性能
2017 年 8 月 30 日 | 上午 11:00 (太平洋时间)

Druva
Hatco 如何在 AWS 上使用 Druva 保护 Ransomware
2017 年 9 月 13 日 | 上午 10:00 (太平洋时间)

AWS技术峰会纽约站

和全球每一站AWS技术峰会一样,纽约站也是大咖云集、高朋满座,每一个参会者都怀着执掌未来的梦想和对云计算技术的信仰,前来学习、分享与碰撞创新的火花!

给力新服务

今年AWS 技术峰会2017 纽约站的主题演讲环节,由AWS云架构战略副总裁Adrian Cockcroft主持。

Adrian Cockcroft在云计算界可谓声名显赫。此前他曾在Battery Ventures、Netflix和eBay等公司任职,曾经负责Netflix云架构的搭建,是公认的云架构领域的大牛!

在主题演讲中,Adrian Cockcroft与AWS人工智能负责人Matt Wood博士重点介绍了多项令人激动人心的AWS新服务与新特性。这其中包括:

Amazon Macie

Amazon Macie使用机器学习和NLP技术帮助客户自动发现、分类和保护敏感信息,来防止丢失AWS中的数据。Amazon Macie能够自动识别敏感数据,如个人身份信息(PII)或知识产权等,并为客户提供仪表板和警报,以便了解这些数据的访问或移动。完全托管的服务能够持续监控异常的数据访问活动。当Amazon Macie检测到未经授权的访问风险或无意的数据泄漏时,它会生成详细的警报。

现在,Amazon Macie可以保护存储在Amazon Simple Storage Service(Amazon S3)中的数据,并将在今年晚些时候支持其他AWS数据存储。客户可以从AWS管理控制台启用Amazon Macie,并仅需在分析Amazon S3中内容和分析的AWS CloudTrail事件时,按照GB来付费,无需前期成本或软件购买。

AWS Glue正式上线

AWS Glue是一个完全托管的,提取、转换和加载(ETL)服务,使客户能够轻松准备和加载他们的数据到Amazon Simple Storage Service(Amazon S3)、Amazon Redshift、Amazon Relational Database Service(Amazon RDS)中,以及加载数据到运行在Amazon EC2上的数据库,来进行查询和分析。

只要在AWS管理控制台上点击几下鼠标,客户就能创建和运行ETL作业。接下来,客户只需将AWS Glue指向存储在AWS上的数据,AWS Glue就能发现关联的元数据(例如表定义)并对其进行分类,生成用于数据转换的ETL脚本,并将转换的数据加载到目标数据存储中,为需要的基础设施完成工作。使用AWS Glue,数据可以在几分钟内进行分析,并且由于AWS Glue是无服务器的,客户只需在执行数据准备和加载作业时,支付其消耗的计算资源。

AWS Migration Hub

AWS Migration Hub提供了一个单一位置来跟踪跨越多个AWS和合作伙伴解决方案的迁移。使用AWS Migration Hub允许您选择最适合您需求的、来自AWS和合作伙伴迁移工具,同时让您可以了解整个应用程序组合中的迁移状态。这样您可以快速获得所有迁移的进度更新,轻松识别和排除任何问题,并减少迁移项目花费的总体时间和精力。

如果迁移工具在该地区可用,AWS Migration Hub可帮助您监控所有AWS地区迁移的状态。已连接的迁移工具会将状态发送到美国西部(俄勒冈州)的Migration Hub来聚合并显示。

AWS Migration Hub可免费向AWS客户提供。您只需支付您使用的迁移工具的成本,以及在AWS上消耗的任何资源。要开始AWS Migration Hub,只需登录到AWS Migration Hub控制台并按照指导的工作流程进行操作即可。

一段来自AWS首席布道师Jeff Barr的视频,为您简单介绍一下这项给力的新服务:

http://v.qq.com/x/page/k0538g321u6.html

全新的AWS CloudHSM

全新的AWS CloudHSM为您提供了针对敏感和受监管工作负载的、高性价比的硬件密钥管理。您现在可以使用AWS上的FIPS 140-2 Level 3验证硬件安全模块(HSM)生成和使用加密密钥。AWS CloudHSM与您的应用程序集成使用行业标准的API,如PKCS#11、Java加密扩展(JCE)和Microsoft CryptoNG(CNG)。AWS CloudHSM也能够让您将所有密钥导出到大多数其他商业上可用的HSM。

AWS CloudHSM是一种全托管的服务,可以为您自动执行耗时的管理任务,例如硬件配置、软件修补、高可用性和备份。使用AWS CloudHSM,您可以根据需要添加和删除HSM容量,而无需前期成本。

全新的AWS CloudHSM可在美国东部(弗吉尼亚州)、美国东部(俄亥俄州)、美国西部(俄勒冈州)和欧盟(爱尔兰)地区使用。定价是基于您每小时运行的HSM数量。

AWS Config

支持新的管理规则

AWS Config现在支持两种新的管理规则来检测过分宽松的Amazon S3 bucket策略。以前,您必须手动检查与每个S3 bucket相关的策略,以确保正确的访问配置到位。现在,您可以使用配置规则来自动检查您的S3 bucket,用于不受限制的公共读取或写入访问。通过这些新规则,您可以在bucket权限更改时检查附加到S3 bucket的访问控制列表(ACL)和策略,标记不符合SSL规定的资源,并接收Amazon Simple Notification Service(Amazon SNS)通知。

AWS CloudTrail事件历史

现向所有用户提供

AWS CloudTrail事件历史现在可供所有客户使用。CloudTrail事件历史记录(以前称为API活动历史记录)可让您查看、搜索和下载最近的AWS帐户活动。这可以让您了解通过AWS管理控制台、SDK和CLI执行的帐户操作,以实现对AWS账户的治理、合规性和运营风险审计。

以前,您只能通过为您的帐户设置CloudTrail来查看您的帐户活动。现在,您可以通过AWS CloudTrail控制台和AWS CLI立即查看过去7天的CloudTrail事件历史记录,而无需设置CloudTrail。如果要归档、分析和响应AWS资源中的更改,您仍然可以设置CloudTrail将您的CloudTrail事件提供给Amazon S3、Amazon CloudWatch Logs和Amazon CloudWatch Events。

AWS CloudTrail事件历史已向AWS公共区域、AWS GovCloud(US)和由光环新网运营的AWS中国 (北京) 区域提供。

Amazon EFS

现在支持静止数据加密功能

Amazon Elastic File System (EFS) 现在允许您使用通过AWS Key Management Service (KMS)管理的密钥并对您的静止数据进行加密。由于加密和解密是无缝处理的,因此您访问您的数据时无需修改应用程序。

当您创建新文件系统时,您可以选择通过AWS管理控制台或API启用加密。若要加密您的数据,您可以使用自动创建在帐户中的默认EFS密钥或您生成的密钥。所有Amazon EFS地区均可免费使用静止数据加密。

给力新客户

在AWS 技术峰会2017 纽约站上,AWS的重磅新客户们也都登场亮相!

全球领先的流媒体服务提供商Hulu公司的软件开发副总裁Rafael Soltanovich在主题演讲中分享了Hulu使用AWS的经验,并正式宣布:Hulu正式选择AWS作为云服务提供商!

“这是Hulu第一次在云端进行如此大规模的部署,所有这一切都是全新!”

——Rafael Soltanovich

Hulu软件开发副总裁

美国征信业巨头FICO公司的CIO Claus Moldt也登场宣布FICO选择迁移到AWS上,并且分享了FICO的AWS最佳实践。

FICO致力于利用大数据和算法预测消费者行为,通过提供FICO评分和决策管理系统的方式,为企业提供决策依据。FICO已经将许多核心应用如myFICO.com和它的旗舰级分析平台迁移到了AWS云平台,并且计划将更多的应用在未来三年内迁移到AWS上!

随着Hulu宣布选择成为AWS客户,AWS已经成为三大主要流媒体平台:Amazon Prime Video、Netflix和Hulu的云计算服务提供商。云计算的强大能力和巨大优势,已经愈加深入人心。

伴随着此次AWS 技术峰会2017 纽约站上大量AWS新服务与新特性的发布,以及AWS对于客户需求始终如一的关注,相信越来越多的行业与用户会选择AWS,开启自己的云计算之旅。

 

动态DevOps环境中的IT治理

译者:殷实,AWS专业服务咨询顾问 |原文链接

动态DevOps环境中的IT治理

治理涵盖安全和生产力运营的协调,其目的是确保公司实现业务目标。 正在迁移到云端的客户可能处于实现治理的各个阶段。 每个阶段都有自己的挑战。 在这篇博文中(系列中的第一篇文章),我将讨论四步走的方法来自动化AWS服务的治理。

治理和DevOps环境

具有DevOps和敏捷思维的开发人员负责构建和运营服务。他们经常依靠中央安全小组制定和实施安全策略,寻求安全审查和批准,或实施最佳实践。
这些安全策略和规则并没有得到安全小组的严格执行。它们被视为开发人员为获得更多的使用AWS的灵活性而遵循的准则。然而,由于时间限制或重视度不足,开发人员可能并不总是遵循最佳实践和标准。如果这些最佳实践和规则得到严格执行,安全小组就可能成为瓶颈。
对于迁移到AWS的客户,这篇博文中描述的自动化治理机制将为开发人员保留灵活性,同时为安全团队提供控制。
在动态开发环境中,以下是一些常见的挑战:

  • 通过捷径完成任务,例如将安全凭证硬编码在代码中。
  • 成本管理,例如控制启动的实例的类型。
  • 知识传递。
  • 手动流程。

治理步骤

四步走的自动化治理方法:

在治理开始的时候,你需要实施一些(1)高风险操作的控制。在控制就绪后,你需要(2)监控你的环境,以确保你正确地配置了资源。监控将帮助你发现想要(3)尽快修复的问题。你还将需要定期地生成一份(4)审核报告,以展示所有内容都符合要求。
这篇博文中的例子协助阐明了四步走的自动化治理方法:中央IT团队允许其Big Data团队运行一个基于Amazon EMR集群的测试环境。该团队在100个t2.medium实例运行EMR任务,但是当一个团队成员使用100个r3.8xlarge实例来更快地完成任务时,业务会产生意外的费用。
中央IT团队关心治理,采取一些措施来防止这种情况再次发生:

  • 控制要素:团队使用CloudFormation来限制实例的数量和类型,并使用AWS身份和访问管理来允许只有某个组可以修改EMR集群。
  • 监控要素:团队使用AWS标记,AWS ConfigAWS Trusted Advisor来监控EMR实例限制,并确定是否有人超额使用了被允许的实例数。
  • 修复:团队创建一个自定义的AWS Config规则来终止那些不是指定类型的EMR实例。
  • 审核:团队在AWS Config中审查EMR实例的生命周期。

控制

你可以通过标准化配置(通过AWS CloudFormation),限制配置的选项(通过AWS服务目录)和控制权限(通过IAM)来防范错误。
AWS CloudFormation可以帮助你在单个软件包中控制工作流环境。 在这个示例中,我们使用CloudFormation模板来限制实例的数量和类型,使用AWS标记来控制环境。
例如,团队可以通过使用限制了实例类型和数量的CloudFormation来阻止选择r3.8xlarge实例类型的选用。

CloudForamtion模板示例

包含标记的EMR集群

{
“Type” : “AWS::EMR::Cluster”,
“Properties” : {
“AdditionalInfo” : JSON object,
“Applications” : [ Applications, … ],
“BootstrapActions” [ Bootstrap Actions, … ],
“Configurations” : [ Configurations, … ],
“Instances” : JobFlowInstancesConfig,
“JobFlowRole” : String,
“LogUri” : String,
“Name” : String,
“ReleaseLabel” : String,
“ServiceRole” : String,
“Tags” : [ Resource Tag, … ],
“VisibleToAllUsers” : Boolean
}
}

在AWS中AWS Service Catalog可用于分配经批准的产品(服务器,数据库,网站)。 这为IT管理员在哪些用户可以访问哪些产品的方面,提供了更多的灵活性。 AWS Service Catalog还使他们有能力根据业务标准执行合规性。

AWS IAM用于控制哪些用户可以访问哪些AWS服务和资源。 通过使用IAM角色,你可以避免在代码中使用root凭证来访问AWS资源。
在这个示例中,我们给予团队领导者完全的EMR访问包括控制台和API访问(不在此处介绍),并为开发者提供只读访问并且不提供控制台访问权限。 如果开发者想要运行这个任务,开发者只需要PEM文件。

IAM策略

以下策略使团队领导者拥有的完全的EMR访问:

{
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”: “Allow”,
“Action”: [
“cloudwatch:*”,
“cloudformation:CreateStack”,
“cloudformation:DescribeStackEvents”,
“ec2:AuthorizeSecurityGroupIngress”,
“ec2:AuthorizeSecurityGroupEgress”,
“ec2:CancelSpotInstanceRequests”,
“ec2:CreateRoute”,
“ec2:CreateSecurityGroup”,
“ec2:CreateTags”,
“ec2:DeleteRoute”,
“ec2:DeleteTags”,
“ec2:DeleteSecurityGroup”,
“ec2:DescribeAvailabilityZones”,
“ec2:DescribeAccountAttributes”,
“ec2:DescribeInstances”,
“ec2:DescribeKeyPairs”,
“ec2:DescribeRouteTables”,
“ec2:DescribeSecurityGroups”,
“ec2:DescribeSpotInstanceRequests”,
“ec2:DescribeSpotPriceHistory”,
“ec2:DescribeSubnets”,
“ec2:DescribeVpcAttribute”,
“ec2:DescribeVpcs”,
“ec2:DescribeRouteTables”,
“ec2:DescribeNetworkAcls”,
“ec2:CreateVpcEndpoint”,
“ec2:ModifyImageAttribute”,
“ec2:ModifyInstanceAttribute”,
“ec2:RequestSpotInstances”,
“ec2:RevokeSecurityGroupEgress”,
“ec2:RunInstances”,
“ec2:TerminateInstances”,
“elasticmapreduce:*”,
“iam:GetPolicy”,
“iam:GetPolicyVersion”,
“iam:ListRoles”,
“iam:PassRole”,
“kms:List*”,
“s3:*”,
“sdb:*”,
“support:CreateCase”,
“support:DescribeServices”,
“support:DescribeSeverityLevels”
],
“Resource”: “*”
}
]
}

以下策略使开发人员拥有只读访问:

{

“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”: “Allow”,
“Action”: [
“elasticmapreduce:Describe*”,
“elasticmapreduce:List*”,
“s3:GetObject”,
“s3:ListAllMyBuckets”,
“s3:ListBucket”,
“sdb:Select”,
“cloudwatch:GetMetricStatistics”
],
“Resource”: “*”
}
]
}

这些是IAM管理的策略。如果要更改权限,你可以创建自己的IAM自定义策略

监测

尽可能使用AWS CloudTrailAmazon CloudwatchAmazon VPCAmazon S3Elastic Load Balancing提供的日志。 你可以使用AWS Config,Trusted Advisor和CloudWatch的事件和警报来监控这些日志。
AWS CloudTrail可用于在AWS中记录API调用。 它可以帮助你解决问题,确保你的环境安全,并生成审核报告。 例如,您可以使用CloudTrail日志来识别谁启动了那些r3.8xlarge实例。

AWS Config可用于跟踪和执行规则,这些规则检查你的AWS资源的配置是否符合要求。你还可以根据你配置的规则一目了然地了解你的环境的合规性情况。
Amazon CloudWatch可用于对配置不正确的资源进行监控和报警。 CloudWatch的实体,包括监控指标,警报,日志和事件可帮助你监视AWS资源。使用监控指标(包括自定义的监控指标),你可以监控资源并获取可自定制的小控件的仪表板。 Cloudwatch日志可以用于从AWS提供的日志和你的系统日志中传输数据,这有助于问题修复和审核。
CloudWatch事件可以帮助你针对变更采取行动。 VPC流日志,S3和ELB日志为你提供数据,以便你在修复问题或优化环境时做出更明智的决定。
AWS Trusted Advisor分析你的AWS环境,并提供四个方面的最佳实践建议:成本,性能,安全性和容错能力。这个在线资源优化工具还包括有关AWS资源限制的警告。
我们将使用Trusted Advisor来确保这种资源限制不会成为启动100个实例的瓶颈:

问题修复

根据违规情况以及监控和展现资源配置的能力,你可能想要在发现配置不正确的资源导致安全性冲突时采取行动。 重要的是修复问题不会导致没有预期的后果,并且为你的执行的操作维护可审计的记录。

你可以使用AWS Lambda自动化一切。 当你使用Lambda与Amazon Cloudwatch 事件来修复问题时,你可以采取终止实例行动或者将新实例添加到 Auto Scaling 。你可以针对任何AWS API调用采取行动。 你还可以使用AWS Config托管规则和自定义规则进行问题修复。 在根据AWS Config规则获取有关环境的信息时,你可以使用AWS Lambda针对这些规则执行操作。 这有助于自动化的问题修复。

AWS Config查找运行中实例的类型

要解决我们示例中的问题,你可以实现AWS Config的自定义规则和触发器(例如,如果实例的类型大于.xlarge或被拆除出EMR群集,则该实例会被关机)。

审计

你做为审计员,将会希望在年底或季度末准备一份审计报告。你可以使用AWS Config资源自动化你的报表系统。
你可以查看AWS资源配置和历史记录,以便查看r3.8xlarge实例集群何时启动或者应用了哪个安全组。 你甚至可以搜索哪些被终止的实例。

AWS Config 资源

 

更多控制,监测和问题修复的示例

来自AWS专业服务团队的Armando Leite创建了一个利用Cloudwatch Events和AWS Lambda的治理框架示例来强制执行一组控件(无操作系统root的访问,无远程登录)。 当违规被注意到(监测)时,自动化措施会被采取来响应事件,并在必要时恢复到之前的良好状态(问题修复)。

  • 通过AWS Config的自定义规则或AWS CloudWatch事件去触发工作流,来进行修复(例如,关闭实例)
  • 监视用户的操作系统活动。 随着事件的发展,新的Lambda功能动态地启用更多的日志和订阅日志数据以实现进一步的实时分析。
  • 如果监测的结果是适合,将系统恢复到之前的良好状态。

 

译者

殷实,AWS专业服务咨询顾问,专注于企业客户在AWS上的运维和DevOps的评估,架构,设计和实施。

在AWS上部署SAP HANA – 您的选项是什么?

作者:Sabari Radhakrishnan, Amazon Web Services(AWS)的合作伙伴解决方案架构师

译者:戴俊, Amazon Web Services(AWS)的专业服务团队SAP顾问 | 原文链接

您是否计划将SAP应用程序迁移到SAP HANA平台或使用SAP HANA启动新的实施? 如果是这样,您可能会想知道Amazon Web Services(AWS)提供什么选项来运行SAP HANA工作负载。 在这篇博文中,我想讨论SAP HANA所需的核心基础架构组件以及AWS提供的构建模块,以帮助您构建AWS上的SAP HANA虚拟设备。 我希望这些信息可以帮助您了解概念层面的部署选项。 这是我们将在AWS主题上发布各种SAP的一系列博文中的第一篇,因此请经常回来看看。

如果您遵循SAP HANA定制数据中心集成(TDI)模式,内存,计算,存储和网络是SAP HANA所需的四个关键基础架构组件。 其中,内存是唯一取决于您的数据大小的变量。 计算,存储和网络的要求是从内存大小预设或派生的。 例如,根据内存大小,SAP已经有了标准的CPU核数到内存比的要求,以确定您需要进行计算的CPU核心数量。 关于存储,无论内存大小如何,您需要能够满足SAP HANA硬件配置检查工具(HWCCT)指南中规定的不同块大小和其他KPI的特定吞吐量要求。 最后,对于网络,特别是对于横向扩展情况,不论内存大小,您都需要能够在SAP HANA节点之间至少支持9.5 Gbps的网络吞吐量。

在过去的几年中,AWS与SAP紧密合作,以验证在AWS平台上运行SAP HANA工作负载的计算和存储配置。 我们如何实现这个目标的呢? 答案是,AWS已经设计了具有不同内存大小的Amazon Elastic Compute Cloud(Amazon EC2)实例,以满足SAP对SAP HANA的所有严格的性能要求,包括适用于计算的CPU核心到内存比例。 此外,Amazon Elastic Block Store(Amazon EBS)在许多情况下满足了TDI模型的存储KPI。 最后,EC2实例的网络带宽满足或超过了横向扩展模式下节点间通信的9.5 Gbps要求。

我们来仔细看看这些构建模块和配置选项。

内存和计算

AWS提供了几种EC2实例类型来支持不同类型的工作负载。有两个EC2实例系列非常适合SAP HANA工作负载:内存优化的R3和R4实例以及高内存X1实例。这些实例系列是针对内存中的工作负载(如SAP HANA)专门制定的。这些实例系列及其包含的实例类型为您提供了运行SAP HANA工作负载的各种计算选项。对于在线分析处理(OLAP)工作负载(例如,HANA上的SAP Business Warehouse,SAP BW / 4HANA,数据集市等),您可以垂直扩展,从244 GiB到2 TB,水平扩展一直到14 TB,并被SAP完全支持。还要注意,我们已经在AWS实验室中成功测试了多达25个节点的部署或总共50 TB的RAM。对于在线交易处理(OLTP)工作负载(例如,HANA上的SAP Business Suite,SAP S4 / HANA,SAP CRM等),您现在可以从244 GiB垂直扩展到2 TB。随着AWS继续推出具有最新CPU代数的新实例类型,我们将与SAP密切合作,为SAP HANA工作负载的这些实例类型进行认证。通过SAP认证和支持的SAP HANA硬件目录中的“认证IaaS平台”页面,查看可用于SAP HANA工作负载的生产中的所有经过认证的AWS实例类型。在非生产工作负载的给定实例系列中,您可以随时使用较小的实例大小,例如r3.2xlarge,r4.2xlarge等,以降低总体拥有成本(TCO)。请记住,这些是云原生实例,使您可以灵活地将SAP HANA系统的内存空间从64GB无缝更改为2 TB,反之亦然,几分钟内即可实现SAP HANA实施的前所未有的灵活性。

以下图表总结了我刚刚描述的内存和计算选项。

注 – 对于SAP Business One,所适用的SAP HANA的版本,以及可以使用其他实例和内存大小。 请参考关于这个话题的另一个博文。

存储

对于SAP HANA的持久性块存储,AWS提供多种选项。对于您的性能敏感数据和日志卷,以及针对SAP HANA备份的成本优化/高吞吐量磁性EBS卷(st1),我们有两种支持SSD的EBS卷类型(gp2和io1)。

  • 使用通用SSD(gp2)卷类型,您可以驱动高达每卷160 MB / s的吞吐量。为了实现TDI模型所需的最大吞吐量为400 MB / s,您必须为SAP HANA数据和日志文件分配三个卷。
  • 配置的IOPS SSD(io1)卷提供每卷最多320 MB / s的吞吐量,因此您需要至少分两个卷来实现所需的吞吐量。
  • 通过吞吐量优化的硬盘(st1)卷,您可以通过大尺寸块的顺序读写实现高达500 MB / s的吞吐量,这使st1成为存储SAP HANA备份的理想选择。

一个关键点是每个EBS卷都会在其AWS可用区域内自动复制,以保护您免受故障,提供高可用性和耐久性。因此,您可以在操作系统级别配置RAID 0阵列,以获得最佳性能,而不必担心您的卷的额外保护(RAID 10或RAID 5)。

网络

网络性能是SAP HANA的另一个关键因素,尤其是横向扩展系统。 每个EC2实例提供一定量的网络带宽,而像X1这样的一些最新实例系列可为您的SAP HANA需求提供高达20 Gbps的网络带宽。 此外,许多实例为Amazon EBS存储后端提供专用网络带宽。 例如,最大的X1实例(x1.32xlarge)提供20 Gbps的网络带宽和10 Gbps的专用存储带宽。 R4(r4.16xlarge)除了专用的12 Gbps存储带宽外还提供20 Gbps的网络带宽。 以下简要介绍了SAP认证实例的网络功能。

*网络和存储流量共享相同的10 Gbps网络接口

操作系统(OS)

SAP支持在SUSE Linux Enterprise Server(SLES)或Red Hat Enterprise Linux(RHEL)上运行SAP HANA。 AWS都支持这两种操作系统版本。 此外,您可以在AWS Marketplace中使用SAP HANA特定的SUSE和Red Hat映像来快速开始。 您还可以选择携带自己的操作系统许可证。 请在未来的博文中,查看有关SAP HANA在AWS上的操作系统选项的详细信息。

把以上内容搭建起来

您可能会问:“AWS提供与TDI类似的SAP HANA的这些构建模块非常好,但是如何将这些组件放在一起构建一个满足SAP对AWS要求的系统?”AWS客户几年前就问了这个问题,这就是为什么我们构建了AWS SAP HANA快速启动。此快速启动使用AWS CloudFormation模板(基础架构作为代码infrastructure as code)和自定义脚本来帮助配置AWS基础架构组件,包括存储和网络。快速启动有助于设置SAP HANA安装的操作系统先决条件,并且可以在携带自己的软件和许可证时安装SAP HANA软件。快速启动是可以在全球许多AWS地区使用的自助服务工具。在不到一小时的时间内,它们可以以一致,可预测和可重复的方式为您的SAP HANA系统提供基础设施,无论是单节点还是横向扩展系统。查看在SAP RE:Invent 2016会议期间与SAP联合提交的SAP HANA Quick Start的演示文稿

我们强烈建议您使用AWS快速启动为您的SAP HANA部署配置基础架构。 但是,如果无法使用快速启动(例如,因为要使用自己的操作系统映像),则可以手动配置SAP HANA环境,并将构建模块放在一起。 只需确保遵循快速入门指南中有关存储和实例类型的建议。 为了具体目的,我们还在“ SAP HANA on AWS 手动部署指南”中的SAP HANA中提供了分步说明。 (手动部署指南很快将会更新,以包括最新操作系统版本的说明,包括RHEL。)

备份和恢复

以可靠的方式备份和恢复SAP HANA数据库的能力对于保护业务数据至关重要。 您可以使用本机SAP HANA工具将数据库备份到EBS卷,并最终将备份的文件移动到Amazon Simple Storage Service(Amazon S3),以提高其耐用性。 Amazon S3是高度可扩展和耐用的对象存储服务。 Amazon S3中的对象可以冗余地存储在一个区域内的多个设施中,并提供11个9的耐久性。 您还可以选择使用与Amazon S3集成的企业级备份解决方案,如Commvault,EMC NetWorker,Veritas NetBackup和IBM Spectrum Protect(Tivoli Storage Manager)以及SAP HANA Backint界面。 这些合作伙伴解决方案可以帮助您将SAP HANA数据库直接备份到Amazon S3,并使用企业级软件管理备份和恢复。

高可用性(HA)和灾难恢复(DR)
HA和DR是在SAP HANA上运行的关键业务应用程序的关键。 AWS提供了几个构建模块,包括全球各个AWS区域和每个AWS区域内的多个可用区域,您可以根据RTO和RPO的要求设置HA和DR解决方案。 无论您是寻求基于成本优化的解决方案还是基于停机时间优化的解决方案,SAP HANA HA / DR架构都有一些独特的选择,请查看SAP HANA HA/DR 指南,以了解有关这些更多信息。 在未来的博文中,我们将深入探讨这一主题。

系统迁移

在实际迁移的时候,您可以使用SAP Software Provisioning Manager(SWPM)和Software Update Manager(SUM)的Database Migration Option(DMO)等标准SAP工具集,或第三方迁移工具来把在任何数据库上运行的SAP应用程序迁移到AWS上的SAP HANA。 SAP到AWS迁移过程与典型的本地迁移方案没有太大的不同。 在本地场景中,您通常将源和目标系统驻留在同一数据中心。 当您迁移到AWS时,唯一的区别是您的目标系统驻留在AWS上,因此您可以将AWS视为自己的数据中心的扩展。 还有一些选项可用于在迁移过程中将导出的数据从本地数据中心传输到AWS。 我建议您查看 Migrating SAP HANA Systems to X1 Instances on AWS,以更好地了解您的选项。

其他注意事项包括操作,调整大小,缩放,与其他AWS服务(如Amazon CloudWatch)的集成,以及大数据解决方案。 我们将在未来的博文中详细讨论这些。 同时,我们也鼓励您使用AWS SAP HANA快速入门来在AWS上使用SAP HANA。 要了解有关在AWS上运行SAP工作负载的更多信息,请参阅AWS网站上列出的白皮书

最后,如果您需要一个超出了目前可用规模的可扩展系统,请与我们联系。 我们很乐意与您讨论您的要求,并与您一起实施。

– Sabari

 

译者

戴俊,AWS中国专业服务团队SAP咨询顾问,在加入AWS之前,曾供职于SAP和EMC历任SAP技术顾问及SAP解决方案工程师,在SAP系统架构设计与迁移方面有着丰富的经验。现任职于AWS中国专业服务团队,主要为客户提供云上SAP系统架构设计,SAP上云迁移等咨询服务。

准备好参加 AWS re:Invent 2017 大会

距离 2017 年 11 月 27 日只剩 110 天时间,我和我的同事正在努力进行 re:Invent 2017 的准备工作。我尚未开始写博客文章,也未开始任何新的 LEGO 创作,但是我已经看过初始启动工作清单,并已准备好迎接一、两个月的繁忙时间!

与以往相比,我们增加了场地数量,扩大了会场规模,并将提供更多的内容 (1,000 多场讲座)、黑客马拉松、训练营、研讨会和认证机会。除了 Tatonka 挑战赛re:PLAY 派对等长盛不衰的活动外,我们还添加了冰上扫帚球 (一个有久远历史的 Amazon 传统活动) 和一些全明星健身活动。

每年,我都会在最后关头接到很久不联系的熟人发来的求票短信、求票电子邮件和打来的求票电话,然后不得不拒绝他们 (我仍在等着那些开头是“我肯定我们曾一起上过一年级……”的消息,不过你们懂的)。即使每年扩大容纳人数,我们仍然预计票会再次销售一空。我建议您立即注册,以免拿不到票。

维加斯见!

Jeff

光环新网运营的AWS中国(北京)区域HPC集群创建

在上个博客“在AWS云上快速搭建高性能计算(HPC)集群”中,我们介绍了高性能计算的使用场景,框架和如何在AWS Global创建HPC集群,但在光环新网运营的AWS中国(北京)区域并不支持使用CFNCluster直接创建HPC,因此我们需要使用CloudFormation手工创建集群,整个过程并不复杂。步骤如下:

1.进入光环新网运营的AWS中国(北京)区域的Console,然后进入CloudFormation的服务。如下图:

2.点击 “Create New Stack”后,弹出下面的界面。

3.在界面中制定CloudFormation的模板文件如下。

https://s3.cn-north-1.amazonaws.com.cn/cfncluster-cn-north-1/templates/cfncluster.cfn.json

4.在后续界面中下面参数必须定义:

Stack name:要创建HPC集群的名称

AvailablityZone:指定要在那个可用区创建HPC集群

VPCId:指定需要创建集群的VPCId

MasterSubnetId:指定Master节点的子网ID

KeyName:指定EC2服务器访问的key

Scheduler:指定高性能计算的管理框架,默认是SGE,有Openlava,Torque等可以选择。

5.可选参数定义:

InitialQueueSize:HPC集群的初始节点数

ComputeInstanceType:集群计算节点的类型

MasterInstanceType:Master节点的类型

MaxQueueSize:集群最大节点数

PlacementGroup:节点的放置组

对于全部的配置参数说明,可以参考下面链接:

http://cfncluster.readthedocs.io/en/latest/configuration.html

6.点击Next后,输入集群的tag。

7.点击左下方的checkbox运行AWS Cloudformation帮助创建资源,然后点击创建。

8.等待当前HPC集群的创建状态变为COMPLETE,查看下方的Outputs消息输出,找到HPC Master节点的IP。

9.使用前面Output中的Master节点的IP或去Console中的EC2里面找到刚才创建的Master节点的机器,通过ssh连接,然后运行HPC的命令。

  • 总结

在AWS中国区,你可以使用CloudFormation快速的创建HPC集群,AWS提供了丰富的服务器类型供你选择,你可以选择基于CPU或GPU等不同类型的服务器,也可以选择SGE,OpenLava等分布式资源管理软件来调度你的程序,如果我们不配置,默认的资源管理软件是SGE。

作者介绍

蓝勇,AWS解决方案架构师,负责基于AWS的云计算方案架构的咨询和设计,同时致力于AWS云服务在国内的应用和推广,在DR解决方案、数据仓库、RDS服务、企业应用、自动化运维等方面有着广泛的设计和实践经验。在加入AWS之前,在甲骨文中国担任资深售前工程师,负责售前方案咨询和架构设计,在数据库,中间件,大数据及企业应用方面有丰富经验。

在AWS云上快速搭建高性能计算(HPC)集群

1. 高性能计算的应用场景

科学家、工程师及科研者等经常需要使用大规模高性能计算集群(HPC)来解决计算密集或存储密集型计算的问题,常见的使用高性能计算的场景包括基因处理、金融建模与仿真、计算化学、物理建模与仿真、政府及科研项目等。在这些HPC应用中,通常需要使用HPC集群来帮助我们快速完成计算,从而减少研发成本和时间。比如基因公司为了完成遗传病组学研究,通常一次需要研究上万份基因的样本,分析上百T的数据,如果用自己机房的服务器来完成计算分析,需要数年的时间,如果使用HPC集群,提交基因分析任务,我们能使用集群的分布式资源管理器来调度并最大化的利用机器资源,在数天内完成分析任务,大大的节省计算的时间。常见的高性能计算的场景还包括:视频转码与编码、流体力学、天气预测、材料仿真、汽车碰撞仿真、风险建模、分子建模、上下文搜索、物流建模、地震勘探数据处理、基因数据计算、天体物理、深度学习、动画建模、微电子验证、图像处理、地理信息系统等。

2. 什么是高性能计算

通常所说的高性能计算使用的硬件一般分为两种情况:

  • 高性能计算机

高性能计算机通常指使用了很多处理器(作为单个机器一部分)的机器。

比如说国内的高性能计算机“天河”、“曙光”、“神威-太湖之光”等,如“神威-太湖之光”由40个运算机柜和8个网络机柜组成,一台机柜装有1024块处理器,计算速度12亿亿次浮点运算次数。

  • 高性能计算机集群

使用某一集群中的多台计算机(作为单个计算资源操作)的计算系统和环境。

这是通过将多台计算机,通过软件的方式组成集群,由集群的分布式资源管理器来负责集群中服务器资源的监控、调度等,我们可以将集群看做单个计算资源,然后将任务提交到集群,分布式资源管理器负责将任务调度到具体服务器执行。

比如在2013年的超级计算机500强的竞赛中,AWS使用多个C3实例组建了高性能计算机集群,使用了26496个核,计算峰值速度达593.5万亿次浮点运算次数,当年排名世界第64位。

当我们需要高性能计算的时候,通常由于机房的资源比较固定,很难有很多服务器给我们来组建集群,而借用高性能计算机如“曙光“,”神威“的成本非常高,也不太现实。这时在云上搭建高性能计算集群就非常方便,因为云上有无限量的计算及存储的资源,资源更弹性,计算过程中可以根据业务压力,调整集群服务器数量;在完成计算后,我们可以释放所有计算资源,大大降低了计算成本。

3. 如何使用AWS云搭建HPC集群

通过 AWS,您能在数分钟内完成高性能计算集群的创建,并将并行 HPC 任务的数量增加到大多数本地 HPC 环境都无法支持的规模,从而提高研究速度并缩短获得成效的时间。AWS 可按需提供针对特定应用程序进行优化的 CPU、GPU 和 FPGA 服务器,有众多的服务器类型选择,无需巨额资金投入,从而帮助降低成本。您有权限访问面向紧密耦合、IO 密集型和存储密集型工作负载的完全等分的高带宽网络,这使您能够在数千个核心之间横向扩展,从而更快获得成效。

4. 集群管理软件CFNCluster

您的HPC集群可能拥有成百上千台机器,手工搭建HPC集群意味着你需要创建所有服务器,配置所有软件,这个过程太复杂。为了简化这个操作,AWS提供了CFNCluster集群管理软件,它是由AWS开发和维护的高性能计算集群的框架,能帮助你在数分钟内完成集群的创建和生产部署,CFNCluster创建的集群支持SGE,OpenLava,Torque等高性能计算框架。下图是CFNCluster和HPC集群的关系图:

通过上图可知,通常我们需要在一台服务器上安装CFNCluster软件,然后通过CFNCluster创建和管理多个HPC的集群,HPC集群中的服务器安装了SGE, OpenLava等分布式资源管理器,你可以根据需要配置分布式资源管理器的类型 ,你也可以使用Cloudwatch监控服务,根据业务压力动态调整(AutoScaling)HPC集群计算节点的数量。当HPC集群创建完成后,你可以像以往使用HPC集群一样通过Master节点访问你的HPC集群。下面示例详细介绍了安装CFNCluster和创建HPC集群的详细过程:

(1) 在AWS云中创建一台EC2服务器(使用Amazon Linux的AMI),并运行sudo pip install cfncluster安装CFNCluster,示例如下:

sudo pip install cfncluster

You are using pip version 6.1.1, however version 9.0.1 is available.

You should consider upgrading via the 'pip install --upgrade pip' command.

Collecting cfncluster

Downloading cfncluster-1.3.2.tar.gz

Requirement already satisfied (use --upgrade to upgrade): boto>=2.42.0 in /usr/lib/python2.7/dist-packages (from cfncluster)

Requirement already satisfied (use --upgrade to upgrade): awscli>=1.10.56 in /usr/lib/python2.7/dist-packages (from cfncluster)

Collecting future>=0.16.0 (from cfncluster)

Downloading future-0.16.0.tar.gz (824kB)

100% |████████████████████████████████| 827kB 565kB/s

Collecting configparser>=3.5.0 (from cfncluster)

Downloading configparser-3.5.0.tar.gz

Requirement already satisfied (use --upgrade to upgrade): botocore==1.4.46 in /usr/lib/python2.7/dist-packages (from awscli>=1.10.56->cfncluster)

Requirement already satisfied (use --upgrade to upgrade): colorama<=0.3.7,>=0.2.5 in /usr/lib/python2.7/dist-packages (from awscli>=1.10.56->cfncluster)

Requirement already satisfied (use --upgrade to upgrade): docutils>=0.10 in /usr/lib/python2.7/dist-packages (from awscli>=1.10.56->cfncluster)

Requirement already satisfied (use --upgrade to upgrade): rsa<=3.5.0,>=3.1.2 in /usr/lib/python2.7/dist-packages (from awscli>=1.10.56->cfncluster)

Collecting s3transfer<0.2.0,>=0.1.0 (from awscli>=1.10.56->cfncluster)

Downloading s3transfer-0.1.10-py2.py3-none-any.whl (54kB)

100% |████████████████████████████████| 57kB 6.3MB/s

Requirement already satisfied (use --upgrade to upgrade): jmespath<1.0.0,>=0.7.1 in /usr/lib/python2.7/dist-packages (from botocore==1.4.46->awscli>=1.10.56->cfncluster)

Requirement already satisfied (use --upgrade to upgrade): python-dateutil<3.0.0,>=2.1 in /usr/lib/python2.7/dist-packages (from botocore==1.4.46->awscli>=1.10.56->cfncluster)

Requirement already satisfied (use --upgrade to upgrade): pyasn1>=0.1.3 in /usr/lib/python2.7/dist-packages (from rsa<=3.5.0,>=3.1.2->awscli>=1.10.56->cfncluster)

Requirement already satisfied (use --upgrade to upgrade): futures<4.0.0,>=2.2.0 in /usr/lib/python2.7/dist-packages (from s3transfer<0.2.0,>=0.1.0->awscli>=1.10.56->cfncluster)

Requirement already satisfied (use --upgrade to upgrade): six in /usr/lib/python2.7/dist-packages (from python-dateutil<3.0.0,>=2.1->botocore==1.4.46->awscli>=1.10.56->cfncluster)

Installing collected packages: future, configparser, cfncluster, s3transfer

Running setup.py install for future

Running setup.py install for configparser

Running setup.py install for cfncluster

Successfully installed cfncluster-1.3.2 configparser-3.5.0 future-0.16.0 s3transfer-0.1.10

sudo pip install cfncluster

You are using pip version 6.1.1, however version 9.0.1 is available.

You should consider upgrading via the 'pip install --upgrade pip' command.

Collecting cfncluster

Downloading cfncluster-1.3.2.tar.gz

Requirement already satisfied (use --upgrade to upgrade): boto>=2.42.0 in /usr/lib/python2.7/dist-packages (from cfncluster)

Requirement already satisfied (use --upgrade to upgrade): awscli>=1.10.56 in /usr/lib/python2.7/dist-packages (from cfncluster)

Collecting future>=0.16.0 (from cfncluster)

Downloading future-0.16.0.tar.gz (824kB)

100% |████████████████████████████████| 827kB 565kB/s

Collecting configparser>=3.5.0 (from cfncluster)

Downloading configparser-3.5.0.tar.gz

Requirement already satisfied (use --upgrade to upgrade): botocore==1.4.46 in /usr/lib/python2.7/dist-packages (from awscli>=1.10.56->cfncluster)

Requirement already satisfied (use --upgrade to upgrade): colorama<=0.3.7,>=0.2.5 in /usr/lib/python2.7/dist-packages (from awscli>=1.10.56->cfncluster)

Requirement already satisfied (use --upgrade to upgrade): docutils>=0.10 in /usr/lib/python2.7/dist-packages (from awscli>=1.10.56->cfncluster)

Requirement already satisfied (use --upgrade to upgrade): rsa<=3.5.0,>=3.1.2 in /usr/lib/python2.7/dist-packages (from awscli>=1.10.56->cfncluster)

Collecting s3transfer<0.2.0,>=0.1.0 (from awscli>=1.10.56->cfncluster)

Downloading s3transfer-0.1.10-py2.py3-none-any.whl (54kB)

100% |████████████████████████████████| 57kB 6.3MB/s

Requirement already satisfied (use --upgrade to upgrade): jmespath<1.0.0,>=0.7.1 in /usr/lib/python2.7/dist-packages (from botocore==1.4.46->awscli>=1.10.56->cfncluster)

Requirement already satisfied (use --upgrade to upgrade): python-dateutil<3.0.0,>=2.1 in /usr/lib/python2.7/dist-packages (from botocore==1.4.46->awscli>=1.10.56->cfncluster)

Requirement already satisfied (use --upgrade to upgrade): pyasn1>=0.1.3 in /usr/lib/python2.7/dist-packages (from rsa<=3.5.0,>=3.1.2->awscli>=1.10.56->cfncluster)

Requirement already satisfied (use --upgrade to upgrade): futures<4.0.0,>=2.2.0 in /usr/lib/python2.7/dist-packages (from s3transfer<0.2.0,>=0.1.0->awscli>=1.10.56->cfncluster)

Requirement already satisfied (use --upgrade to upgrade): six in /usr/lib/python2.7/dist-packages (from python-dateutil<3.0.0,>=2.1->botocore==1.4.46->awscli>=1.10.56->cfncluster)

Installing collected packages: future, configparser, cfncluster, s3transfer

Running setup.py install for future

Running setup.py install for configparser

Running setup.py install for cfncluster

Successfully installed cfncluster-1.3.2 configparser-3.5.0 future-0.16.0 s3transfer-0.1.10

从输出中我们看到,CFNCluster软件已经成功的安装。

(2) 配置集群

通过上面的CFNCluster软件,我们已经可以创建集群了,但创建集群前,需要使用cfncluster configure对集群进行简单的配置,配置信息包括集群创建的区域、创建的权限、网络等。更多的配置可以通过配置参数文件完成,示例如下:

cfncluster configure

Cluster Template [default]:

AWS Access Key ID []: AKXXXXXXXXXXXXXXXXXX

AWS Secret Access Key ID []: hmxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Acceptable Values for AWS Region ID:

us-east-1

us-west-1

cn-north-1

ap-northeast-1

ap-southeast-2

sa-east-1

ap-southeast-1

ap-northeast-2

us-west-2

us-gov-west-1

ap-south-1

eu-central-1

eu-west-1

AWS Region ID []: us-west-2

VPC Name [public]: vpc-dee1xxxx

Acceptable Values for Key Name:

Demoxxxx

Key Name []: Demoxxxx

Acceptable Values for VPC ID:

vpc-c0f00000

vpc-2d600000

vpc-66f00000

vpc-dee1xxxx

vpc-06400000

VPC ID []: vpc-dee1xxxx

Acceptable Values for Master Subnet ID:

subnet-b9e00000

subnet-22800000

subnet-4e900000

subnet-e55xxxxx

subnet-47800000

Master Subnet ID []: subnet-e55xxxxx

上述配置中:

AWS Access Key ID

创建集群的AWS用户对应的Access Key,在IAM中创建。

AWS Secret Access Key ID

Access Key对应的Secret Access Key。

AWS Region ID

集群所在的区域。

VPC ID

集群被创建的网络。

Master Subnet ID

集群被创建的子网。

当我们进行简单的配置后,我们就可以创建测试的HPC集群了,示例如下:

cfncluster create testcluster

Starting: testcluster

Status: cfncluster-testcluster - CREATE_IN_PROGRESS

Status: cfncluster-testcluster - CREATE_IN_PROGRESS

Status: MasterEIP - CREATE_IN_PROGRESS

Status: SNS - CREATE_IN_PROGRESS

Status: RootRole - CREATE_COMPLETE

Status: MasterEIP - CREATE_COMPLETE

Status: SQSPolicy - CREATE_COMPLETE

Status: AssociateEIP - CREATE_IN_PROGRESS

Status: CfnClusterPolicies - CREATE_COMPLETE

Status: AssociateEIP - CREATE_COMPLETE

Status: RootInstanceProfile - CREATE_COMPLETE

Status: MasterServer - CREATE_IN_PROGRESS

Status: ComputeFleet - CREATE_IN_PROGRESS

Status: ComputeFleet - CREATE_COMPLETE

Status: cfncluster-testcluster - CREATE_COMPLETE

Output:"MasterPublicIP"="34.xxx.xx.xx"

Output:"MasterPrivateIP"="172.16.4.33"

Output:"GangliaPublicURL"="http://34.xxx.xx.xx/ganglia/"

Output:"GangliaPrivateURL"="http://172.16.4.33/ganglia/"

从上面的输出可以看到,当create集群的时候,会帮我们创建master和多个computer的节点。你可以根据上图中的MasterPublicIP的地址ssh登录到HPC的主节点,也可以使用GangliaPublicURL来监控集群资源。除了上述的CFNCluster的create和configure命令,还有delete,update,stop,list等命令来查看集群状态和管理集群。

5. CFNCluster是如何创建集群的

上一节您通过cfncluster configure简单的配置,然后就能创建集群了,这时候你可能会有很多疑惑,比如:我如何定义我集群的节点类型、节点数等,这些都可以通过配置CFNCluster服务器home目录下面~/.cfncluster/config来实现,在此配置文件中能够配置集群的参数,AWS通过CloudFormation的模板和参数列表创建HPC集群。下面是部分的参数:

template_url
使用cloudformation创建HPC的模板文件,AWS也提供了默认的模板文件。

compute_instance_type
集群计算节点的类型。

master_instance_type
集群主节点的类型。

initial_queue_size
创建集群的初始节点数

max_queue_size
集群的最大节点数

scheduler
分布式资源管理器的类型

base_os
操作系统类型等,全部的配置参数,可以参考下面链接:

http://cfncluster.readthedocs.io/en/latest/configuration.html

6. 提交Job到HPC集群

完成集群创建后,您就可以登录集群,然后运行qsub命令提交你的任务了。下面是通过主节点登陆HPC集群示例:

ssh -i Demoxxx.pem ec2-user@34.xxx.xx.xx

The authenticity of host '34.xxx.xx.xx (34.xxx.xx.xx)' can't be established.

ECDSA key fingerprint is 6c:a0:21:10:13:b4:07:4b:bc:b9:83:dc:bd:87:00:00.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '34.xxx.xx.xx' (ECDSA) to the list of known hosts.

Last login: Wed Aug  2 06:47:26 2017

__|  __|_  )

_|  (     /   Amazon Linux AMI

___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2017.03-release-notes/

12 package(s) needed for security, out of 19 available

Run "sudo yum update" to apply all updates.

[ec2-user@ip-172-16-4-33 ~]$

分布式资源管理器安装在/opt目录下,查看分布式资源管理器示例如下:

cd /opt

[ec2-user@ip-172-16-4-33 opt]$ ls -l

total 24

drwxr-xr-x  5 root     root 4096 Apr 17 07:58 aws

drwxr-xr-x  5 root     root 4096 Aug  2 06:46 cfncluster

drwxr-xr-x  6 root     root 4096 Jun 12 05:15 chef

drwxr-xr-x 16 sgeadmin root 4096 Aug  2 06:47 sge

drwxr-xr-x  7 root     root 4096 Jun 12 05:29 slurm

drwxr-xr-x  8 root     root 4096 Jun 12 05:27 torque

查看集群状态和集群的主机示例如下:

[ec2-user@ip-172-16-4-33 opt]$ qstat

[ec2-user@ip-172-16-4-33 opt]$ qhost

HOSTNAME                ARCH         NCPU NSOC NCOR NTHR  LOAD  MEMTOT  MEMUSE  SWAPTO  SWAPUS

----------------------------------------------------------------------------------------------

global                  -               -    -    -    -     -       -       -       -       -

ip-172-16-4-123         lx-amd64        1    1    1    1  0.00  993.4M  144.4M     0.0     0.0

ip-172-16-4-128         lx-amd64        1    1    1    1  0.00  993.4M  181.6M     0.0     0.0

7.  总结

至此你的测试的高性能计算的集群就已经创建好了,对于创建生产环境的高性能计算的集群,你需要根据业务类型,在参数文件中配置合适的服务器类型、合适大小的集群、分布式资源管理器来创建集群。AWS的CFNCluster能帮你快速创建集群,让你把工作集中在业务处理而不是集群的创建和管理。本文中的集群创建只适用于AWS Global区域,不适用于中国区,对于中国区的创建方法,请参考博客“在AWS中国区快速搭建高性能计算(HPC)集群”。

作者介绍:

蓝勇,AWS解决方案架构师,负责基于AWS的云计算方案架构的咨询和设计,同时致力于AWS云服务在国内的应用和推广,在DR解决方案、数据仓库、RDS服务、企业应用、自动化运维等方面有着广泛的设计和实践经验。在加入AWS之前,在甲骨文中国担任资深售前工程师,负责售前方案咨询和架构设计,在数据库,中间件,大数据及企业应用方面有丰富经验。

使用“运行命令”管理一组实例

Emily Freebairn,亚马逊AWS软件开发工程师

翻译 Ye Zhou | 原文链接

通常,工程师希望在一组实例中执行操作任务。 但是,这些任务中的许多任务需要以受控的速度进行,并在出现问题时获得反馈。 此外,管理员还通常希望确保工程师只能执行指定的操作。

运行命令”是Amazon EC2系统管理器(SSM)的一部分,旨在让您远程和安全地管理实例。 “运行命令”提供了一种简单的方法来自动执行常见的管理任务,如运行shell脚本、安装软件或修补程序等等。 “运行命令”允许您在多个实例上执行命令,并提供对结果的可见性。通过与AWS身份和访问管理(IAM)的集成,您可以精确控制用户可以在实例上执行的操作权限。 “运行命令”执行的所有操作均由AWS CloudTrail记录,允许您审核对系统的更改。

在本文中,演示了如何执行命令来收集实例的诊断信息。 由于系统容量是按需添加,系统的容量会随时变化。为了减少实例出现意外的可能性,命令可以以受控的速度运行。 如果出现失败,您将收到通知以进行事后分析。 要确保您不会意外运行其他命令,请使用具有锁定权限的自定义操作来执行指定任务。

演练

在本节中,我将向您展示如何使用Auto Scaling设置实例,创建自定义SSM文档,然后在Auto Scaling组中的所有实例上运行命令。 同时展示了如何设置Amazon CloudWatch事件,以便在遇到问题时收到通知。

步骤1:使用Auto Scaling组启动实例

要使用“运行命令”,实例需要以下内容:

SSM代理与“运行命令”服务通信以接收命令并发送输出,并使用IAM角色授予调用服务的权限。

对于这篇文章,使用Auto Scaling组来创建一组正确配置的实例。 有关分步说明,请参阅Auto Scaling入门

这里是一个使用了五个实例的Auto Scaling组的示例。

步骤2:创建自定义文档

“运行命令”使用文档来指定要在实例上执行的操作。文档是由JSON定义的AWS资源,它们包括您指定的步骤和参数。

AWS提供了一组执行常见任务的文档,例如运行shell脚本,配置CloudWatch,安装应用程序等。 此外,您可以为自己的文档编写特定任务。 因为IAM策略允许您控制用户被授权使用哪些文档,因此可以通过将一个指定用户限制到某个文档子集来锁定该用户可以执行的操作。

这里是一个文档的例子,它找出最消耗内存的进程。

{
    "schemaVersion": "2.0",
    "description": "Instance Diagnostics",
    "parameters": { },
    "mainSteps": [
        {
            "action": "aws:runShellScript",
            "name": "collectInformation",
            "inputs": {
                "runCommand": [ "ps aux --sort '%mem' | head -5" ]
            }
        }
    ]
}

要创建自定义文档,请使用创建文档SSM API。

aws ssm create-document --name InstanceDiagnostics --content file://~/workspace/document.json --document-type Command
{
    "DocumentDescription": {
        "Status": "Creating", 
        "Hash": "92182f1392807f23556ecc3f9e1d950a575dce8e2a4b96d284b1b2fb93369db2", 
        "Name": "InstanceDiagnostics", 
        "Parameters": [], 
        "DocumentType": "Command", 
        "PlatformTypes": [
            "Linux"
        ], 
        "DocumentVersion": "1", 
        "HashType": "Sha256", 
        "CreatedDate": 1492636792.396, 
        "Owner": "040557870006", 
        "SchemaVersion": "2.0", 
        "DefaultVersion": "1", 
        "LatestVersion": "1", 
        "Description": "Instance diagnostics example."
    }
}

步骤3:设置CloudWatch事件

去年,我们在“运行命令”中添加了对命令状态更改的通知的支持。 设置CloudWatch事件通知时,您可以决定在每个实例或每个命令的基础上触发事件,并指定通知的状态。使用此功能,您可以选择在命令完成时收到通知,以进行必要的后续操作。

设置CloudWatch事件通知,以通过Amazon SNS通知并在命令完成时收到电子邮件。 首先创建一个在触发时发送电子邮件的SNS主题。

接下来,创建CloudWatch事件规则以在命令完成执行时触发SNS主题。

步骤4:测试一个实例上的命令

在将命令发送到整个实例组之前,请确保它按预期工作。

首先,检查测试实例是否正确设置并通过使用DescribeInstanceInformation API连接到该服务。 这将返回有关代理的状态、代理运行的平台以及其他实例信息。

aws ssm describe-instance-information --filters "Key=InstanceIds,Values=i-01222ecf7db201ca2"
{
    "InstanceInformationList": [
        {
            "IsLatestVersion": false, 
            "ComputerName": "ip-172-31-24-177.us-west-1.compute.internal", 
            "PingStatus": "Online", 
            "InstanceId": "i-01222ecf7db201ca2", 
            "IPAddress": "172.31.24.177", 
            "ResourceType": "EC2Instance", 
            "AgentVersion": "2.0.755.0", 
            "PlatformVersion": "2017.03", 
            "PlatformName": "Amazon Linux AMI", 
            "PlatformType": "Linux", 
            "LastPingDateTime": 1492637593.888
        }
    ]
}

接下来,使用先前创建的文档向上述实例发送命令

aws ssm send-command --document-name "InstanceDiagnostics" --instance-ids "i-01222ecf7db201ca2" 
{
    "Command": {
        "Comment": "", 
        "Status": "Pending", 
        "MaxErrors": "0", 
        "Parameters": {}, 
        "ExpiresAfter": 1492645288.475, 
        "ServiceRole": "", 
        "DocumentName": "InstanceDiagnostics", 
        "TargetCount": 1, 
        "OutputS3BucketName": "", 
        "NotificationConfig": {
            "NotificationArn": "", 
            "NotificationEvents": [], 
            "NotificationType": ""
        }, 
        "CompletedCount": 0, 
        "Targets": [], 
        "StatusDetails": "Pending", 
        "ErrorCount": 0, 
        "OutputS3KeyPrefix": "", 
        "RequestedDateTime": 1492638088.475, 
        "CommandId": "11cf0866-fdec-43a4-987b-b7a5f8ad60e9", 
        "InstanceIds": [
            "i-01222ecf7db201ca2"
        ], 
        "MaxConcurrency": "50"
    }
}

最后,检查以确保命令成功完成。

aws ssm list-commands --command-id 11cf0866-fdec-43a4-987b-b7a5f8ad60e9
{
    "Commands": [
        {
            "Comment": "", 
            "Status": "Success", 
            "MaxErrors": "0", 
            "Parameters": {}, 
            "ExpiresAfter": 1492645288.475, 
            "ServiceRole": "", 
            "DocumentName": "InstanceDiagnostics", 
            "TargetCount": 1, 
            "OutputS3BucketName": "", 
            "NotificationConfig": {
                "NotificationArn": "", 
                "NotificationEvents": [], 
                "NotificationType": ""
            }, 
            "CompletedCount": 1, 
            "Targets": [], 
            "StatusDetails": "Success", 
            "ErrorCount": 0, 
            "OutputS3KeyPrefix": "", 
            "RequestedDateTime": 1492638088.475, 
            "CommandId": "11cf0866-fdec-43a4-987b-b7a5f8ad60e9", 
            "InstanceIds": [
                "i-01222ecf7db201ca2"
            ], 
            "MaxConcurrency": "50"
        }
    ]
}

步骤4:用速度控制“命令运行”

现在,您可以将命令发送到您的一组实例。

“运行命令”公开了两个新概念,用于帮助您控制发送命令的速率。 您可以通过使用max-concurrency参数来控制多少个实例同时执行该命令。 您可以指定绝对的实例数,如10,或百分比,如50%。 系统将逐步创建更多的调用(命令和实例ID配对),直到达到最大并发限制,此时它将在创建下一个调用之前等待每个当前调用完成。

第二个参数max-errors允许您指定在“运行命令”停止向其他实例发送命令之前允许的错误数。 像最大并发一样,最大错误可以指定为绝对数或百分比。

向所创建的Auto Scaling组中的所有实例发送命令,举个例子,我们指定max-concurrency为40%、max-errors为100%。 您可以使用自动生成的Auto Scaling组标签,无需任何其他工作。 通过将max-concurrency设置为40%,您可以确保命令不会同时发送到所有实例。 将max-errors设置为100%将确保所有实例都运行命令,即使某些命令调用不成功。

因为您已设置CloudWatch事件通知,所以在命令完成时将会收到通知。 “运行命令”API的输出限制为1200个字符,因此指定一个S3的位置以确保捕获完整的输出。

aws ssm send-command --document-name "InstanceDiagnostics" --target "Key=tag:aws:autoscaling:groupName,Values=RunCommandASG" --max-concurrency 40% --max-errors 100% --output-s3-bucket-name "run-command-blog" --output-s3-key-prefix "diagnostics"
{
    "Command": {
        "Comment": "", 
        "Status": "Pending", 
        "MaxErrors": "100%", 
        "Parameters": {}, 
        "ExpiresAfter": 1492647224.49, 
        "ServiceRole": "", 
        "DocumentName": "InstanceDiagnostics", 
        "TargetCount": 0, 
        "OutputS3BucketName": "run-command-blog", 
        "NotificationConfig": {
            "NotificationArn": "", 
            "NotificationEvents": [], 
            "NotificationType": ""
        }, 
        "CompletedCount": 0, 
        "Targets": [
            {
                "Values": [
                    "RunCommandASG"
                ], 
                "Key": "tag:aws:autoscaling:groupName"
            }
        ], 
        "StatusDetails": "Pending", 
        "ErrorCount": 0, 
        "OutputS3KeyPrefix": "diagnostics", 
        "RequestedDateTime": 1492640024.49, 
        "CommandId": "666b0ea2-0004-4352-bddc-ac212e0e4090", 
        "InstanceIds": [], 
        "MaxConcurrency": "40%"
    }
}

步骤5:验证命令结果

当命令完成后,您将收到一封电子邮件中的SNS通知。

{
    "version": "0",
    "id": "8bb24048-9af4-4f88-a70d-47feba9da26c",
    "detail-type": "EC2 Command Status-change Notification",
    "source": "aws.ssm",
    "account": "040557870006",
    "time": "2017-04-19T22:38:19Z",
    "region": "us-west-1",
    "resources": [
        
    ],
    "detail": {
        "command-id": "666b0ea2-0004-4352-bddc-ac212e0e4090",
        "document-name": "InstanceDiagnostics",
        "requested-date-time": "2017-04-19T22:38:16.105Z",
        "expire-after": "2017-04-20T00:38:16.105Z",
        "output-s3bucket-name": "run-command-blog",
        "output-s3key-prefix": "diagnostics",
        "parameters": "",
        "status": "Success"
    }
}

使用ListCommands API来检查总体的命令状态。 这里会返回一些信息,例如命令的状态、有多少个实例被定位(TargetCount)以及完成了多少个调用(CompletedCount)。

aws ssm list-commands --command-id 666b0ea2-0004-4352-bddc-ac212e0e4090 
{
    "Commands": [
        {
            "Comment": "", 
            "Status": "Success", 
            "MaxErrors": "100%", 
            "Parameters": {}, 
            "ExpiresAfter": 1492647224.49, 
            "ServiceRole": "", 
            "DocumentName": "InstanceDiagnostics", 
            "TargetCount": 5, 
            "OutputS3BucketName": "run-command-blog", 
            "NotificationConfig": {
                "NotificationArn": "", 
                "NotificationEvents": [], 
                "NotificationType": ""
            }, 
            "CompletedCount": 5, 
            "Targets": [
                {
                    "Values": [
                        "RunCommandASG"
                    ], 
                    "Key": "tag:aws:autoscaling:groupName"
                }
            ], 
            "StatusDetails": "Success", 
            "ErrorCount": 0, 
            "OutputS3KeyPrefix": "diagnostics", 
            "RequestedDateTime": 1492640024.49, 
            "CommandId": "666b0ea2-0004-4352-bddc-ac212e0e4090", 
            "InstanceIds": [], 
            "MaxConcurrency": "40%"
        }
    ]
}

现在,您需要从指定实例收集的诊断信息。 使用GetCommandInvocation API。 这里会返回命令的输出,包括有关命令执行的更多详细信息,如开始执行时间以及执行了多久。

aws ssm get-command-invocation --command-id 666b0ea2-0004-4352-bddc-ac212e0e4090 --instance-id i-01222ecf7db201ca2
{
    "Comment": "", 
    "ExecutionElapsedTime": "PT0.004S", 
    "ExecutionEndDateTime": "2017-04-19T22:13:47.122Z", 
    "StandardErrorContent": "", 
    "InstanceId": "i-01222ecf7db201ca2", 
    "StandardErrorUrl": "https://s3-us-west-1.amazonaws.com/run-command-blog/diagnostics/666b0ea2-0004-4352-bddc-ac212e0e4090/i-01222ecf7db201ca2/awsrunShellScript/0.diagnose/stderr", 
    "DocumentName": "InstanceDiagnostics", 
    "StandardOutputContent": "eth0      Link encap:Ethernet  HWaddr 02:9B:C5:26:4B:00  \n          inet addr:172.31.24.177  Bcast:172.31.31.255  Mask:255.255.240.0\n          inet6 addr: fe80::9b:c5ff:fe26:4b00/64 Scope:Link\n          UP BROADCAST RUNNING MULTICAST  MTU:9001  Metric:1\n          RX packets:9905 errors:0 dropped:0 overruns:0 frame:0\n          TX packets:3260 errors:0 dropped:0 overruns:0 carrier:0\n          collisions:0 txqueuelen:1000 \n          RX bytes:11135049 (10.6 MiB)  TX bytes:514905 (502.8 KiB)\n\nlo        Link encap:Local Loopback  \n          inet addr:127.0.0.1  Mask:255.0.0.0\n          inet6 addr: ::1/128 Scope:Host\n          UP LOOPBACK RUNNING  MTU:65536  Metric:1\n          RX packets:2 errors:0 dropped:0 overruns:0 frame:0\n          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0\n          collisions:0 txqueuelen:1 \n          RX bytes:140 (140.0 b)  TX bytes:140 (140.0 b)\n\n", 
    "Status": "Success", 
    "StatusDetails": "Success", 
    "PluginName": "diagnose", 
    "ResponseCode": 0, 
    "ExecutionStartDateTime": "2017-04-19T22:13:47.122Z", 
    "CommandId": "666b0ea2-0004-4352-bddc-ac212e0e4090", 
    "StandardOutputUrl": "https://s3-us-west-1.amazonaws.com/run-command-blog/diagnostics/666b0ea2-0004-4352-bddc-ac212e0e4090/i-01222ecf7db201ca2/awsrunShellScript/0.diagnose/stdout"

最后,因为你设置了一个S3存储桶,所有的命令调用的输出结束将保存在你指定的 S3的位置。

结论

在本文中,展示了如何使用“运行命令”以及其他AWS服务来对一组实例执行管理操作。“运行命令”提供了一种简单且可扩展的方式来管理您的实例。 您可以控制发送命令的速率,使用细粒度的权限,并使用通知来简化工作流程。

关于作者

Emily Freebairn是亚马逊EC2系统管理团队的软件开发工程师。 她已经在亚马逊工作了四年,从事Amazon EC2和系统管理器的“运行命令”和其他功能。 在工作之余,她喜欢帆船和跳舞。

在 AWS Twitch 频道上推出 GameDay Essentials 节目

假设您在 Unicorn.Rentals 得到一个新的职位,这是一家专注于传奇动物租赁市场 (LARM) 的公司。如果有机会的话,哪个孩子不愿意用任何东西来交换与独角兽的亲密接触?哪个父母会拒绝让孩子开心的机会?让我们估计这一年就是 2017 年,而 Unicorn.Rentals 继续在动物租赁市场占主导地位。

您即将进入另一个维度,一个像太空一样广袤无垠、永恒无限的维度 。它是光与影、科学与迷信的中间地带,在人类了解云之前就已经存在。这是进入一个充满想象力的土地、一个由影子和物质组成的土地的奇妙之旅。您正在进入 GameDay Essentials 地带。

好吧,也许不是另一个维度,但差不多一样酷。有点像不是吗?总之,我很高兴在 AWS Twitch 频道上推出名为 GameDay Essentials 的全新节目。GameDay Essentials 节目是针对前面提到的 Unicorn.Rentals 公司场景的“新员工培训计划”。您将作为一名新员工入职并接受有关云计算的培训,以便在使用 Amazon Web Services 的公司顺利开展工作。

通过 GameDay Essentials 节目,您将获得实践计算经验,以帮助 Unicorn.Rentals 这家初创公司不断发展。第一集重建于 7 月 25 日首播,提供了有关 CloudTrailCloudwatch 的日志记录服务,以及如何评估 AWS 账户中的配置并识别账户中的现有库存资源的信息。您可以在这里观看第 1 集 – 重建的录像。该剧集共分六部分,第一季其余部分的播出时间是太平洋时间星期二上午 11:30,接下来的三集将讨论以下主题:

  • 第 2 集 – 扩展:了解如何通过深入研究实施缩放技术和 Auto Scaling 组的方法来扩展应用程序基础设施。8 月 1 日播出
  • 第 3 集 – 改变:引用了温斯顿·丘吉尔 (Winston Churchill) 的话,“提高就是要改变,而要达到完美就要不断改变”。这一集的 GameDay 是关于将改变作为成功的关键要素进行管理。您将学习如何使用本机 AWS 安全和部署工具来跟踪和管理变更,并讨论如何处理团队动态的变化。8 月 8 日播出
  • 第 4 集 – 分离:技术行业的大多数人都明白,您应该避免创建紧密耦合的系统。因此,您将发现松散耦合的系统如何运行,并了解如何诊断这些系统可能发生的任何故障。8 月 15 日播出

总结

我们最新的节目 GameDay Essentials 旨在帮助您“加入游戏”,并了解有关云计算和 AWS 平台的更多信息。GameDay Essentials 加入了我们已经每周在 AWS Twitch 频道上推出的其他现场编码节目:Live Coding with AWSAWS Maker Studio

敬请每周观看 AWS Twitch 频道以访问另一个维度:声音的维度、景象的维度、云的维度。这是一个充满想象力的维度,一个我们称为 GameDay Essentials 地带的区域。获得它,就像《阴阳魔界》一样,还没有得到?哦,那就看看 AWS Twitch 频道上的 GameDay Essentials 节目吧,它是一个介绍 AWS 云计算的非常不错的交互式学习资源,尽情享受学习的乐趣吧。

Tara