Nombre de la plantilla
ACS-ESS-LifeCycleModifyRedisIPWhitelist
Descripción de la plantilla
Actualice la lista de permitidos de direcciones IP de una instancia de Tair (compatible con Redis OSS) cuando Auto Scaling agrega o elimina instancias de Elastic Compute Service (ECS). Esta actualización se desencadena mediante un lifecycle hook.
Tipo de plantilla
Automatizada
Propietario
Alibaba Cloud
Parámetros de entrada
|
Parámetro |
Descripción |
Tipo |
Obligatorio |
Valor predeterminado |
Límite |
|
dbInstanceId |
ID de la instancia de Tair (compatible con Redis OSS) cuya lista de permitidos de IP desea actualizar. |
String |
Sí |
||
|
modifyMode |
Método de actualización. Utilice |
String |
Sí |
||
|
regionId |
Región donde reside la instancia de Tair. De forma predeterminada, se usa el ID de región que proporciona el lifecycle hook de Auto Scaling. |
String |
No |
${regionId} |
|
|
instanceIds |
ID de las instancias de ECS cuyas direcciones IP se agregan a la lista de permitidos o se eliminan de ella. De forma predeterminada, se usa la lista de ID de instancia que proporciona el lifecycle hook. |
List |
No |
['${instanceIds}'] |
|
|
lifecycleHookId |
ID del lifecycle hook que desencadenó esta ejecución. |
String |
No |
${lifecycleHookId} |
|
|
lifecycleActionToken |
Token que identifica la actividad de escalado asociada con las instancias. |
String |
No |
${lifecycleActionToken} |
|
|
OOSAssumeRole |
Rol de RAM que OOS asume para ejecutar esta plantilla. |
String |
No |
OOSServiceRole |
Parámetros de salida
|
Parámetro |
Descripción |
Tipo |
|
ipAddresses |
Direcciones IP privadas de las instancias de ECS especificadas, incluidas las IP privadas de VPC y las IP internas de la red clásica. |
List |
Funcionamiento
La plantilla ejecuta cuatro tareas en secuencia:
getInstanceIpAddress: Llama a
ecs:DescribeInstancespara obtener las direcciones IP privadas (VPC y red clásica) de las instancias de ECS especificadas. Si este paso falla, la plantilla activaCompleteLifecycleActionForAbandon.modifySecurityIps: Llama a
kvstore:ModifySecurityIpspara actualizar la lista de permitidos de la instancia de Tair con las IP obtenidas mediante elmodifyModeespecificado. Si este paso se completa correctamente, la plantilla activaCompleteLifecycleActionForContinue. En caso de fallo, activaCompleteLifecycleActionForAbandon.CompleteLifecycleActionForContinue: Notifica a Auto Scaling que la actividad del lifecycle hook puede continuar (
CONTINUE). Se ejecuta solo si el paso 2 se completa correctamente.CompleteLifecycleActionForAbandon: Notifica a Auto Scaling que debe abandonar la actividad de escalado (
ABANDON). Se ejecuta si falla el paso 1 o el paso 2.
Directiva necesaria para ejecutar esta plantilla
{
"Version": "1",
"Statement": [
{
"Action": [
"ecs:DescribeInstances"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"kvstore:ModifySecurityIps"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"ess:CompleteLifecycleAction"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
Referencias
ACS-ESS-LifeCycleModifyRedisIPWhitelist
Contenido de la plantilla
FormatVersion: OOS-2019-06-01
Description:
en: Use lifecycleHook to modify the IP whitelist of the redis instance
zh-cn: 使用生命周期挂钩设置Redis实例的IP白名单
name-en: ACS-ESS-LifeCycleModifyRedisIPWhitelist
name-zh-cn: 使用生命周期挂钩设置Redis实例的IP白名单
categories:
- elastic_manage
Parameters:
dbInstanceId:
Label:
en: DBInstanceId
zh-cn: Redis实例ID
Type: String
modifyMode:
Label:
en: ModifyMode
zh-cn: 修改IP白名单的方式
Description:
en: The method of modifying the IP whitelist, Append and AppendDup are used for
elastic expansion activities, and Delete is used for elastic contraction activities
zh-cn: 修改IP白名单的方式,Append和AppendDup用于弹性扩张活动,Delete用于弹性收缩活动
Type: String
AllowedValues:
- Append
- Delete
- AppendDup
regionId:
Label:
en: RegionId
zh-cn: 地域ID
Description:
en: The ID of region
zh-cn: '地域ID,请使用弹性伸缩系统默认值 ${regionId}'
Type: String
Default: '${regionId}'
instanceIds:
Label:
en: InstanceIds
zh-cn: ECS实例ID列表
Description:
en: The ID list of the ECS instance
zh-cn: 'ECS实例ID列表,请使用弹性伸缩系统默认值 ["${instanceId}"]'
Type: List
Default:
- '${instanceIds}'
lifecycleHookId:
Label:
en: LifecycleHookId
zh-cn: 生命周期挂钩ID
Description:
en: The ID of the lifecycle hook
zh-cn: '生命周期挂钩ID,请使用弹性伸缩系统默认值 ${lifecycleHookId}'
Type: String
Default: '${lifecycleHookId}'
lifecycleActionToken:
Label:
en: LifecycleActionToken
zh-cn: 实例关联的特定伸缩活动的令牌
Description:
en: The token that indicates a specific scaling activity associated with an instance
zh-cn: '实例关联的特定伸缩活动的令牌,请使用弹性伸缩系统默认值 ${lifecycleActionToken}'
Type: String
Default: '${lifecycleActionToken}'
OOSAssumeRole:
Label:
en: OOSAssumeRole
zh-cn: OOS扮演的RAM角色
Type: String
Default: OOSServiceRole
RamRole: '{{ OOSAssumeRole }}'
Tasks:
- Name: getInstanceIpAddress
Action: 'ACS::ExecuteAPI'
Description:
en: Gets ECS instance network type and ip address
zh-cn: 获取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:
en: Modifies the whitelist
zh-cn: 修改白名单
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:
en: Modify lifecycle action for continue
zh-cn: 修改伸缩活动的等待状态为继续完成
OnSuccess: 'ACS::END'
Properties:
Service: ESS
API: CompleteLifecycleAction
Parameters:
RegionId: '{{ regionId }}'
LifecycleHookId: '{{ lifecycleHookId }}'
LifecycleActionToken: '{{ lifecycleActionToken }}'
LifecycleActionResult: CONTINUE
- Name: CompleteLifecycleActionForAbandon
Action: 'ACS::ExecuteAPI'
Description:
en: Complete lifecycle action for Abandon
zh-cn: 修改伸缩活动的等待状态为弃用
Properties:
Service: ESS
API: CompleteLifecycleAction
Parameters:
RegionId: '{{ regionId }}'
LifecycleHookId: '{{ lifecycleHookId }}'
LifecycleActionToken: '{{ lifecycleActionToken }}'
LifecycleActionResult: ABANDON
Outputs:
ipAddresses:
Type: List
Value: '{{ getInstanceIpAddress.Ips }}'