亚马逊AWS官方博客

使用 WorkSpaces Cost Optimizer 自动优化 WorkSpaces 使用成本

背景介绍

Amazon WorkSpaces是在AWS上运行的完全托管、安全的桌面即服务(DaaS)解决方案。借助Amazon WorkSpaces,您可以为团队成员轻松配置云桌面,使他们可以随时随地访问所需的文档、应用程序和资源。Amazon WorkSpaces提供两种不同的付费选项:AlwaysOn(按月计费)和AutoStop(按小时计费,不使用一定时间自动关闭),每一台WorkSpaces根据使用情况选择相应的付费选项会更加节省成本。

为了帮助不便预测WorkSpace使用模式的客户监控WorkSpaces使用情况并优化成本,AWS提供了Amazon WorkSpaces Cost Optimizer,来分析您所有WorkSpace的使用情况数据,并自动将WorkSpace转换为最具成本效益的计费选项(每小时或每月一次)。本文将向您介绍如何在AWS中国区部署WorkSpaces成本优化方案,以及这个方案的工作原理。

 

架构与工作原理

1.架构图与资源

部署此解决方案将在AWS 中国区域中构建以下环境。

 

2.架构描述

本方案中AWS CloudFormation模板会创建一个Amazon CloudWatch规则,然后定时触发AWS Lambda调用包含Python脚本的AWS Fargate遍历AWS Directory Service寻找Amazon WorkSapces及其用量,并根据规则调整每台WorkSpaces的使用模式,将结果生成日志存放到Amazon S3中。整个过程皆采用无服务化架构,只在运行时收取小部分费用,每月的成本不到一块。

 

3.服务细节解读

AWS CloudFormation模板会创建一个Amazon CloudWatch规则,这是一个定时任务,每24小时运行一次(默认是在UTC+0时间的每天23:55),调用Amazon WorkSpaces Cost Optimize AWS Lambda函数。您可以在CloudWatch Rules页面中看到这个任务。

Lambda函数利用Amazon Elastic Container Service(Amazon ECS)创建AWS Fargate任务,任务包含两个主要部分:

  1. 轮询AWS Directory Service,来收集在每个AWS区域中为Amazon WorkSpaces注册的所有目录的列表。
  2. 检查按小时计费模型的每个WorkSpace的总使用量。如果已达到每月使用量阈值,则将这个WorkSpace转换为按月计费。

Fargate任务执行的结果会记录在S3存储桶CostOptimizerBucket中,包括统计的每个WorkSpace运行情况和执行转换的记录,便于您查询和分析。

 

4.运行周期

  • Lambda 函数:每天运行一次,定时由CloudWatch触发。
  • Fargate 任务:每天运行一次,由Lambda函数启动;具体的转换任务根据判定结果执行。
  • S3 结果日志:每天产生一个以日期命名的文件夹,其中每一个文件代表一个区域中的WorkSpaces扫描结果。

 

5.成本优化策略

针对每一台WorkSpace:

  • 每天运行一次的Fargate任务都会检查这台WorkSpace的本月使用时间和付费模式,如果这台WorkSpace是按小时计费模式,并且使用率高于阀值(您可以修改设置的成本均衡点),这个解决方案会自动将这台WorkSpace从按小时计费(Auto-Stop)转换为按月计费(Always On)。监控数据和转换操作会被记录在S3中。
  • 在每个月结束时,如果这台WorkSpace是按月计费模式,并且本月的用量没有达到阀值,这个解决方案会下个月月初时自动将这台WorkSpace从按月计费(Always On)转换为按小时计费(Auto-Stop)。

* 以上自动执行的成本优化策略都是在【Dry Run Mode】设置为No的时候执行的,您也可以将【Dry Run Mode】设置为Yes,监控一段时间,寻找您认为更合理的成本优化平衡点,更精细地控制成本。

*您也可以使用标签键【Skip_Convert】和任何标签值将资源标签应用于指定的WorkSpace,对于您标记的WorkSpace,此解决方案也将只进行记录、不自动转换。

 

快速部署WorkSpaces成本优化方案

本文的步骤主要针对在AWS中国区使用WorkSpaces,您可以使用以下链接快速启动一个CloudFormation堆栈来部署和管理整个方案:

https://console.amazonaws.cn/cloudformation/home?region=cn-northwest-1#/stacks/new?stackName=WorkSpacesCostOptimizer&templateURL=https://aws-solutions-reference.s3.cn-north-1.amazonaws.com.cn/workspaces-cost-optimizer/v2.2/workspaces-cost-optimizer.template

 

如果您在AWS全球区使用WorkSpaces,可以使用以下链接快速启动全球区的CloudFormation解决方案来实现全球各区域的WorkSpaces成本优化:https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/new?stackName=WorkSpacesCostOptimizer&templateURL=https:%2F%2Fs3.amazonaws.com%2Fsolutions-reference%2Fworkspaces-cost-optimizer%2Flatest%2Fworkspaces-cost-optimizer.template,以及参考全球区方案的使用说明:https://aws.amazon.com/cn/solutions/amazon-workspaces-cost-optimizer/

1. 开始启动堆栈

点击以上中国区域链接,打开AWS管理控制台(如果还没登录会先跳转到登录页面,登录后进入模板启动页面)。默认情况下,此模板在宁夏区启动,以节约成本,您同时可以使用控制台右上方的区域选择链接在其他的区域启动此方案。

 

2. 配置启动参数

点击下一步,进入详细参数的配置页面,在这里,我们特别强调一下【Launch in Dry Run Mode】,Dry Run Mode(监控模式)代表只收集数据,不自动做调整,如果您希望使用本方案先观察一下您的WorkSpaces资源使用情况,自己手动调整或在调整参数后改为自动调整模式的话,可以保留默认值Yes。在第一次启动时,建议您将【 Launch in Dry Run Mode? 】这个参数设置为No,其他参数保留默认值,这样成本优化解决方案就会根据您的WorkSpaces的使用情况结合自己的默认参数自动调整您的WorkSpaces付费选项,来实现成本优化。

配置图例如下:

 

下表展示的是每一项参数的含义,这些参数随时可以更新。

参数 默认 描述
1 Launch in Dry Run Mode? Yes 设置为Yes的时候只生成更改日志,但不执行任何更改。设置为No的时候会在生成更改日志的同时,执行计费选项的自动转换。
2 Simulate End of Month No 覆盖日期并强制解决方案像月底一样运行
3 Log Level INFO 设置CloudWatch中Lambda函数日志的日志级别
判断阈值设定
4 Value Limit 81 Value类型WorkSpace在转换为按月计费(Always On)之前可以在一个月中运行的小时数
5 Standard Limit 85 标准类型WorkSpace在转换为按月计费(Always On)之前可以在一个月中运行的小时数
6 Performance Limit 83 Performance类型WorkSpace在转换为按月计费(Always On)之前可以在一个月中运行的小时数
7 Power Limit 83 Power类型WorkSpace在转换为按月计费(Always On)之前可以在一个月中运行的小时数
8 Graphics Limit 217 Graphics类型WorkSpace在转换为按月计费(Always On)之前可以在一个月中运行的小时数(宁夏区暂不支持Graphics,这个参数目前没有意义,但不影响模板运行)
9 PowerPro Limit 80 PowerPro类型WorkSpace在转换为按月计费(Always On)之前可以在一个月中运行的小时数
10 GraphicsPro Limit 80 GraphicsPro类型WorkSpace在转换为按月计费(Always On)之前可以在一个月中运行的小时数(宁夏区暂不支持GraphicsPro,这个参数目前没有意义,但不影响模板运行)
本方案运行网络设置:
11 VPC CIDR 10.215.0.0/16 解决方案用于动态部署AWS Fargate容器的VPC
12 Subnet1 CIDR 10.215.10.0/24 部署AWS Fargate容器的不同可用区中的两个子网之一
13 Subnet2 CIDR 10.215.20.0/24 部署AWS Fargate容器的不同可用区中的两个子网之二

 

参数设置完成后,点击下一步,并在下一步的配置堆栈选项保留默认,直接点击下一步。

3. 授权IAM并创建堆栈

在最后的审核页面中,勾选最下方的【我确认,AWS CloudFormation 可能创建IAM资源。】选择框,因为这个解决方案需要调用CloudWatch、Lambda、ECS Fargate等资源,需要相应的IAM权限支持。接下来点击【创建堆栈】,开始堆栈的创建。

 

4. 等待堆栈创建成功

您可以在AWS CloudFormation控制台的【状态】列中查看堆栈的状态,并点击右上方的刷新按钮更新状态。

 

大约五分钟内,您可以看到堆栈状态变为CREATE_COMPLETE,此时堆栈创建成功。

 

 

5. 查看堆栈资源

选中堆栈后短则【资源】标签,可以看到这个堆栈启动的所有资源,如果您感兴趣可以一一点进去查看,了解每一部分的功能。这里建议您查看的是S3存储桶中保存的日志,可以搜索S3看到两个存储桶,其中CostOptimizerBucket这个存储桶中存储每天扫描您的WorkSpaces资源之后留下的分析结果,以及执行转换的记录,您可以点击链接跳转到存储桶页面,定期查看其中的内容,了解您WorkSpaces资源的使用情况,已经此解决方案的执行记录。

 

小结

综上所述,使用Amazon WorkSpaces Cost Optimizer解决方案,可以监控和自动管理您的所有中国区WorkSpaces的付费选项,从而在轻松使用远程桌面产品的同时优化成本,让您的云上办公轻松而敏捷。

 

参考资料

  1. Amazon WorkSpaces Cost Optimizer方案介绍:https://aws.amazon.com/cn/solutions/amazon-workspaces-cost-optimizer/
  2. Amazon WorkSpaces Cost Optimizer文档:https://docs.aws.amazon.com/solutions/latest/workspaces-cost-optimizer/welcome.html
  3. Amazon WorkSpaces文档:https://docs.aws.amazon.com/zh_cn/workspaces/latest/adminguide/amazon-workspaces.html
  4. AWS CloudFormation 文档:
    https://docs.aws.amazon.com/cloudformation/index.html
  5. AWS Lambda 文档:
    https://docs.aws.amazon.com/zh_cn/lambda/index.html
  6. Amazon CloudWatch 文档:https://docs.aws.amazon.com/cloudwatch/index.html
  7. AWS Fargate介绍:
    https://aws.amazon.com/cn/fargate/

 

Remove term: 成本优化,DaaS 成本优化

本篇作者

李思源

AWS解决方案架构师,负责基于 AWS 的云计算方案的咨询与架构设计,同时致力于 AWS 云服务知识体系的传播与普及。在网络、软件开发等领域有实践经验,加入AWS 之前曾任软件开发工程师、Scrum master、项目经理等角色,PMI认证PMP。目前关注游戏、高性能计算等领域。