すべてのプロダクト
Search
ドキュメントセンター

CloudOps Orchestration Service:コンテナーグループの更新によるローリングアップデート

最終更新日:Jan 17, 2025

テンプレート名

ACS-ESS-RollingUpdateByUpdateContainerGroup

今すぐ実行

テンプレートの説明

スケーリンググループ内の Elastic Container Instance でローリングアップデートを実行するために、コンテナーグループを更新します。

テンプレートタイプ

自動

所有者

Alibaba Cloud

入力パラメーター

パラメーター

説明

タイプ

必須

デフォルト値

制限

invokeType

操作タイプ。

String

はい

scalingGroupId

スケーリンググループ ID。

String

はい

containerConfigure

ローリングアップデートを実行するために使用されるコンテナー構成。

Json

はい

scalingConfigurationId

スケーリング設定 ID。

String

はい

enterProcess

実行前に一時停止されるスケーリングプロセス。

List

いいえ

['ScaleIn', 'ScaleOut', 'HealthCheck', 'AlarmNotification', 'ScheduledAction']

exitProcess

実行後に再開されるスケーリングプロセス。

List

いいえ

['ScaleIn', 'ScaleOut', 'HealthCheck', 'AlarmNotification', 'ScheduledAction']

sourceContainerConfigure

ロールバックを実行するために使用されるコンテナー構成。

Json

いいえ

{}

updateType

コンテナーパラメーターを更新するために使用されるメソッド。

String

いいえ

IncrementalUpdate

sourceExecutionId

ロールバックされる CloudOps Orchestration Service (OOS) 実行の ID。

String

いいえ

""

batchPauseOption

一時停止ポリシー。

String

いいえ

Automatic

batchNumber

バッチ数。

Number

いいえ

5

maxErrors

バッチ実行中に許容される最大エラー数。

Number

いいえ

0

OOSAssumeRole

OOS によってアサインされる Resource Access Management (RAM) ロール。

String

いいえ

""

出力パラメーター

なし

テンプレートを実行するために必要なポリシー

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "ess:DescribeScalingInstances",
                "ess:EnterStandby",
                "ess:ExitStandBy",
                "ess:ModifyEciScalingConfiguration",
                "ess:ResumeProcesses",
                "ess:SuspendProcesses"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "eci:DescribeContainerGroups",
                "eci:UpdateContainerGroup"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "oos:ListExecutions"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

参照

ACS-ESS-RollingUpdateByUpdateContainerGroup

テンプレートコンテンツ

FormatVersion: OOS-2019-06-01
Description:
  en: Rolling update ECI instances in scaling group by update container group
  zh-cn: 通过更新容器组的方式滚动更新伸缩组内的ECI实例
  name-en: ACS-ESS-RollingUpdateByUpdateContainerGroup
  name-zh-cn: 通过更新容器组的方式滚动更新伸缩组内的ECI实例
  categories:
    - elastic_manage
Parameters:
  invokeType:
    Label:
      en: InvokeType
      zh-cn: 操作タイプ
    Type: String
    AllowedValues:
      - invoke
      - rollback
  scalingGroupId:
    Label:
      en: ScalingGroupId
      zh-cn: スケーリンググループ ID
    Type: String
  enterProcess:
    Label:
      en: EnterProcess
      zh-cn: 実行開始時に一時停止するスケーリンググループプロセス
    Type: List
    Default:
      - ScaleIn
      - ScaleOut
      - HealthCheck
      - AlarmNotification
      - ScheduledAction
  exitProcess:
    Label:
      en: ExitProcess
      zh-cn: 実行終了時に再開するスケーリンググループプロセス
    Type: List
    Default:
      - ScaleIn
      - ScaleOut
      - HealthCheck
      - AlarmNotification
      - ScheduledAction
  containerConfigure:
    Label:
      en: ContainerConfigure
      zh-cn: 更新に使用するコンテナー設定
    Type: Json
  sourceContainerConfigure:
    Label:
      en: SourceContainerConfigure
      zh-cn: ロールバックに使用するコンテナー設定
    Type: Json
    Default: {}
  updateType:
    Label:
      en: ContainersUpdateType
      zh-cn: Containers パラメーターの更新方法
    Description:
      en: >-
        <ul class="ul">
          <li class="li">RenewUpdate: Full update, all related parameters need to be filled in when updating. If the parameter is a List, it does not support updating an item individually, and if the parameter is a structure, it does not support updating an internal member individually. </li>
          <li class="li">IncrementalUpdate: Incremental update, when updating, you can only fill in a parameter that needs to be updated, and other related parameters remain unchanged. </li>
        </ul>
      zh-cn: >-
        <ul class="ul">          
           <li class="li">RenewUpdate:全量更新。更新時には、関連するすべてのパラメーターを入力する必要があります。パラメーターがリストの場合、個々の項目を更新することはできません。パラメーターが構造体の場合、個々の内部メンバーを更新することはできません。</li>
           <li class="li">IncrementalUpdate:増分更新。更新時には、更新が必要なパラメーターのみを入力できます。その他の関連パラメーターは変更されません。</li>
        </ul>
    Type: String
    AllowedValues:
      - RenewUpdate
      - IncrementalUpdate
    Default: IncrementalUpdate
  sourceExecutionId:
    Label:
      en: SourceExecutionId
      zh-cn: ロールバックに使用する OOS 実行 ID
    Type: String
    Default: ''
  scalingConfigurationId:
    Label:
      en: ScalingConfigurationId
      zh-cn: スケーリング設定 ID
    Type: String
  batchPauseOption:
    Label:
      en: BatchPauseOption
      zh-cn: バッチモード
    Type: String
    AllowedValues:
      - Automatic
      - FirstBatchPause
      - EveryBatchPause
    Default: Automatic
  batchNumber:
    Label:
      en: BatchNumber
      zh-cn: バッチ実行のバッチ数
    Type: Number
    MinValue: 1
    MaxValue: 100
    Default: 5
  maxErrors:
    Label:
      en: MaxErrors
      zh-cn: バッチ実行の最大エラー回数
    Type: Number
    Default: 0
  OOSAssumeRole:
    Label:
      en: OOSAssumeRole
      zh-cn: OOS がアサインする RAM ロール
    Type: String
    Default: ''
RamRole: '{{ OOSAssumeRole }}'
Tasks:
  - Name: choiceNextTask
    Action: ACS::Choice
    Description:
      en: Choose next task by invoke type
      zh-cn: 実行タイプによって次のタスクを選択します
    Properties:
      DefaultTask: getInstance
      Choices:
        - When:
            Fn::Equals:
              - rollback
              - '{{ invokeType }}'
          NextTask: getExecutionInstanceIds
  - Name: getInstance
    Description:
      en: Get the ECI instances
      zh-cn: ECI インスタンスを取得します
    Action: ACS::ExecuteApi
    Properties:
      Service: ESS
      API: DescribeScalingInstances
      Parameters:
        ScalingGroupId: '{{ scalingGroupId }}'
        LifecycleState: InService
    Outputs:
      instanceIds:
        Type: List
        ValueSelector: ScalingInstances.ScalingInstance[].InstanceId
  - Name: whetherTheScalingGroupInstanceIsEmpty
    Action: ACS::Choice
    Description:
      en: Check whether the instance in the service in the scaling group is empty
      zh-cn: スケーリンググループ内のサービスのインスタンスが空かどうかを確認します
    Properties:
      DefaultTask: whetherToSuspendProcess
      Choices:
        - When:
            Fn::Equals:
              - []
              - '{{ getInstance.instanceIds }}'
          NextTask: modifyScalingConfigurationForInvoke
  - Name: whetherToSuspendProcess
    Action: ACS::Choice
    Description:
      en: Choose next task by process
      zh-cn: プロセス値に基づいて次のタスクを選択します
    Properties:
      DefaultTask: suspendProcess
      Choices:
        - When:
            Fn::Equals:
              - []
              - '{{ enterProcess }}'
          NextTask: invokeByUpdateContainerGroup
  - Name: suspendProcess
    Action: ACS::ExecuteAPI
    Description:
      en: Suspend process
      zh-cn: プロセスを一時停止します
    Properties:
      Service: ESS
      API: SuspendProcesses
      Parameters:
        ScalingGroupId: '{{ scalingGroupId }}'
        Process: '{{ enterProcess }}'
  - Name: invokeByUpdateContainerGroup
    Action: ACS::ESS::UpdateContainerGroup
    Description:
      en: Update Container Group
      zh-cn: コンテナーグループを更新します
    Properties:
      instanceId: '{{ ACS::TaskLoopItem }}'
      scalingGroupId: '{{ scalingGroupId }}'
      containerConfigure: '{{ containerConfigure }}'
      updateType: '{{ updateType }}'
    Loop:
      Items: '{{ getInstance.instanceIds }}'
      BatchPauseOption: '{{ batchPauseOption }}'
      Concurrency:
        Fn::CalculateBatch:
          - '{{ batchNumber }}'
          - '{{ getInstance.instanceIds }}'
  - Name: modifyScalingConfigurationForInvoke
    Action: ACS::ExecuteAPI
    Description:
      en: Modify scaling configuration for invoke
      zh-cn: 更新操作のためにスケーリング設定を変更します
    Properties:
      Service: ESS
      API: ModifyEciScalingConfiguration
      Parameters:
        ScalingConfigurationId: '{{ scalingConfigurationId }}'
        Container: '{{ containerConfigure }}'
        ContainersUpdateType: '{{ updateType }}'
  - Name: whetherToResumeProcessesByGroupInstances
    Action: ACS::Choice
    Description:
      en: Check whether the instance in the service in the scaling group is empty
      zh-cn: スケーリンググループ内のサービスのインスタンスが空かどうかを確認します
    Properties:
      DefaultTask: whetherToResumeProcesses
      Choices:
        - When:
            Fn::Equals:
              - []
              - '{{ getInstance.instanceIds }}'
          NextTask: ACS::END
  - Name: whetherToResumeProcesses
    Action: ACS::Choice
    Description:
      en: Choose next task by process
      zh-cn: プロセス値に基づいて次のタスクを選択します
    Properties:
      DefaultTask: resumeProcesses
      Choices:
        - When:
            Fn::Equals:
              - []
              - '{{ exitProcess }}'
          NextTask: ACS::END
  - Name: resumeProcesses
    Action: ACS::ExecuteAPI
    OnSuccess: ACS::END
    Description:
      en: Resume process
      zh-cn: プロセスを再開します
    Properties:
      Service: ESS
      API: ResumeProcesses
      Parameters:
        ScalingGroupId: '{{ scalingGroupId }}'
        Process: '{{ exitProcess }}'
  - Name: getExecutionInstanceIds
    Action: ACS::ExecuteAPI
    Description:
      en: Get the instance id that has been updated
      zh-cn: 更新されたインスタンス ID を取得します
    Properties:
      Service: OOS
      API: ListExecutions
      Parameters:
        ParentExecutionId: '{{ sourceExecutionId }}'
    Outputs:
      instanceIds:
        Type: List
        ValueSelector: .Executions[].Parameters.instanceId
  - Name: getRollbackProcess
    Action: ACS::ExecuteAPI
    Description:
      en: Get resource parameters
      zh-cn: リソースパラメーターを取得します
    Properties:
      Service: OOS
      API: ListExecutions
      Parameters:
        ExecutionId: '{{ sourceExecutionId }}'
    Outputs:
      enterProcess:
        Type: List
        ValueSelector: Executions[].Parameters.enterProcess[]
      exitProcess:
        Type: List
        ValueSelector: Executions[].Parameters.exitProcess[]
  - Name: suspendProcessWithRollBack
    Action: ACS::ExecuteAPI
    Description:
      en: Suspend process
      zh-cn: プロセスを一時停止します
    Properties:
      Service: ESS
      API: SuspendProcesses
      Parameters:
        ScalingGroupId: '{{ scalingGroupId }}'
        Process: '{{ getRollbackProcess.enterProcess }}'
  - Name: rollbackByUpdateContainerGroup
    Action: ACS::ESS::UpdateContainerGroup
    Description:
      en: Update container group for rollback
      zh-cn: ロールバックのためにコンテナーグループを更新します
    Properties:
      instanceId: '{{ ACS::TaskLoopItem }}'
      scalingGroupId: '{{ scalingGroupId }}'
      containerConfigure: '{{ sourceContainerConfigure }}'
      updateType: '{{ updateType }}'
    Loop:
      Items: '{{ getExecutionInstanceIds.instanceIds }}'
      BatchPauseOption: '{{ batchPauseOption }}'
      Concurrency:
        Fn::CalculateBatch:
          - '{{ batchNumber }}'
          - '{{ getExecutionInstanceIds.instanceIds }}'
  - Name: modifyScalingConfigurationForRollback
    Action: ACS::ExecuteAPI
    Description:
      en: Modify scaling configuration for rollback
      zh-cn: ロールバックのためにスケーリング設定を変更します
    Properties:
      Service: ESS
      API: ModifyEciScalingConfiguration
      Parameters:
        ScalingConfigurationId: '{{ scalingConfigurationId }}'
        Container: '{{ sourceContainerConfigure }}'
        ContainersUpdateType: '{{ updateType }}'
  - Name: whetherToResumeProcessesWithRollback
    Action: ACS::Choice
    Description:
      en: Choose next task by process
      zh-cn: プロセス値に基づいて次のタスクを選択します
    Properties:
      DefaultTask: resumeProcessesWithRollback
      Choices:
        - When:
            Fn::Equals:
              - []
              - '{{ getRollbackProcess.exitProcess }}'
          NextTask: ACS::END
  - Name: resumeProcessesWithRollback
    Action: ACS::ExecuteAPI
    Description:
      en: Resume process
      zh-cn: プロセスを再開します
    Properties:
      Service: ESS
      API: ResumeProcesses
      Parameters:
        ScalingGroupId: '{{ scalingGroupId }}'
        Process: '{{ getRollbackProcess.exitProcess }}'