テンプレート名
ACS-ESS-LifeCycleModifyInstanceChargeType:ライフサイクルフックを使用してインスタンスの課金方法を変更します (スケールアウトアクティビティのみ)
テンプレートの説明
ライフサイクルフックを使用してインスタンスの課金方法を変更します。このテンプレートは、スケールアウトアクティビティのみをサポートします。
テンプレートタイプ
自動化
所有者
Alibaba Cloud
入力パラメーター
パラメーター | 説明 | データ型 | 必須 | デフォルト値 | 制限 |
instanceChargeType | インスタンスの新しい課金方法。 | String | いいえ | PostPaid | |
periodUnit | インスタンスの更新期間の単位。 | String | いいえ | Month | |
period | 更新期間。 | Number | いいえ | 1 | |
includeDataDisks | インスタンスにアタッチされているデータディスクの課金方法を変更するかどうかを指定します。 | Boolean | いいえ | False | |
autoRenew | インスタンスの有効期限が切れる前に自動的に更新するかどうかを指定します。 | ブール値 | いいえ | 偽 | |
networkChargeType | ネットワークの新しい課金方法。 | String | いいえ | PayByTraffic | |
lifecycleActionResult | ライフサイクルフックの待機状態が終了した後に実行する操作。 | String | いいえ | ${lifecycleActionResult} | |
regionId | リージョン ID。 | 文字列 | いいえ | ${regionId} | |
instanceIds | ECS インスタンス ID のリスト。 | リスト | いいえ | ${instanceIds} | |
OOSAssumeRole | OOS RAM ロール | 文字列 | いいえ | "" | |
rateControl | 同時タスク実行のレート | JSON | いいえ | {'Mode': 'Concurrency', 'MaxErrors': 0, 'Concurrency': 10} | |
lifecycleActionToken | インスタンスに関連付けられたスケーリングアクティビティのトークンです。 | String | いいえ | ${lifecycleActionToken} | |
OOSAssumeRole | OOS が引き受ける RAM ロール。 | 文字列 | いいえ | "" |
出力パラメーター
該当なし。
テンプレートの実行に必要な権限ポリシー
{
"Version": "1",
"Statement": [
{
"Action": [
"ecs:DescribeInstances",
"ecs:ModifyInstanceAutoRenewAttribute",
"ecs:ModifyInstanceChargeType",
"ecs:ModifyInstanceNetworkSpec"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"ess:CompleteLifecycleAction"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
詳細
ACS-ESS-LifeCycleModifyInstanceChargeType
テンプレートコンテンツ
FormatVersion: OOS-2019-06-01
Description:
ja: スケールアウトアクティビティ中にライフサイクルフックを使用してインスタンスの課金方法を変更します。
name-ja: ACS-ESS-LifeCycleModifyInstanceChargeType
categories:
- elastic_manage
Parameters:
instanceChargeType:
Label:
ja: インスタンスの課金方法
Type: String
AllowedValues:
- PostPaid
- PrePaid
Default: PostPaid
periodUnit:
Label:
ja: 期間単位
Type: String
AllowedValues:
- Week
- Month
Default: Month
AssociationPropertyMetadata:
Visible:
Condition:
Fn::Not:
Fn::Equals:
- ${instanceChargeType}
- PostPaid
period:
Description:
ja: インスタンスのサブスクリプション期間です。PeriodUnit が Week の場合、Period の有効値は 1~4 です。PeriodUnit が Month の場合、Period の有効値は 1~12、24、36、48、60 です。
Label:
ja: 更新期間
Type: Number
Default: 1
AssociationPropertyMetadata:
Visible:
Condition:
Fn::Not:
Fn::Equals:
- ${instanceChargeType}
- PostPaid
includeDataDisks:
Description:
ja: インスタンスにアタッチされているすべてのデータディスクの課金方法を従量課金からサブスクリプションに変更するかどうかを指定します。
Label:
ja: データディスクの変換
Type: Boolean
Default: false
AssociationPropertyMetadata:
Visible:
Condition:
Fn::Not:
Fn::Equals:
- ${instanceChargeType}
- PostPaid
autoRenew:
Description:
ja: インスタンスの有効期限が切れる前に自動更新するかどうかを指定します。
Label:
ja: 有効期限前の自動更新を有効化
Type: Boolean
Default: false
AssociationPropertyMetadata:
Visible:
Condition:
Fn::Not:
Fn::Equals:
- ${instanceChargeType}
- PostPaid
networkChargeType:
Label:
ja: ネットワークの課金方法
Type: String
AllowedValues:
- PayByBandwidth
- PayByTraffic
Default: PayByTraffic
lifecycleActionResult:
Label:
ja: ライフサイクルフック待機状態終了後の次のアクション
Description:
ja: コマンドが失敗した場合に、ライフサイクルフックの待機状態が終了した後の次のアクション。
Type: String
AllowedValues:
- ABANDON
- ROLLBACK
- CONTINUE
Default: ABANDON
regionId:
Label:
ja: リージョン ID
Description:
ja: リージョン ID です。Auto Scaling のデフォルト値 ${regionId} を使用します。
Type: String
Default: ${regionId}
instanceIds:
Label:
ja: ECS インスタンス ID のリスト
Description:
ja: Elastic Compute Service (ECS) インスタンス ID のリストです。Auto Scaling のデフォルト値 ["${instanceId}"] を使用します。
Type: List
Default:
- ${instanceIds}
lifecycleHookId:
Label:
ja: ライフサイクルフック ID
Description:
ja: ライフサイクルフックの ID です。Auto Scaling のデフォルト値 ${lifecycleHookId} を使用します。
Type: String
Default: ${lifecycleHookId}
rateControl:
Label:
ja: タスク実行の同時実行率
Type: Json
AssociationProperty: RateControl
Default:
Mode: Concurrency
MaxErrors: 0
Concurrency: 10
lifecycleActionToken:
Label:
ja: インスタンスに関連付けられたスケーリングアクティビティのトークン
Description:
ja: インスタンスに関連付けられた特定のスケーリングアクティビティを示すトークンです。Auto Scaling のデフォルト値 ${lifecycleActionToken} を使用します。
Type: String
Default: ${lifecycleActionToken}
OOSAssumeRole:
Label:
ja: OOS が引き受ける RAM ロール
Type: String
Default: ''
RamRole: '{{ OOSAssumeRole }}'
Tasks:
- Name: sleepTask
Action: ACS::Sleep
Properties:
Duration: 10s
- Name: modifyInstanceChargeType
OnError: CompleteLifecycleActionForAbandon
Description:
ja: インスタンスの課金方法を変更します。
Action: ACS::ECS::ModifyInstanceChargeType
Properties:
regionId: '{{ regionId }}'
instanceId: '{{ ACS::TaskLoopItem }}'
instanceChargeType: '{{ instanceChargeType }}'
networkChargeType: '{{ networkChargeType }}'
period: '{{ period }}'
periodUnit: '{{ periodUnit }}'
includeDataDisks: '{{ includeDataDisks }}'
Loop:
Items: '{{ instanceIds }}'
RateControl: '{{ rateControl }}'
- Name: modifyInstanceAutoRenewAttribute
OnError: CompleteLifecycleActionForAbandon
OnSuccess: CompleteLifecycleActionForContinue
Description:
ja: インスタンスの自動更新設定を変更します。
Action: ACS::ECS::ModifyInstanceAutoRenewAttribute
Properties:
regionId: '{{ regionId }}'
instanceId: '{{ ACS::TaskLoopItem }}'
autoRenew: '{{ autoRenew }}'
duration: '{{ period }}'
periodUnit: '{{ periodUnit }}'
Loop:
Items: '{{ instanceIds }}'
RateControl: '{{ rateControl }}'
When:
Fn::Equals:
- '{{ autoRenew }}'
- true
- Name: CompleteLifecycleActionForContinue
Action: ACS::ExecuteAPI
Description:
ja: ライフサイクルアクションを CONTINUE に設定します。
OnSuccess: ACS::END
Properties:
Service: ESS
API: CompleteLifecycleAction
Parameters:
RegionId: '{{ regionId }}'
LifecycleHookId: '{{ lifecycleHookId }}'
LifecycleActionToken: '{{ lifecycleActionToken }}'
LifecycleActionResult: CONTINUE
- Name: CompleteLifecycleActionForAbandon
Action: ACS::ExecuteAPI
Description:
ja: ライフサイクルアクションを ABANDON に設定します。
Properties:
Service: ESS
API: CompleteLifecycleAction
Parameters:
RegionId: '{{ regionId }}'
LifecycleHookId: '{{ lifecycleHookId }}'
LifecycleActionToken: '{{ lifecycleActionToken }}'
LifecycleActionResult: '{{ lifecycleActionResult }}'