全部产品
Search
文档中心

Cloud Config:Mengonfigurasi remediasi kustom

更新时间:Nov 14, 2025

Saat membuat aturan berdasarkan aturan terkelola atau membuat aturan kustom, Anda dapat mengonfigurasi remediasi kustom untuk aturan tersebut agar menggunakan Function Compute guna memperbaiki sumber daya yang tidak sesuai. Jika sumber daya yang terkait dengan aturan ini dievaluasi sebagai Non-compliant, templat akan diterapkan dan sumber daya tersebut segera diperbaiki.

Prasyarat

Function Compute telah diaktifkan. Untuk informasi selengkapnya, lihat Aktifkan Function Compute.

Informasi latar belakang

Topik ini menjelaskan cara mengonfigurasi dan mengeksekusi remediasi kustom. Contoh ini menggunakan aturan terkelola ecs-running-instance-no-public-ip.

Aturan terkelola ecs-running-instance-no-public-ip digunakan untuk memeriksa apakah Alamat IPv4 publik atau alamat IP elastis (EIP) dikaitkan dengan instance Elastic Compute Service (ECS) yang sedang berjalan. Jika Alamat IPv4 publik atau EIP dikaitkan dengan instance ECS, hasil evaluasinya adalah Non-compliant, dan instance ECS tersebut akan dihentikan.

Prosedur

  1. Masuk ke Konsol Cloud Config.

  2. Opsional. Di pojok kiri atas, pilih kelompok akun.

    Langkah ini hanya diperlukan jika Anda menggunakan akun manajemen dari direktori sumber daya. Jika tidak, langkah ini dapat dilewati.

  3. Di panel navigasi sebelah kiri, pilih Compliance & Audit > Rules.

  4. Pada halaman Rules, klik Create Rule.

  5. Pada langkah Select Create Method, pilih Based on managed rule, pilih ecs-running-instance-no-public-ip dari daftar templat, lalu klik Next.

  6. Pada langkah Set Basic Properties, gunakan nilai default untuk parameter dan klik Next.

  7. Pada langkah Set Effective Scope, gunakan nilai default untuk parameter dan klik Next.

  8. Pada halaman Remediation Settings, aktifkan sakelar Set Remediation, pilih Custom Remediation, atur Trigger Method menjadi Manual Trigger, pilih Function ARN, lalu klik Submit.

    Penting
    • Jika Anda mengatur Invoke Type ke Automatic Remediation, Cloud Config secara otomatis memperbaiki konfigurasi sumber daya yang tidak sesuai berdasarkan pengaturan Anda. Hal ini dapat memengaruhi kelangsungan bisnis. Oleh karena itu, Invoke Type diatur ke Manual Remediation secara default. Kami menyarankan agar Anda mempertahankan pengaturan default ini.

    • Jika remediasi tidak memengaruhi bisnis Anda, Anda dapat mengatur Invoke Type ke Automatic Remediation. Dalam kasus ini, Cloud Config secara otomatis memperbaiki konfigurasi sumber daya yang tidak sesuai berdasarkan pengaturan Anda.

    Klik Create New Function untuk membuat layanan dan fungsi remediasi di Konsol Function Compute. Untuk informasi selengkapnya, lihat Buat fungsi dengan cepat.

    Saat membuat fungsi remediasi, atur parameter Function Type ke Event Function dan parameter Runtime ke Python 3. Anda dapat mengonfigurasi parameter lain sesuai kebutuhan. Kode contoh:

    #!/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):
        """
        Parse string to 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("Note: Starting to stop the 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)
    Catatan

    Untuk informasi selengkapnya tentang kode contoh terbaru fungsi remediasi, lihat aliyun-config-remediation.py.

    Fungsi remediasi mencakup subfungsi utama berikut:

    • handler: Titik masuk fungsi default yang dipanggil oleh CloudConfig saat remediasi kustom dipicu. Anda mengatur handler saat membuat fungsi.

    • get_resources_non_compliant: Mengurai sumber daya yang tidak sesuai.

    • remediation: Titik masuk untuk remediasi kustom. Anda dapat menyesuaikan fungsi ini berdasarkan kebutuhan remediasi Anda. Misalnya, untuk aturan "ecs-running-instance-no-public-ip", jika sumber daya dievaluasi sebagai tidak sesuai (artinya Alamat IP publik disambungkan), aksi remediasinya adalah menghentikan instans tersebut.

  9. Jalankan remediasi secara manual.

    1. Pada halaman Rules, temukan aturan yang ingin Anda kelola, lalu klik Remediation Detail di kolom Remediation Template.

    2. Pada tab Remediation Detail, klik Perform Manual Remediation di samping Remediation Detail.

      Di bagian Execution Result List, Anda dapat melihat hasil remediasi serta alasan mengapa suatu sumber daya gagal diperbaiki.

      Catatan

      Pada tab Remediation Detail, klik Function ARN di samping Remediation Template untuk membuka tab Code fungsi remediasi di Konsol Function Compute.

Referensi

Untuk informasi selengkapnya tentang kode fungsi dan konfigurasi otorisasi dalam skenario multi-akun, lihat Memperbaiki sumber daya yang tidak sesuai secara otomatis di berbagai akun dalam perusahaan menggunakan direktori sumber daya.