# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import warnings
import pulumi
import pulumi.runtime
from typing import Any, Dict, List, Mapping, Optional, Tuple, Union
from .. import _utilities, _tables

__all__ = ['Audit']


class Audit(pulumi.CustomResource):
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 aliuid: Optional[pulumi.Input[str]] = None,
                 display_name: Optional[pulumi.Input[str]] = None,
                 multi_accounts: Optional[pulumi.Input[List[pulumi.Input[str]]]] = None,
                 variable_map: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 __props__=None,
                 __name__=None,
                 __opts__=None):
        """
        SLS log audit exists in the form of log service app.

        In addition to inheriting all SLS functions, it also enhances the real-time automatic centralized collection of audit related logs across multi cloud products under multi accounts, and provides support for storage, query and information summary required by audit. It covers actiontrail, OSS, NAS, SLB, API gateway, RDS, WAF, cloud firewall, cloud security center and other products.

        > **NOTE:** Available in 1.81.0

        ## Example Usage

        Basic Usage

        ```python
        import pulumi
        import pulumi_alicloud as alicloud

        example = alicloud.log.Audit("example",
            aliuid="12345678",
            display_name="tf-audit-test",
            variable_map={
                "actiontrail_enabled": "true",
                "actiontrail_ttl": "180",
                "oss_access_enabled": "true",
                "oss_access_ttl": "180",
            })
        ```
        Multiple accounts Usage

        ```python
        import pulumi
        import pulumi_alicloud as alicloud

        example = alicloud.log.Audit("example",
            aliuid="12345678",
            display_name="tf-audit-test",
            multi_accounts=[
                "123456789123",
                "12345678912300123",
            ],
            variable_map={
                "actiontrail_enabled": "true",
                "actiontrail_ttl": "180",
                "oss_access_enabled": "true",
                "oss_access_ttl": "180",
            })
        ```

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[str] aliuid: Aliuid value of your account.
        :param pulumi.Input[str] display_name: Name of SLS log audit.
        :param pulumi.Input[List[pulumi.Input[str]]] multi_accounts: Multi-account configuration, please fill in multiple aliuid.
        :param pulumi.Input[Mapping[str, Any]] variable_map: Log audit detailed configuration.
        """
        if __name__ is not None:
            warnings.warn("explicit use of __name__ is deprecated", DeprecationWarning)
            resource_name = __name__
        if __opts__ is not None:
            warnings.warn("explicit use of __opts__ is deprecated, use 'opts' instead", DeprecationWarning)
            opts = __opts__
        if opts is None:
            opts = pulumi.ResourceOptions()
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.version is None:
            opts.version = _utilities.get_version()
        if opts.id is None:
            if __props__ is not None:
                raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
            __props__ = dict()

            if aliuid is None:
                raise TypeError("Missing required property 'aliuid'")
            __props__['aliuid'] = aliuid
            if display_name is None:
                raise TypeError("Missing required property 'display_name'")
            __props__['display_name'] = display_name
            __props__['multi_accounts'] = multi_accounts
            __props__['variable_map'] = variable_map
        super(Audit, __self__).__init__(
            'alicloud:log/audit:Audit',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            aliuid: Optional[pulumi.Input[str]] = None,
            display_name: Optional[pulumi.Input[str]] = None,
            multi_accounts: Optional[pulumi.Input[List[pulumi.Input[str]]]] = None,
            variable_map: Optional[pulumi.Input[Mapping[str, Any]]] = None) -> 'Audit':
        """
        Get an existing Audit resource's state with the given name, id, and optional extra
        properties used to qualify the lookup.

        :param str resource_name: The unique name of the resulting resource.
        :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[str] aliuid: Aliuid value of your account.
        :param pulumi.Input[str] display_name: Name of SLS log audit.
        :param pulumi.Input[List[pulumi.Input[str]]] multi_accounts: Multi-account configuration, please fill in multiple aliuid.
        :param pulumi.Input[Mapping[str, Any]] variable_map: Log audit detailed configuration.
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = dict()

        __props__["aliuid"] = aliuid
        __props__["display_name"] = display_name
        __props__["multi_accounts"] = multi_accounts
        __props__["variable_map"] = variable_map
        return Audit(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter
    def aliuid(self) -> pulumi.Output[str]:
        """
        Aliuid value of your account.
        """
        return pulumi.get(self, "aliuid")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> pulumi.Output[str]:
        """
        Name of SLS log audit.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="multiAccounts")
    def multi_accounts(self) -> pulumi.Output[Optional[List[str]]]:
        """
        Multi-account configuration, please fill in multiple aliuid.
        """
        return pulumi.get(self, "multi_accounts")

    @property
    @pulumi.getter(name="variableMap")
    def variable_map(self) -> pulumi.Output[Optional[Mapping[str, Any]]]:
        """
        Log audit detailed configuration.
        """
        return pulumi.get(self, "variable_map")

    def translate_output_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop

    def translate_input_property(self, prop):
        return _tables.SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop

