def get_resource_compliance_by_config_rule()

in remediation/config_rule_and_remediation_sample.py [0:0]


def get_resource_compliance_by_config_rule(ak, sk, config_rule_id):
    credentials = AccessKeyCredential(ak, sk)
    # use STS Token
    # credentials = StsTokenCredential('<your-access-key-id>', '<your-access-key-secret>', '<your-sts-token>')
    client = AcsClient(region_id='cn-shanghai', credential=credentials)

    # request = CommonRequest()
    # request.set_domain(CONFIG_SERVICE_ENDPOINT)
    # request.set_version('2020-09-07')
    # request.set_action_name('GetResourceComplianceByConfigRule')
    # request.set_method('POST')
    #
    # request.add_body_params("ConfigRuleId", config_rule_id)
    # request.add_body_params("ComplianceType", 'NON_COMPLIANT')

    request = GetResourceComplianceByConfigRuleRequest()
    request.set_accept_format('json')

    request.set_ComplianceType("NON_COMPLIANT")
    request.set_ConfigRuleId(config_rule_id)


    response = client.do_action_with_exception(request)
    # {
    #     "ComplianceResult": {
    #         "TotalCount": 5184,
    #         "Compliances": [
    #             {
    #                 "ComplianceType": "NON_COMPLIANT",
    #                 "Count": 5184
    #             }
    #         ]
    #     },
    #     "RequestId": "D501D416-B64C-55E2-8B37-62E267317086"
    # }
    resource_result = str(response, encoding='utf-8')
    json_res = json.loads(resource_result)
    for compliance in json_res['ComplianceResult']['Compliances']:
        if compliance['ComplianceType'] == 'NON_COMPLIANT':
            return compliance['Count']
    return 0