# 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 json
import warnings
import pulumi
import pulumi.runtime
from typing import Union
from .. import utilities, tables

class GetReportDefinitionResult:
    """
    A collection of values returned by getReportDefinition.
    """
    def __init__(__self__, additional_artifacts=None, additional_schema_elements=None, compression=None, format=None, id=None, report_name=None, s3_bucket=None, s3_prefix=None, s3_region=None, time_unit=None):
        if additional_artifacts and not isinstance(additional_artifacts, list):
            raise TypeError("Expected argument 'additional_artifacts' to be a list")
        __self__.additional_artifacts = additional_artifacts
        """
        A list of additional artifacts.
        """
        if additional_schema_elements and not isinstance(additional_schema_elements, list):
            raise TypeError("Expected argument 'additional_schema_elements' to be a list")
        __self__.additional_schema_elements = additional_schema_elements
        """
        A list of schema elements.
        """
        if compression and not isinstance(compression, str):
            raise TypeError("Expected argument 'compression' to be a str")
        __self__.compression = compression
        """
        Preferred format for report.
        """
        if format and not isinstance(format, str):
            raise TypeError("Expected argument 'format' to be a str")
        __self__.format = format
        """
        Preferred compression format for report.
        """
        if id and not isinstance(id, str):
            raise TypeError("Expected argument 'id' to be a str")
        __self__.id = id
        """
        The provider-assigned unique ID for this managed resource.
        """
        if report_name and not isinstance(report_name, str):
            raise TypeError("Expected argument 'report_name' to be a str")
        __self__.report_name = report_name
        if s3_bucket and not isinstance(s3_bucket, str):
            raise TypeError("Expected argument 's3_bucket' to be a str")
        __self__.s3_bucket = s3_bucket
        """
        Name of customer S3 bucket.
        """
        if s3_prefix and not isinstance(s3_prefix, str):
            raise TypeError("Expected argument 's3_prefix' to be a str")
        __self__.s3_prefix = s3_prefix
        """
        Preferred report path prefix.
        """
        if s3_region and not isinstance(s3_region, str):
            raise TypeError("Expected argument 's3_region' to be a str")
        __self__.s3_region = s3_region
        """
        Region of customer S3 bucket.
        """
        if time_unit and not isinstance(time_unit, str):
            raise TypeError("Expected argument 'time_unit' to be a str")
        __self__.time_unit = time_unit
        """
        The frequency on which report data are measured and displayed.
        """
class AwaitableGetReportDefinitionResult(GetReportDefinitionResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetReportDefinitionResult(
            additional_artifacts=self.additional_artifacts,
            additional_schema_elements=self.additional_schema_elements,
            compression=self.compression,
            format=self.format,
            id=self.id,
            report_name=self.report_name,
            s3_bucket=self.s3_bucket,
            s3_prefix=self.s3_prefix,
            s3_region=self.s3_region,
            time_unit=self.time_unit)

def get_report_definition(report_name=None,opts=None):
    """
    Use this data source to get information on an AWS Cost and Usage Report Definition.

    > *NOTE:* The AWS Cost and Usage Report service is only available in `us-east-1` currently.

    > *NOTE:* If AWS Organizations is enabled, only the master account can use this resource.




    :param str report_name: The name of the report definition to match.
    """
    __args__ = dict()


    __args__['reportName'] = report_name
    if opts is None:
        opts = pulumi.InvokeOptions()
    if opts.version is None:
        opts.version = utilities.get_version()
    __ret__ = pulumi.runtime.invoke('aws:cur/getReportDefinition:getReportDefinition', __args__, opts=opts).value

    return AwaitableGetReportDefinitionResult(
        additional_artifacts=__ret__.get('additionalArtifacts'),
        additional_schema_elements=__ret__.get('additionalSchemaElements'),
        compression=__ret__.get('compression'),
        format=__ret__.get('format'),
        id=__ret__.get('id'),
        report_name=__ret__.get('reportName'),
        s3_bucket=__ret__.get('s3Bucket'),
        s3_prefix=__ret__.get('s3Prefix'),
        s3_region=__ret__.get('s3Region'),
        time_unit=__ret__.get('timeUnit'))
