背景
在一些场景下,根据实例的使用需求变化需要将包年包月转按量付费或者按量付费转包年包月。针对批量实例的场景,一台一台手动操作不仅效率低下还容易出错。本文将介绍通过系统运维管理执行的方式批量修改ECS实例的计费方式。ECS实例的计费方式主要有两种,包年包月和按量付费。
前提条件
操作步骤
登录系统运维管理管理控制台。
单击公共模板。
选择批量修改实例的计费方式,对其单击创建执行。
单击下一步,设置参数。
输入以下的参数:
instanceChargeType:实例需要修改的目标计费方式
period:(按量计费转包年包月时必填) 续费时长。PeriodUnit=Week时,Period取值:1~4,PeriodUnit=Month时,Period取值:1~12,24, 36, 48, 60。
periodUnit:(按量计费转包年包月时必填) 续费时长的时间单位
includeDataDisks:(按量计费转包年包月时必填) 是否将实例挂载的所有按量付费数据盘一起转换为包年包月数据盘
networkChargeType:网络需要修改的目标计费方式
regionId:地域ID
targets:目标实例
rateControl:(选填) 任务执行的并发比率
OOSAssumeRole:(选填) OOS扮演的RAM角色
单击下一步:确认,单击确认风险并执行。
在执行管理中可查看刚刚创建的执行,若创建执行成功,且执行状态处于运行中,则表示修改ECS实例的计费方式正在进行中。
当执行状态转换为成功时,则表示修改ECS实例的计费方式成功。可以在ECS实例页面查看修改后的计费方式。
如需更多了解修改ECS实例的计费方式过程,当创建执行成功后,您可单击该执行的详情,查看执行日志,实时了解执行的进度和状态。
附录
公共模板 ACS-ECS-BulkyModifyInstanceChargeType
FormatVersion: OOS-2019-06-01
Description:
en: Bulky modify instance charge type
zh-cn: 批量修改实例的计费方式
name-en: ACS-ECS-BulkyModifyInstanceChargeType
name-zh-cn: 批量修改实例的计费方式
categories:
- instance_manage
Parameters:
regionId:
Type: String
Label:
en: RegionId
zh-cn: 地域ID
AssociationProperty: RegionId
Default: '{{ ACS::RegionId }}'
targets:
Type: Json
Label:
en: TargetInstance
zh-cn: 目标实例
AssociationProperty: Targets
AssociationPropertyMetadata:
ResourceType: ALIYUN::ECS::Instance
RegionId: regionId
instanceChargeType:
Label:
en: InstanceChargeType
zh-cn: 实例需要修改的目标计费方式
Type: String
AllowedValues:
- PostPaid
- PrePaid
Default: PostPaid
periodUnit:
Label:
en: PeriodUnit
zh-cn: 续费时长的时间单位
Type: String
AllowedValues:
- Week
- Month
Default: Month
AssociationPropertyMetadata:
Visible:
Condition:
Fn::Not:
Fn::Equals:
- ${instanceChargeType}
- PostPaid
period:
Description:
en: The period of the instance
zh-cn: PeriodUnit=Week时,Period取值:1~4,PeriodUnit=Month时,Period取值:1~12,24, 36, 48, 60
Label:
en: Period
zh-cn: 续费时长
Type: Number
Default: 1
AssociationPropertyMetadata:
Visible:
Condition:
Fn::Not:
Fn::Equals:
- ${instanceChargeType}
- PostPaid
includeDataDisks:
Description:
en: Specifies whether to change the billing method of all data disks attached to the instance from pay-as-you-go to subscription
zh-cn: 是否将实例挂载的所有按量付费数据盘一起转换为包年包月数据盘
Label:
en: IncludeDataDisks
zh-cn: 是否转换数据盘
Type: Boolean
Default: false
AssociationPropertyMetadata:
Visible:
Condition:
Fn::Not:
Fn::Equals:
- ${instanceChargeType}
- PostPaid
networkChargeType:
Label:
en: NetworkChargeType
zh-cn: 网络需要修改的目标计费方式
Type: String
AllowedValues:
- PayByBandwidth
- PayByTraffic
- ''
Default: PayByTraffic
rateControl:
Label:
en: RateControl
zh-cn: 任务执行的并发比率
Type: Json
AssociationProperty: RateControl
Default:
Mode: Concurrency
MaxErrors: 0
Concurrency: 10
OOSAssumeRole:
Label:
en: OOSAssumeRole
zh-cn: OOS扮演的RAM角色
Type: String
Default: OOSServiceRole
RamRole: '{{ OOSAssumeRole }}'
Tasks:
- Name: getInstance
Description:
en: Views the ECS instances
zh-cn: 获取ECS实例
Action: ACS::SelectTargets
Properties:
ResourceType: ALIYUN::ECS::Instance
RegionId: '{{ regionId }}'
Filters:
- '{{ targets }}'
Outputs:
instanceIds:
Type: List
ValueSelector: Instances.Instance[].InstanceId
- Name: modifyInstanceChargeType
Description:
en: Modify instance charge type
zh-cn: 修改实例计费方式
Action: ACS::ECS::ModifyInstanceChargeType
Properties:
regionId: '{{ regionId }}'
instanceId: '{{ ACS::TaskLoopItem }}'
instanceChargeType: '{{ instanceChargeType }}'
networkChargeType: '{{ networkChargeType }}'
period: '{{ period }}'
periodUnit: '{{ periodUnit }}'
includeDataDisks: '{{ includeDataDisks }}'
Loop:
RateControl: '{{ rateControl }}'
Items: '{{ getInstance.instanceIds }}'
Metadata:
ALIYUN::OOS::Interface:
ParameterGroups:
- Parameters:
- instanceChargeType
- period
- periodUnit
- includeDataDisks
- networkChargeType
Label:
default:
zh-cn: 计费方式参数选择
en: Choose the parameter of instnace charge type
- Parameters:
- regionId
- target
Label:
default:
zh-cn: 选择实例
en: Select ECS Instances
- Parameters:
- rateControl
- OOSAssumeRole
Label:
default:
zh-cn: 高级选项
en: Control Options