文档首页> 函数工作流 FunctionGraph> 最佳实践> 定时开关华为公有云虚拟机
更新时间:2024-03-26 GMT+08:00

定时开关华为公有云虚拟机

应用场景

当您需要在特定时间打开或者关闭华为公有云虚拟机时,可以考虑通过函数服务调用华为云ECS接口,定时开关虚拟机。

  • 开机节点:需要定时打开的虚拟机。
  • 关机节点:需要定时关闭的虚拟机。

前提条件

  1. 根据实际业务,获取定时开启华为公有云虚拟机的程序包或者定时关闭华为公有云虚拟机的程序包
  2. 创建委托EcsOperation,添加“ECS FullAccess”权限,请参考创建委托

创建委托

  1. 登录统一身份认证服务控制台
  2. 在统一身份认证服务的左侧导航窗格中,选择“委托”页签,单击右上方的“+创建委托”。
    图1 创建委托
  3. 开始配置委托。
    • 委托名称:EcsOperation。
    • 委托类型:选择“云服务”。
    • 云服务:选择“函数工作流 FunctionGraph”。
    • 持续时间:选择“永久”。
    • 描述:填写描述信息。
  4. 单击“下一步”,进入委托选择页面,在右方搜索框中搜索“ECS FullAccess”权限并勾选。
    图2 选择权限
  5. 单击“下一步”,请根据业务需要选择权限的作用范围。

构建程序

  1. 创建功能函数。

    创建定时开启或者关闭华为公有云虚拟机的函数,上传定时开启华为公有云虚拟机的程序包或者定时关闭华为公有云虚拟机的程序包,并选择创建的委托EcsOperation。创建过程请参考创建函数

    运行时语言选择“Python3.6”,委托名称选择上一步创建的委托“EcsOperation”。

  2. 设置环境变量。

    在“配置”页签配置环境变量,说明如表1所示。

    表1 环境变量说明

    环境变量

    说明

    region

    ECS所在的区域,如ap-southeast-1

    projectId

    ECS所在的Project ID,获取方法请参见获取项目ID

    whiteLists

    • 当定时开启华为公有云虚拟机时,填写需开启的虚拟机ID,以英文逗号分隔
    • 当定时关闭华为公有云虚拟机时,填写需关机的虚拟机ID,以英文逗号分隔

    type

    仅需在定时关机时确认是否需要配置。

    关机类型:

    SOFT:普通关机(默认)

    HARD:强制关机

    环境变量的设置过程请参考使用环境变量

    • 本案例对函数执行的区域没有要求,若函数和待开关机节点在同一region,按照上述操作即可。若函数和待开关机节点不在同一region,如函数运行在中国-香港,想要开启或者关闭亚太-曼谷的弹性云服务的虚拟机,只需要将projectId、region更改为亚太-曼谷区域的信息,并在环境变量中添加ak、sk(获取AK/SK),再去掉配置的委托即可。
      • AK/SK认证就是使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而通过身份认证。
      • AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。
      • SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。

    • 如果开启或者关闭的虚拟机数量过多,则需要增大超时时间。
    • 表1中除whiteLists以外的环境变量必须添加,whiteLists根据实际情况选择添加或者不添加,whiteLists为需开机/关机的ecs服务器ID,以逗号分隔。
    • {region}.{domain}组成ECS的终端节点Endpoint,如:ap-southeast-1.myhuaweicloud.com,具体Endpoint信息,请参考地区和终端节点

  3. 选择依赖包。

    在“代码”页签,添加“huaweicloudsdk_ecs_core_py3.6”依赖包。

    添加依赖包详细操作请参见配置函数依赖

    如果您所在区域无法添加“huaweicloudsdk_ecs_core_py3.6”依赖包,请联系客服具体咨询。

添加事件源

创建TIMER触发器,TIMER触发器配置如图3所示。
图3 创建TIMER触发器