All Products
Search
Document Center

Cloud Config:Konfigurasikan remediasi kustom

Last Updated:Jun 05, 2026

Saat membuat aturan, konfigurasikan remediasi kustom menggunakan Function Compute untuk memperbaiki resource yang diidentifikasi sebagai Non-compliant.

Prasyarat

Aktifkan Function Compute.

Latar Belakang

Topik ini menggunakan aturan terkelola ecs-running-instance-no-public-ip sebagai contoh untuk mengonfigurasi dan menjalankan remediasi kustom.

Aturan terkelola ecs-running-instance-no-public-ip mengidentifikasi instans ECS yang sedang berjalan dengan alamat IPv4 publik sebagai tidak sesuai (non-compliant). Remediasi tersebut kemudian menghentikan instans-instans tersebut.

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, lewati langkah ini.

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

  4. Pada halaman Rules, klik Create Rule.

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

  6. Pada halaman Set Basic Properties, pertahankan pengaturan parameter default, lalu klik Next.

  7. Pada halaman Set Effective Scope, pertahankan pengaturan parameter default, lalu klik Next.

  8. Pada halaman Set Correction, aktifkan sakelar Set Correction, pilih Function Compute, atur Invoke Type menjadi Manual Remediation, pilih Function ARN, lalu klik Submit.

    Penting
    • Remediasi otomatis memodifikasi resource yang tidak sesuai berdasarkan parameter yang telah Anda tetapkan sebelumnya, yang dapat mengganggu operasi bisnis Anda. Oleh karena itu, Invoke Type diatur ke Manual Remediation secara default. Kami menyarankan agar Anda mempertahankan pengaturan ini.

    • Jika Anda yakin bahwa remediasi tersebut tidak akan berdampak pada bisnis Anda, Anda dapat mengatur Invoke Type menjadi Automatic Remediation. Saat Cloud Config mendeteksi resource yang tidak sesuai, remediasi akan dieksekusi secara otomatis.

    Klik Create New Function untuk membuat layanan dan fungsi di Konsol Function Compute. Buat fungsi dengan cepat.

    Saat membuat fungsi, atur Function Type menjadi Event Function dan runtime menjadi python 3. Konfigurasikan parameter lain sesuai kebutuhan. Contoh kode:

    #!/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):
        """
        Mengurai string menjadi objek JSON
        :param content: konten string JSON
        :return: Objek JSON
        """
        try:
            return json.loads(content)
        except Exception as e:
            logger.error('Gagal mengurai konten:{} menjadi JSON: {}.'.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("Menghentikan instans {}{}".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

    Kode contoh terbaru: aliyun-config-remediation.py.

    Fungsi utama:

    • handler: Titik masuk default yang dipanggil saat Cloud Config memicu remediasi. handler ditetapkan saat Anda membuat fungsi.

    • get_resources_non_compliant: Mengurai resource yang tidak sesuai.

    • remediation: Titik masuk untuk logika remediasi kustom. Konfigurasikan sesuai dengan persyaratan kepatuhan Anda. Untuk aturan "ecs-running-instance-no-public-ip", fungsi ini menghentikan instans yang memiliki alamat IP publik.

  9. Jalankan remediasi secara manual.

    1. Pada halaman Rules, temukan aturan target dan klik Remediation Detail di kolom Remediation Template.

    2. Di tab Remediation Detail, klik Perform Manual Correction di samping Remediation Detail.

      Bagian Execution Result List menampilkan hasil remediasi dan alasan kegagalan.

      Catatan

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

Dokumen Terkait

Untuk konfigurasi kode fungsi dan izin di lingkungan multi-akun, Terapkan remediasi kustom untuk resource yang tidak sesuai di lingkungan multi-akun menggunakan Resource Directory.