# coding=utf-8
# *** WARNING: this file was generated by the Pulumi SDK Generator. ***
# *** 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, Mapping, Optional, Sequence, Union, overload
from .. import _utilities
from ._enums import *

__all__ = [
    'DataCatalogTagArgs',
    'WorkGroupEncryptionConfigurationArgs',
    'WorkGroupEngineVersionArgs',
    'WorkGroupResultConfigurationUpdatesArgs',
    'WorkGroupResultConfigurationArgs',
    'WorkGroupTagArgs',
    'WorkGroupWorkGroupConfigurationUpdatesArgs',
    'WorkGroupWorkGroupConfigurationArgs',
]

@pulumi.input_type
class DataCatalogTagArgs:
    def __init__(__self__, *,
                 key: pulumi.Input[str],
                 value: pulumi.Input[str]):
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> pulumi.Input[str]:
        return pulumi.get(self, "key")

    @key.setter
    def key(self, value: pulumi.Input[str]):
        pulumi.set(self, "key", value)

    @property
    @pulumi.getter
    def value(self) -> pulumi.Input[str]:
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: pulumi.Input[str]):
        pulumi.set(self, "value", value)


@pulumi.input_type
class WorkGroupEncryptionConfigurationArgs:
    def __init__(__self__, *,
                 encryption_option: pulumi.Input['WorkGroupEncryptionOption'],
                 kms_key: Optional[pulumi.Input[str]] = None):
        """
        If query results are encrypted in Amazon S3, indicates the encryption option used (for example, SSE-KMS or CSE-KMS) and key information.
        """
        pulumi.set(__self__, "encryption_option", encryption_option)
        if kms_key is not None:
            pulumi.set(__self__, "kms_key", kms_key)

    @property
    @pulumi.getter(name="encryptionOption")
    def encryption_option(self) -> pulumi.Input['WorkGroupEncryptionOption']:
        return pulumi.get(self, "encryption_option")

    @encryption_option.setter
    def encryption_option(self, value: pulumi.Input['WorkGroupEncryptionOption']):
        pulumi.set(self, "encryption_option", value)

    @property
    @pulumi.getter(name="kmsKey")
    def kms_key(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "kms_key")

    @kms_key.setter
    def kms_key(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "kms_key", value)


@pulumi.input_type
class WorkGroupEngineVersionArgs:
    def __init__(__self__, *,
                 effective_engine_version: Optional[pulumi.Input[str]] = None,
                 selected_engine_version: Optional[pulumi.Input[str]] = None):
        """
        The Athena engine version for running queries.
        """
        if effective_engine_version is not None:
            pulumi.set(__self__, "effective_engine_version", effective_engine_version)
        if selected_engine_version is not None:
            pulumi.set(__self__, "selected_engine_version", selected_engine_version)

    @property
    @pulumi.getter(name="effectiveEngineVersion")
    def effective_engine_version(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "effective_engine_version")

    @effective_engine_version.setter
    def effective_engine_version(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "effective_engine_version", value)

    @property
    @pulumi.getter(name="selectedEngineVersion")
    def selected_engine_version(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "selected_engine_version")

    @selected_engine_version.setter
    def selected_engine_version(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "selected_engine_version", value)


@pulumi.input_type
class WorkGroupResultConfigurationUpdatesArgs:
    def __init__(__self__, *,
                 encryption_configuration: Optional[pulumi.Input['WorkGroupEncryptionConfigurationArgs']] = None,
                 output_location: Optional[pulumi.Input[str]] = None,
                 remove_encryption_configuration: Optional[pulumi.Input[bool]] = None,
                 remove_output_location: Optional[pulumi.Input[bool]] = None):
        """
        The result configuration information about the queries in this workgroup that will be updated. Includes the updated results location and an updated option for encrypting query results. 
        """
        if encryption_configuration is not None:
            pulumi.set(__self__, "encryption_configuration", encryption_configuration)
        if output_location is not None:
            pulumi.set(__self__, "output_location", output_location)
        if remove_encryption_configuration is not None:
            pulumi.set(__self__, "remove_encryption_configuration", remove_encryption_configuration)
        if remove_output_location is not None:
            pulumi.set(__self__, "remove_output_location", remove_output_location)

    @property
    @pulumi.getter(name="encryptionConfiguration")
    def encryption_configuration(self) -> Optional[pulumi.Input['WorkGroupEncryptionConfigurationArgs']]:
        return pulumi.get(self, "encryption_configuration")

    @encryption_configuration.setter
    def encryption_configuration(self, value: Optional[pulumi.Input['WorkGroupEncryptionConfigurationArgs']]):
        pulumi.set(self, "encryption_configuration", value)

    @property
    @pulumi.getter(name="outputLocation")
    def output_location(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "output_location")

    @output_location.setter
    def output_location(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "output_location", value)

    @property
    @pulumi.getter(name="removeEncryptionConfiguration")
    def remove_encryption_configuration(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "remove_encryption_configuration")

    @remove_encryption_configuration.setter
    def remove_encryption_configuration(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "remove_encryption_configuration", value)

    @property
    @pulumi.getter(name="removeOutputLocation")
    def remove_output_location(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "remove_output_location")

    @remove_output_location.setter
    def remove_output_location(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "remove_output_location", value)


@pulumi.input_type
class WorkGroupResultConfigurationArgs:
    def __init__(__self__, *,
                 encryption_configuration: Optional[pulumi.Input['WorkGroupEncryptionConfigurationArgs']] = None,
                 output_location: Optional[pulumi.Input[str]] = None):
        """
        The location in Amazon S3 where query results are stored and the encryption option, if any, used for query results. These are known as "client-side settings". If workgroup settings override client-side settings, then the query uses the workgroup settings.
        """
        if encryption_configuration is not None:
            pulumi.set(__self__, "encryption_configuration", encryption_configuration)
        if output_location is not None:
            pulumi.set(__self__, "output_location", output_location)

    @property
    @pulumi.getter(name="encryptionConfiguration")
    def encryption_configuration(self) -> Optional[pulumi.Input['WorkGroupEncryptionConfigurationArgs']]:
        return pulumi.get(self, "encryption_configuration")

    @encryption_configuration.setter
    def encryption_configuration(self, value: Optional[pulumi.Input['WorkGroupEncryptionConfigurationArgs']]):
        pulumi.set(self, "encryption_configuration", value)

    @property
    @pulumi.getter(name="outputLocation")
    def output_location(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "output_location")

    @output_location.setter
    def output_location(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "output_location", value)


@pulumi.input_type
class WorkGroupTagArgs:
    def __init__(__self__, *,
                 key: pulumi.Input[str],
                 value: pulumi.Input[str]):
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> pulumi.Input[str]:
        return pulumi.get(self, "key")

    @key.setter
    def key(self, value: pulumi.Input[str]):
        pulumi.set(self, "key", value)

    @property
    @pulumi.getter
    def value(self) -> pulumi.Input[str]:
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: pulumi.Input[str]):
        pulumi.set(self, "value", value)


@pulumi.input_type
class WorkGroupWorkGroupConfigurationUpdatesArgs:
    def __init__(__self__, *,
                 bytes_scanned_cutoff_per_query: Optional[pulumi.Input[int]] = None,
                 enforce_work_group_configuration: Optional[pulumi.Input[bool]] = None,
                 engine_version: Optional[pulumi.Input['WorkGroupEngineVersionArgs']] = None,
                 publish_cloud_watch_metrics_enabled: Optional[pulumi.Input[bool]] = None,
                 remove_bytes_scanned_cutoff_per_query: Optional[pulumi.Input[bool]] = None,
                 requester_pays_enabled: Optional[pulumi.Input[bool]] = None,
                 result_configuration_updates: Optional[pulumi.Input['WorkGroupResultConfigurationUpdatesArgs']] = None):
        """
        The configuration information that will be updated for this workgroup, which includes the location in Amazon S3 where query results are stored, the encryption option, if any, used for query results, whether the Amazon CloudWatch Metrics are enabled for the workgroup, whether the workgroup settings override the client-side settings, and the data usage limit for the amount of bytes scanned per query, if it is specified. 
        """
        if bytes_scanned_cutoff_per_query is not None:
            pulumi.set(__self__, "bytes_scanned_cutoff_per_query", bytes_scanned_cutoff_per_query)
        if enforce_work_group_configuration is not None:
            pulumi.set(__self__, "enforce_work_group_configuration", enforce_work_group_configuration)
        if engine_version is not None:
            pulumi.set(__self__, "engine_version", engine_version)
        if publish_cloud_watch_metrics_enabled is not None:
            pulumi.set(__self__, "publish_cloud_watch_metrics_enabled", publish_cloud_watch_metrics_enabled)
        if remove_bytes_scanned_cutoff_per_query is not None:
            pulumi.set(__self__, "remove_bytes_scanned_cutoff_per_query", remove_bytes_scanned_cutoff_per_query)
        if requester_pays_enabled is not None:
            pulumi.set(__self__, "requester_pays_enabled", requester_pays_enabled)
        if result_configuration_updates is not None:
            pulumi.set(__self__, "result_configuration_updates", result_configuration_updates)

    @property
    @pulumi.getter(name="bytesScannedCutoffPerQuery")
    def bytes_scanned_cutoff_per_query(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "bytes_scanned_cutoff_per_query")

    @bytes_scanned_cutoff_per_query.setter
    def bytes_scanned_cutoff_per_query(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "bytes_scanned_cutoff_per_query", value)

    @property
    @pulumi.getter(name="enforceWorkGroupConfiguration")
    def enforce_work_group_configuration(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "enforce_work_group_configuration")

    @enforce_work_group_configuration.setter
    def enforce_work_group_configuration(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "enforce_work_group_configuration", value)

    @property
    @pulumi.getter(name="engineVersion")
    def engine_version(self) -> Optional[pulumi.Input['WorkGroupEngineVersionArgs']]:
        return pulumi.get(self, "engine_version")

    @engine_version.setter
    def engine_version(self, value: Optional[pulumi.Input['WorkGroupEngineVersionArgs']]):
        pulumi.set(self, "engine_version", value)

    @property
    @pulumi.getter(name="publishCloudWatchMetricsEnabled")
    def publish_cloud_watch_metrics_enabled(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "publish_cloud_watch_metrics_enabled")

    @publish_cloud_watch_metrics_enabled.setter
    def publish_cloud_watch_metrics_enabled(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "publish_cloud_watch_metrics_enabled", value)

    @property
    @pulumi.getter(name="removeBytesScannedCutoffPerQuery")
    def remove_bytes_scanned_cutoff_per_query(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "remove_bytes_scanned_cutoff_per_query")

    @remove_bytes_scanned_cutoff_per_query.setter
    def remove_bytes_scanned_cutoff_per_query(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "remove_bytes_scanned_cutoff_per_query", value)

    @property
    @pulumi.getter(name="requesterPaysEnabled")
    def requester_pays_enabled(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "requester_pays_enabled")

    @requester_pays_enabled.setter
    def requester_pays_enabled(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "requester_pays_enabled", value)

    @property
    @pulumi.getter(name="resultConfigurationUpdates")
    def result_configuration_updates(self) -> Optional[pulumi.Input['WorkGroupResultConfigurationUpdatesArgs']]:
        return pulumi.get(self, "result_configuration_updates")

    @result_configuration_updates.setter
    def result_configuration_updates(self, value: Optional[pulumi.Input['WorkGroupResultConfigurationUpdatesArgs']]):
        pulumi.set(self, "result_configuration_updates", value)


@pulumi.input_type
class WorkGroupWorkGroupConfigurationArgs:
    def __init__(__self__, *,
                 bytes_scanned_cutoff_per_query: Optional[pulumi.Input[int]] = None,
                 enforce_work_group_configuration: Optional[pulumi.Input[bool]] = None,
                 engine_version: Optional[pulumi.Input['WorkGroupEngineVersionArgs']] = None,
                 publish_cloud_watch_metrics_enabled: Optional[pulumi.Input[bool]] = None,
                 requester_pays_enabled: Optional[pulumi.Input[bool]] = None,
                 result_configuration: Optional[pulumi.Input['WorkGroupResultConfigurationArgs']] = None):
        if bytes_scanned_cutoff_per_query is not None:
            pulumi.set(__self__, "bytes_scanned_cutoff_per_query", bytes_scanned_cutoff_per_query)
        if enforce_work_group_configuration is not None:
            pulumi.set(__self__, "enforce_work_group_configuration", enforce_work_group_configuration)
        if engine_version is not None:
            pulumi.set(__self__, "engine_version", engine_version)
        if publish_cloud_watch_metrics_enabled is not None:
            pulumi.set(__self__, "publish_cloud_watch_metrics_enabled", publish_cloud_watch_metrics_enabled)
        if requester_pays_enabled is not None:
            pulumi.set(__self__, "requester_pays_enabled", requester_pays_enabled)
        if result_configuration is not None:
            pulumi.set(__self__, "result_configuration", result_configuration)

    @property
    @pulumi.getter(name="bytesScannedCutoffPerQuery")
    def bytes_scanned_cutoff_per_query(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "bytes_scanned_cutoff_per_query")

    @bytes_scanned_cutoff_per_query.setter
    def bytes_scanned_cutoff_per_query(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "bytes_scanned_cutoff_per_query", value)

    @property
    @pulumi.getter(name="enforceWorkGroupConfiguration")
    def enforce_work_group_configuration(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "enforce_work_group_configuration")

    @enforce_work_group_configuration.setter
    def enforce_work_group_configuration(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "enforce_work_group_configuration", value)

    @property
    @pulumi.getter(name="engineVersion")
    def engine_version(self) -> Optional[pulumi.Input['WorkGroupEngineVersionArgs']]:
        return pulumi.get(self, "engine_version")

    @engine_version.setter
    def engine_version(self, value: Optional[pulumi.Input['WorkGroupEngineVersionArgs']]):
        pulumi.set(self, "engine_version", value)

    @property
    @pulumi.getter(name="publishCloudWatchMetricsEnabled")
    def publish_cloud_watch_metrics_enabled(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "publish_cloud_watch_metrics_enabled")

    @publish_cloud_watch_metrics_enabled.setter
    def publish_cloud_watch_metrics_enabled(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "publish_cloud_watch_metrics_enabled", value)

    @property
    @pulumi.getter(name="requesterPaysEnabled")
    def requester_pays_enabled(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "requester_pays_enabled")

    @requester_pays_enabled.setter
    def requester_pays_enabled(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "requester_pays_enabled", value)

    @property
    @pulumi.getter(name="resultConfiguration")
    def result_configuration(self) -> Optional[pulumi.Input['WorkGroupResultConfigurationArgs']]:
        return pulumi.get(self, "result_configuration")

    @result_configuration.setter
    def result_configuration(self, value: Optional[pulumi.Input['WorkGroupResultConfigurationArgs']]):
        pulumi.set(self, "result_configuration", value)


