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

CloudOps Orchestration Service:ACS-ESS-LifeCycleModifyRedisIPWhitelist

最終更新日:Jun 05, 2026

テンプレート名

ACS-ESS-LifeCycleModifyRedisIPWhitelist

今すぐ実行

テンプレートの説明

Auto Scaling が Elastic Compute Service (ECS) インスタンスを追加または削除する際に、ライフサイクルフックを使用して更新をトリガーし、Tair (Redis OSS 互換) インスタンスの IP アドレスホワイトリストを更新します。

テンプレートタイプ

自動

所有者

Alibaba Cloud

入力パラメーター

パラメーター

説明

タイプ

必須

デフォルト値

制限

dbInstanceId

IP アドレスホワイトリストを更新する Tair (Redis OSS 互換) インスタンスの ID です。

String

はい

modifyMode

IP アドレスホワイトリストの更新方法です。スケールアウト (インスタンスの追加) 時には Append または AppendDup を使用し、スケールイン (インスタンスの削除) 時には Delete を使用します。有効値:AppendDeleteAppendDup

String

はい

regionId

Tair インスタンスが存在するリージョンです。デフォルトでは、Auto Scaling のライフサイクルフックから渡されるリージョン ID が使用されます。

String

いいえ

${regionId}

instanceIds

IP アドレスをホワイトリストに追加または削除する対象の ECS インスタンスの ID です。デフォルトでは、ライフサイクルフックから渡されるインスタンス ID リストが使用されます。

List

いいえ

['${instanceIds}']

lifecycleHookId

この実行をトリガーしたライフサイクルフックの ID です。

String

いいえ

${lifecycleHookId}

lifecycleActionToken

インスタンスに関連付けられたスケーリングアクティビティを識別するトークンです。

String

いいえ

${lifecycleActionToken}

OOSAssumeRole

OOS がこのテンプレートを実行するために引き受ける RAM ロールです。

String

いいえ

OOSServiceRole

出力パラメーター

パラメーター

説明

タイプ

ipAddresses

指定された ECS インスタンスのプライベート IP アドレスです。VPC のプライベート IP とクラシックネットワークの内部 IP を含みます。

List

仕組み

このテンプレートは、4 つのタスクを順番に実行します:

  1. getInstanceIpAddressecs:DescribeInstances を呼び出して、指定された ECS インスタンスの VPC とクラシックネットワークのプライベート IP アドレスを取得します。このステップが失敗した場合、テンプレートは CompleteLifecycleActionForAbandon をトリガーします。

  2. modifySecurityIpskvstore:ModifySecurityIps を呼び出して、指定された modifyMode を使用して取得した IP を使用して Tair インスタンスのホワイトリストを更新します。このステップが成功した場合、テンプレートは CompleteLifecycleActionForContinue をトリガーします。失敗した場合は、CompleteLifecycleActionForAbandon をトリガーします。

  3. CompleteLifecycleActionForContinue — Auto Scaling にライフサイクルフックアクティビティが続行できる (CONTINUE) ことを通知します。ステップ 2 が成功した場合にのみ実行されます。

  4. CompleteLifecycleActionForAbandon:Auto Scaling にスケーリングアクティビティを破棄 (ABANDON) するように通知します。ステップ 1 またはステップ 2 が失敗した場合に実行されます。

このテンプレートの実行に必要なポリシー

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "ecs:DescribeInstances"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "kvstore:ModifySecurityIps"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "ess:CompleteLifecycleAction"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

関連ドキュメント

ACS-ESS-LifeCycleModifyRedisIPWhitelist

テンプレートコンテンツ

FormatVersion: OOS-2019-06-01
Description:
  ja: ライフサイクルフックを使用して Tair インスタンスの IP アドレスホワイトリストを変更します
  name-ja: ACS-ESS-LifeCycleModifyRedisIPWhitelist
  categories:
    - elastic_manage
Parameters:
  dbInstanceId:
    Label:
      ja: DBInstanceId
    Type: String
  modifyMode:
    Label:
      ja: ModifyMode
    Description:
      ja: IP アドレスホワイトリストの更新方法です。Append と AppendDup はスケールアウト時に、Delete はスケールイン時に使用されます。
    Type: String
    AllowedValues:
      - Append
      - Delete
      - AppendDup
  regionId:
    Label:
      ja: RegionId
    Description:
      ja: 'リージョン ID です。Auto Scaling から渡されるデフォルト値 (${regionId}) を使用してください。'
    Type: String
    Default: '${regionId}'
  instanceIds:
    Label:
      ja: InstanceIds
    Description:
      ja: 'ECS インスタンスの ID リストです。Auto Scaling から渡されるデフォルト値 (["${instanceIds}"]) を使用してください。'
    Type: List
    Default:
      - '${instanceIds}'
  lifecycleHookId:
    Label:
      ja: LifecycleHookId
    Description:
      ja: 'ライフサイクルフックの ID です。Auto Scaling から渡されるデフォルト値 (${lifecycleHookId}) を使用してください。'
    Type: String
    Default: '${lifecycleHookId}'
  lifecycleActionToken:
    Label:
      ja: LifecycleActionToken
    Description:
      ja: 'インスタンスに関連付けられたスケーリングアクティビティを識別するトークンです。Auto Scaling から渡されるデフォルト値 (${lifecycleActionToken}) を使用してください。'
    Type: String
    Default: '${lifecycleActionToken}'
  OOSAssumeRole:
    Label:
      ja: OOSAssumeRole
    Type: String
    Default: OOSServiceRole
RamRole: '{{ OOSAssumeRole }}'
Tasks:
  - Name: getInstanceIpAddress
    Action: 'ACS::ExecuteAPI'
    Description:
      ja: ECS インスタンスの IP アドレスを取得します
    OnError: CompleteLifecycleActionForAbandon
    Properties:
      Service: ECS
      API: DescribeInstances
      Parameters:
        RegionId: '{{ regionId }}'
        InstanceIds: '{{ instanceIds }}'
    Outputs:
      Ips:
        Type: List
        ValueSelector: >-
          .Instances.Instance[]|.VpcAttributes.PrivateIpAddress.IpAddress+.InnerIpAddress.IpAddress|.[]
  - Name: modifySecurityIps
    Action: 'ACS::ExecuteAPI'
    Description:
      ja: ホワイトリストを変更します
    OnError: CompleteLifecycleActionForAbandon
    OnSuccess: CompleteLifecycleActionForContinue
    Properties:
      Service: R-KVSTORE
      API: ModifySecurityIps
      Parameters:
        RegionId: '{{ regionId }}'
        ModifyMode: '{{ modifyMode }}'
        InstanceId: '{{ dbInstanceId }}'
        SecurityIps:
          'Fn::Join':
            - ','
            - '{{ getInstanceIpAddress.Ips }}'
  - 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: ABANDON
Outputs:
  ipAddresses:
    Type: List
    Value: '{{ getInstanceIpAddress.Ips }}'