Todos los productos
Search
Centro de documentos

Cloud Config:Configurar la corrección personalizada

Última actualización: Sep 04, 2026

Al crear una regla, configure una corrección personalizada mediante Function Compute para solucionar los recursos identificados como Non-compliant.

Requisitos previos

Activate Function Compute.

Contexto

El siguiente ejemplo utiliza la regla administrada ecs-running-instance-no-public-ip para mostrar cómo configurar y ejecutar una corrección personalizada.

La regla administrada ecs-running-instance-no-public-ip identifica como no conformes las instancias de ECS en ejecución que tienen una dirección IPv4 pública. Posteriormente, la corrección detiene dichas instancias.

Procedimiento

  1. Inicie sesión en la consola de Cloud Config.

  2. Opcional. En la esquina superior izquierda, seleccione un grupo de cuentas.

    Esta operación solo es necesaria si utiliza una cuenta de administración de un directorio de recursos. De lo contrario, no necesita realizarla.

  3. En el panel de navegación izquierdo, elija Compliance & Audit > Rules.

  4. En la página Rules, haga clic en Create Rule.

  5. En la página Select Create Method, seleccione Based on managed rule, elija la regla ecs-running-instance-no-public-ip de las plantillas y luego haga clic en Next.

  6. En la página Set Basic Properties, conserve la configuración predeterminada de los parámetros y haga clic en Next.

  7. En la página Set Effective Scope, conserve la configuración predeterminada de los parámetros y haga clic en Next.

  8. En la página Set Correction, active el interruptor Set Correction, seleccione Function Compute, establezca Invoke Type en Manual Remediation, seleccione un Function ARN y luego haga clic en Submit.

    Importante
    • La corrección automática modifica los recursos no conformes según parámetros preestablecidos y podría interrumpir su negocio. El valor predeterminado de Invoke Type es Manual Remediation. Se recomienda mantener esta configuración.

    • Si tiene la certeza de que la corrección no afectará a su negocio, establezca Invoke Type en Automatic Remediation. Cloud Config corregirá automáticamente los recursos no conformes.

    Haga clic en Create New Function para crear un servicio y una función en la consola de Function Compute. Quickly create a function.

    Al crear la función, establezca Function Type en Event Function y runtime en python 3. Configure los demás parámetros según sea necesario. Código de ejemplo:

    #!/usr/bin/env python
    # -*- encoding: utf-8 -*-
    import json
    from aliyunsdkcore.client import AcsClient
    from aliyunsdkcore.acs_exception.exceptions import ClientException
    from aliyunsdkcore.acs_exception.exceptions import ServerException
    from aliyunsdkcore.auth.credentials import AccessKeyCredential
    from aliyunsdkcore.auth.credentials import StsTokenCredential
    from aliyunsdkecs.request.v20140526.StopInstanceRequest import StopInstanceRequest
    from aliyunsdkcore.auth.credentials import AccessKeyCredential
    from aliyunsdkcore.auth.credentials import StsTokenCredential
    from aliyunsdkkms.request.v20160120.DecryptRequest import DecryptRequest
    
    # -*- coding: utf-8 -*-
    
    import logging
    import json
    
    logger = logging.getLogger()
    
    def handler(event, context):
        get_resources_non_compliant(event, context)
    
    def get_resources_non_compliant(event, context):
        resources = parse_json(event)
        for resource in resources:
            remediation(resource, context)
    
    def parse_json(content):
        """
        Parses a string into a JSON object
        :param content: json string content
        :return: Json object
        """
        try:
            return json.loads(content)
        except Exception as e:
            logger.error('Parse content:{} to json error:{}.'.format(content, e))
            return None
    
    def remediation(resource, context):
        logger.info(resource)
        region_id = resource['regionId']
        account_id = resource['accountId']
        resource_id = resource['resourceId']
        resource_type = resource['resourceType']
        config_rule_id = resource['configRuleId']
        if resource_type == 'ACS::ECS::Instance' and config_rule_id == 'cr-f8a1626622af005d****':
            print(region_id, account_id, resource_id, resource_type, config_rule_id)
            stop_ecs_instance(context, region_id, resource_id)
    
    def stop_ecs_instance(context, resource_region_id, resource_id):
        logger.info("Stopping instance {}{}".format(resource_region_id, resource_id))
    
        creds = context.credentials
        client = AcsClient(creds.access_key_id, creds.access_key_secret, region_id=resource_region_id)
    
        request = StopInstanceRequest()
        request.set_accept_format('json')
        request.set_InstanceId("i-hp3f6lofgrnml5mt****")
        request.set_StoppedMode("KeepCharging")
        request.add_query_param('SecurityToken', creds.security_token)
    
        response = client.do_action_with_exception(request)
        logger.info(response)
    Nota

    Código de muestra más reciente: aliyun-config-remediation.py.

    Funciones clave:

    • handler: Punto de entrada predeterminado que se invoca cuando Cloud Config desencadena una corrección. El elemento handler se establece al crear la función.

    • get_resources_non_compliant: Analiza sintácticamente los recursos no conformes.

    • remediation: Punto de entrada para la lógica de corrección personalizada. Configúrela según sus requisitos de cumplimiento. Para la regla "ecs-running-instance-no-public-ip", esta función detiene las instancias que tienen una dirección IP pública.

  9. Ejecute la corrección manualmente.

    1. En la página Rules, localice la regla objetivo y haga clic en Remediation Detail en la columna Remediation Template.

    2. En la pestaña Remediation Detail, haga clic en Perform Manual Correction junto a Remediation Detail.

      La sección Execution Result List muestra los resultados de la corrección y los motivos de fallo.

      Nota

      En la pestaña Remediation Detail, haga clic en el Function ARN junto a Remediation Template para abrir la pestaña Function Code en la consola de Function Compute.

Documentos relacionados

Para consultar el código de funciones y las configuraciones de permisos en entornos de múltiples cuentas, consulte Implement custom remediation for non-compliant resources in a multi-account environment by using Resource Directory.