# 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, Mapping, Optional, Sequence, Union, overload
from .. import _utilities
from . import outputs
from ._inputs import *

__all__ = ['AccountArgs', 'Account']

@pulumi.input_type
class AccountArgs:
    def __init__(__self__, *,
                 account_replication_type: pulumi.Input[str],
                 account_tier: pulumi.Input[str],
                 resource_group_name: pulumi.Input[str],
                 access_tier: Optional[pulumi.Input[str]] = None,
                 account_kind: Optional[pulumi.Input[str]] = None,
                 allow_nested_items_to_be_public: Optional[pulumi.Input[bool]] = None,
                 azure_files_authentication: Optional[pulumi.Input['AccountAzureFilesAuthenticationArgs']] = None,
                 blob_properties: Optional[pulumi.Input['AccountBlobPropertiesArgs']] = None,
                 cross_tenant_replication_enabled: Optional[pulumi.Input[bool]] = None,
                 custom_domain: Optional[pulumi.Input['AccountCustomDomainArgs']] = None,
                 customer_managed_key: Optional[pulumi.Input['AccountCustomerManagedKeyArgs']] = None,
                 edge_zone: Optional[pulumi.Input[str]] = None,
                 enable_https_traffic_only: Optional[pulumi.Input[bool]] = None,
                 identity: Optional[pulumi.Input['AccountIdentityArgs']] = None,
                 infrastructure_encryption_enabled: Optional[pulumi.Input[bool]] = None,
                 is_hns_enabled: Optional[pulumi.Input[bool]] = None,
                 large_file_share_enabled: Optional[pulumi.Input[bool]] = None,
                 location: Optional[pulumi.Input[str]] = None,
                 min_tls_version: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 network_rules: Optional[pulumi.Input['AccountNetworkRulesArgs']] = None,
                 nfsv3_enabled: Optional[pulumi.Input[bool]] = None,
                 queue_encryption_key_type: Optional[pulumi.Input[str]] = None,
                 queue_properties: Optional[pulumi.Input['AccountQueuePropertiesArgs']] = None,
                 routing: Optional[pulumi.Input['AccountRoutingArgs']] = None,
                 share_properties: Optional[pulumi.Input['AccountSharePropertiesArgs']] = None,
                 shared_access_key_enabled: Optional[pulumi.Input[bool]] = None,
                 static_website: Optional[pulumi.Input['AccountStaticWebsiteArgs']] = None,
                 table_encryption_key_type: Optional[pulumi.Input[str]] = None,
                 tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None):
        """
        The set of arguments for constructing a Account resource.
        :param pulumi.Input[str] account_replication_type: Defines the type of replication to use for this storage account. Valid options are `LRS`, `GRS`, `RAGRS`, `ZRS`, `GZRS` and `RAGZRS`. Changing this forces a new resource to be created when types `LRS`, `GRS` and `RAGRS` are changed to `ZRS`, `GZRS` or `RAGZRS` and vice versa.
        :param pulumi.Input[str] account_tier: Defines the Tier to use for this storage account. Valid options are `Standard` and `Premium`. For `BlockBlobStorage` and `FileStorage` accounts only `Premium` is valid. Changing this forces a new resource to be created.
        :param pulumi.Input[str] resource_group_name: The name of the resource group in which to create the storage account. Changing this forces a new resource to be created.
        :param pulumi.Input[str] access_tier: Defines the access tier for `BlobStorage`, `FileStorage` and `StorageV2` accounts. Valid options are `Hot` and `Cool`, defaults to `Hot`.
        :param pulumi.Input[str] account_kind: Defines the Kind of account. Valid options are `BlobStorage`, `BlockBlobStorage`, `FileStorage`, `Storage` and `StorageV2`. Changing this forces a new resource to be created. Defaults to `StorageV2`.
        :param pulumi.Input[bool] allow_nested_items_to_be_public: Allow or disallow nested items within this Account to opt into being public. Defaults to `true`.
        :param pulumi.Input['AccountAzureFilesAuthenticationArgs'] azure_files_authentication: A `azure_files_authentication` block as defined below.
        :param pulumi.Input['AccountBlobPropertiesArgs'] blob_properties: A `blob_properties` block as defined below.
        :param pulumi.Input[bool] cross_tenant_replication_enabled: Should cross Tenant replication be enabled? Defaults to `true`.
        :param pulumi.Input['AccountCustomDomainArgs'] custom_domain: A `custom_domain` block as documented below.
        :param pulumi.Input['AccountCustomerManagedKeyArgs'] customer_managed_key: A `customer_managed_key` block as documented below.
        :param pulumi.Input[str] edge_zone: Specifies the Edge Zone within the Azure Region where this Storage Account should exist. Changing this forces a new Storage Account to be created.
        :param pulumi.Input[bool] enable_https_traffic_only: Boolean flag which forces HTTPS if enabled, see [here](https://docs.microsoft.com/azure/storage/storage-require-secure-transfer/)
               for more information. Defaults to `true`.
        :param pulumi.Input['AccountIdentityArgs'] identity: An `identity` block as defined below.
        :param pulumi.Input[bool] infrastructure_encryption_enabled: Is infrastructure encryption enabled? Changing this forces a new resource to be created. Defaults to `false`.
        :param pulumi.Input[bool] is_hns_enabled: Is Hierarchical Namespace enabled? This can be used with Azure Data Lake Storage Gen 2 ([see here for more information](https://docs.microsoft.com/azure/storage/blobs/data-lake-storage-quickstart-create-account/)). Changing this forces a new resource to be created.
        :param pulumi.Input[bool] large_file_share_enabled: Is Large File Share Enabled?
        :param pulumi.Input[str] location: Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
        :param pulumi.Input[str] min_tls_version: The minimum supported TLS version for the storage account. Possible values are `TLS1_0`, `TLS1_1`, and `TLS1_2`. Defaults to `TLS1_2` for new storage accounts.
        :param pulumi.Input[str] name: Specifies the name of the storage account. Changing this forces a new resource to be created. This must be unique across the entire Azure service, not just within the resource group.
        :param pulumi.Input['AccountNetworkRulesArgs'] network_rules: A `network_rules` block as documented below.
        :param pulumi.Input[bool] nfsv3_enabled: Is NFSv3 protocol enabled? Changing this forces a new resource to be created. Defaults to `false`.
        :param pulumi.Input[str] queue_encryption_key_type: The encryption type of the queue service. Possible values are `Service` and `Account`. Changing this forces a new resource to be created. Default value is `Service`.
        :param pulumi.Input['AccountQueuePropertiesArgs'] queue_properties: A `queue_properties` block as defined below.
        :param pulumi.Input['AccountRoutingArgs'] routing: A `routing` block as defined below.
        :param pulumi.Input['AccountSharePropertiesArgs'] share_properties: A `share_properties` block as defined below.
        :param pulumi.Input[bool] shared_access_key_enabled: Indicates whether the storage account permits requests to be authorized with the account access key via Shared Key. If false, then all requests, including shared access signatures, must be authorized with Azure Active Directory (Azure AD). The default value is `true`.
        :param pulumi.Input['AccountStaticWebsiteArgs'] static_website: A `static_website` block as defined below.
        :param pulumi.Input[str] table_encryption_key_type: The encryption type of the table service. Possible values are `Service` and `Account`. Changing this forces a new resource to be created. Default value is `Service`.
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A mapping of tags to assign to the resource.
        """
        pulumi.set(__self__, "account_replication_type", account_replication_type)
        pulumi.set(__self__, "account_tier", account_tier)
        pulumi.set(__self__, "resource_group_name", resource_group_name)
        if access_tier is not None:
            pulumi.set(__self__, "access_tier", access_tier)
        if account_kind is not None:
            pulumi.set(__self__, "account_kind", account_kind)
        if allow_nested_items_to_be_public is not None:
            pulumi.set(__self__, "allow_nested_items_to_be_public", allow_nested_items_to_be_public)
        if azure_files_authentication is not None:
            pulumi.set(__self__, "azure_files_authentication", azure_files_authentication)
        if blob_properties is not None:
            pulumi.set(__self__, "blob_properties", blob_properties)
        if cross_tenant_replication_enabled is not None:
            pulumi.set(__self__, "cross_tenant_replication_enabled", cross_tenant_replication_enabled)
        if custom_domain is not None:
            pulumi.set(__self__, "custom_domain", custom_domain)
        if customer_managed_key is not None:
            pulumi.set(__self__, "customer_managed_key", customer_managed_key)
        if edge_zone is not None:
            pulumi.set(__self__, "edge_zone", edge_zone)
        if enable_https_traffic_only is not None:
            pulumi.set(__self__, "enable_https_traffic_only", enable_https_traffic_only)
        if identity is not None:
            pulumi.set(__self__, "identity", identity)
        if infrastructure_encryption_enabled is not None:
            pulumi.set(__self__, "infrastructure_encryption_enabled", infrastructure_encryption_enabled)
        if is_hns_enabled is not None:
            pulumi.set(__self__, "is_hns_enabled", is_hns_enabled)
        if large_file_share_enabled is not None:
            pulumi.set(__self__, "large_file_share_enabled", large_file_share_enabled)
        if location is not None:
            pulumi.set(__self__, "location", location)
        if min_tls_version is not None:
            pulumi.set(__self__, "min_tls_version", min_tls_version)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if network_rules is not None:
            pulumi.set(__self__, "network_rules", network_rules)
        if nfsv3_enabled is not None:
            pulumi.set(__self__, "nfsv3_enabled", nfsv3_enabled)
        if queue_encryption_key_type is not None:
            pulumi.set(__self__, "queue_encryption_key_type", queue_encryption_key_type)
        if queue_properties is not None:
            pulumi.set(__self__, "queue_properties", queue_properties)
        if routing is not None:
            pulumi.set(__self__, "routing", routing)
        if share_properties is not None:
            pulumi.set(__self__, "share_properties", share_properties)
        if shared_access_key_enabled is not None:
            pulumi.set(__self__, "shared_access_key_enabled", shared_access_key_enabled)
        if static_website is not None:
            pulumi.set(__self__, "static_website", static_website)
        if table_encryption_key_type is not None:
            pulumi.set(__self__, "table_encryption_key_type", table_encryption_key_type)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)

    @property
    @pulumi.getter(name="accountReplicationType")
    def account_replication_type(self) -> pulumi.Input[str]:
        """
        Defines the type of replication to use for this storage account. Valid options are `LRS`, `GRS`, `RAGRS`, `ZRS`, `GZRS` and `RAGZRS`. Changing this forces a new resource to be created when types `LRS`, `GRS` and `RAGRS` are changed to `ZRS`, `GZRS` or `RAGZRS` and vice versa.
        """
        return pulumi.get(self, "account_replication_type")

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

    @property
    @pulumi.getter(name="accountTier")
    def account_tier(self) -> pulumi.Input[str]:
        """
        Defines the Tier to use for this storage account. Valid options are `Standard` and `Premium`. For `BlockBlobStorage` and `FileStorage` accounts only `Premium` is valid. Changing this forces a new resource to be created.
        """
        return pulumi.get(self, "account_tier")

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

    @property
    @pulumi.getter(name="resourceGroupName")
    def resource_group_name(self) -> pulumi.Input[str]:
        """
        The name of the resource group in which to create the storage account. Changing this forces a new resource to be created.
        """
        return pulumi.get(self, "resource_group_name")

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

    @property
    @pulumi.getter(name="accessTier")
    def access_tier(self) -> Optional[pulumi.Input[str]]:
        """
        Defines the access tier for `BlobStorage`, `FileStorage` and `StorageV2` accounts. Valid options are `Hot` and `Cool`, defaults to `Hot`.
        """
        return pulumi.get(self, "access_tier")

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

    @property
    @pulumi.getter(name="accountKind")
    def account_kind(self) -> Optional[pulumi.Input[str]]:
        """
        Defines the Kind of account. Valid options are `BlobStorage`, `BlockBlobStorage`, `FileStorage`, `Storage` and `StorageV2`. Changing this forces a new resource to be created. Defaults to `StorageV2`.
        """
        return pulumi.get(self, "account_kind")

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

    @property
    @pulumi.getter(name="allowNestedItemsToBePublic")
    def allow_nested_items_to_be_public(self) -> Optional[pulumi.Input[bool]]:
        """
        Allow or disallow nested items within this Account to opt into being public. Defaults to `true`.
        """
        return pulumi.get(self, "allow_nested_items_to_be_public")

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

    @property
    @pulumi.getter(name="azureFilesAuthentication")
    def azure_files_authentication(self) -> Optional[pulumi.Input['AccountAzureFilesAuthenticationArgs']]:
        """
        A `azure_files_authentication` block as defined below.
        """
        return pulumi.get(self, "azure_files_authentication")

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

    @property
    @pulumi.getter(name="blobProperties")
    def blob_properties(self) -> Optional[pulumi.Input['AccountBlobPropertiesArgs']]:
        """
        A `blob_properties` block as defined below.
        """
        return pulumi.get(self, "blob_properties")

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

    @property
    @pulumi.getter(name="crossTenantReplicationEnabled")
    def cross_tenant_replication_enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Should cross Tenant replication be enabled? Defaults to `true`.
        """
        return pulumi.get(self, "cross_tenant_replication_enabled")

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

    @property
    @pulumi.getter(name="customDomain")
    def custom_domain(self) -> Optional[pulumi.Input['AccountCustomDomainArgs']]:
        """
        A `custom_domain` block as documented below.
        """
        return pulumi.get(self, "custom_domain")

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

    @property
    @pulumi.getter(name="customerManagedKey")
    def customer_managed_key(self) -> Optional[pulumi.Input['AccountCustomerManagedKeyArgs']]:
        """
        A `customer_managed_key` block as documented below.
        """
        return pulumi.get(self, "customer_managed_key")

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

    @property
    @pulumi.getter(name="edgeZone")
    def edge_zone(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the Edge Zone within the Azure Region where this Storage Account should exist. Changing this forces a new Storage Account to be created.
        """
        return pulumi.get(self, "edge_zone")

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

    @property
    @pulumi.getter(name="enableHttpsTrafficOnly")
    def enable_https_traffic_only(self) -> Optional[pulumi.Input[bool]]:
        """
        Boolean flag which forces HTTPS if enabled, see [here](https://docs.microsoft.com/azure/storage/storage-require-secure-transfer/)
        for more information. Defaults to `true`.
        """
        return pulumi.get(self, "enable_https_traffic_only")

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

    @property
    @pulumi.getter
    def identity(self) -> Optional[pulumi.Input['AccountIdentityArgs']]:
        """
        An `identity` block as defined below.
        """
        return pulumi.get(self, "identity")

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

    @property
    @pulumi.getter(name="infrastructureEncryptionEnabled")
    def infrastructure_encryption_enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Is infrastructure encryption enabled? Changing this forces a new resource to be created. Defaults to `false`.
        """
        return pulumi.get(self, "infrastructure_encryption_enabled")

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

    @property
    @pulumi.getter(name="isHnsEnabled")
    def is_hns_enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Is Hierarchical Namespace enabled? This can be used with Azure Data Lake Storage Gen 2 ([see here for more information](https://docs.microsoft.com/azure/storage/blobs/data-lake-storage-quickstart-create-account/)). Changing this forces a new resource to be created.
        """
        return pulumi.get(self, "is_hns_enabled")

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

    @property
    @pulumi.getter(name="largeFileShareEnabled")
    def large_file_share_enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Is Large File Share Enabled?
        """
        return pulumi.get(self, "large_file_share_enabled")

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

    @property
    @pulumi.getter
    def location(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
        """
        return pulumi.get(self, "location")

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

    @property
    @pulumi.getter(name="minTlsVersion")
    def min_tls_version(self) -> Optional[pulumi.Input[str]]:
        """
        The minimum supported TLS version for the storage account. Possible values are `TLS1_0`, `TLS1_1`, and `TLS1_2`. Defaults to `TLS1_2` for new storage accounts.
        """
        return pulumi.get(self, "min_tls_version")

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

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the name of the storage account. Changing this forces a new resource to be created. This must be unique across the entire Azure service, not just within the resource group.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="networkRules")
    def network_rules(self) -> Optional[pulumi.Input['AccountNetworkRulesArgs']]:
        """
        A `network_rules` block as documented below.
        """
        return pulumi.get(self, "network_rules")

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

    @property
    @pulumi.getter(name="nfsv3Enabled")
    def nfsv3_enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Is NFSv3 protocol enabled? Changing this forces a new resource to be created. Defaults to `false`.
        """
        return pulumi.get(self, "nfsv3_enabled")

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

    @property
    @pulumi.getter(name="queueEncryptionKeyType")
    def queue_encryption_key_type(self) -> Optional[pulumi.Input[str]]:
        """
        The encryption type of the queue service. Possible values are `Service` and `Account`. Changing this forces a new resource to be created. Default value is `Service`.
        """
        return pulumi.get(self, "queue_encryption_key_type")

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

    @property
    @pulumi.getter(name="queueProperties")
    def queue_properties(self) -> Optional[pulumi.Input['AccountQueuePropertiesArgs']]:
        """
        A `queue_properties` block as defined below.
        """
        return pulumi.get(self, "queue_properties")

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

    @property
    @pulumi.getter
    def routing(self) -> Optional[pulumi.Input['AccountRoutingArgs']]:
        """
        A `routing` block as defined below.
        """
        return pulumi.get(self, "routing")

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

    @property
    @pulumi.getter(name="shareProperties")
    def share_properties(self) -> Optional[pulumi.Input['AccountSharePropertiesArgs']]:
        """
        A `share_properties` block as defined below.
        """
        return pulumi.get(self, "share_properties")

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

    @property
    @pulumi.getter(name="sharedAccessKeyEnabled")
    def shared_access_key_enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Indicates whether the storage account permits requests to be authorized with the account access key via Shared Key. If false, then all requests, including shared access signatures, must be authorized with Azure Active Directory (Azure AD). The default value is `true`.
        """
        return pulumi.get(self, "shared_access_key_enabled")

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

    @property
    @pulumi.getter(name="staticWebsite")
    def static_website(self) -> Optional[pulumi.Input['AccountStaticWebsiteArgs']]:
        """
        A `static_website` block as defined below.
        """
        return pulumi.get(self, "static_website")

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

    @property
    @pulumi.getter(name="tableEncryptionKeyType")
    def table_encryption_key_type(self) -> Optional[pulumi.Input[str]]:
        """
        The encryption type of the table service. Possible values are `Service` and `Account`. Changing this forces a new resource to be created. Default value is `Service`.
        """
        return pulumi.get(self, "table_encryption_key_type")

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

    @property
    @pulumi.getter
    def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
        """
        A mapping of tags to assign to the resource.
        """
        return pulumi.get(self, "tags")

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


@pulumi.input_type
class _AccountState:
    def __init__(__self__, *,
                 access_tier: Optional[pulumi.Input[str]] = None,
                 account_kind: Optional[pulumi.Input[str]] = None,
                 account_replication_type: Optional[pulumi.Input[str]] = None,
                 account_tier: Optional[pulumi.Input[str]] = None,
                 allow_nested_items_to_be_public: Optional[pulumi.Input[bool]] = None,
                 azure_files_authentication: Optional[pulumi.Input['AccountAzureFilesAuthenticationArgs']] = None,
                 blob_properties: Optional[pulumi.Input['AccountBlobPropertiesArgs']] = None,
                 cross_tenant_replication_enabled: Optional[pulumi.Input[bool]] = None,
                 custom_domain: Optional[pulumi.Input['AccountCustomDomainArgs']] = None,
                 customer_managed_key: Optional[pulumi.Input['AccountCustomerManagedKeyArgs']] = None,
                 edge_zone: Optional[pulumi.Input[str]] = None,
                 enable_https_traffic_only: Optional[pulumi.Input[bool]] = None,
                 identity: Optional[pulumi.Input['AccountIdentityArgs']] = None,
                 infrastructure_encryption_enabled: Optional[pulumi.Input[bool]] = None,
                 is_hns_enabled: Optional[pulumi.Input[bool]] = None,
                 large_file_share_enabled: Optional[pulumi.Input[bool]] = None,
                 location: Optional[pulumi.Input[str]] = None,
                 min_tls_version: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 network_rules: Optional[pulumi.Input['AccountNetworkRulesArgs']] = None,
                 nfsv3_enabled: Optional[pulumi.Input[bool]] = None,
                 primary_access_key: Optional[pulumi.Input[str]] = None,
                 primary_blob_connection_string: Optional[pulumi.Input[str]] = None,
                 primary_blob_endpoint: Optional[pulumi.Input[str]] = None,
                 primary_blob_host: Optional[pulumi.Input[str]] = None,
                 primary_connection_string: Optional[pulumi.Input[str]] = None,
                 primary_dfs_endpoint: Optional[pulumi.Input[str]] = None,
                 primary_dfs_host: Optional[pulumi.Input[str]] = None,
                 primary_file_endpoint: Optional[pulumi.Input[str]] = None,
                 primary_file_host: Optional[pulumi.Input[str]] = None,
                 primary_location: Optional[pulumi.Input[str]] = None,
                 primary_queue_endpoint: Optional[pulumi.Input[str]] = None,
                 primary_queue_host: Optional[pulumi.Input[str]] = None,
                 primary_table_endpoint: Optional[pulumi.Input[str]] = None,
                 primary_table_host: Optional[pulumi.Input[str]] = None,
                 primary_web_endpoint: Optional[pulumi.Input[str]] = None,
                 primary_web_host: Optional[pulumi.Input[str]] = None,
                 queue_encryption_key_type: Optional[pulumi.Input[str]] = None,
                 queue_properties: Optional[pulumi.Input['AccountQueuePropertiesArgs']] = None,
                 resource_group_name: Optional[pulumi.Input[str]] = None,
                 routing: Optional[pulumi.Input['AccountRoutingArgs']] = None,
                 secondary_access_key: Optional[pulumi.Input[str]] = None,
                 secondary_blob_connection_string: Optional[pulumi.Input[str]] = None,
                 secondary_blob_endpoint: Optional[pulumi.Input[str]] = None,
                 secondary_blob_host: Optional[pulumi.Input[str]] = None,
                 secondary_connection_string: Optional[pulumi.Input[str]] = None,
                 secondary_dfs_endpoint: Optional[pulumi.Input[str]] = None,
                 secondary_dfs_host: Optional[pulumi.Input[str]] = None,
                 secondary_file_endpoint: Optional[pulumi.Input[str]] = None,
                 secondary_file_host: Optional[pulumi.Input[str]] = None,
                 secondary_location: Optional[pulumi.Input[str]] = None,
                 secondary_queue_endpoint: Optional[pulumi.Input[str]] = None,
                 secondary_queue_host: Optional[pulumi.Input[str]] = None,
                 secondary_table_endpoint: Optional[pulumi.Input[str]] = None,
                 secondary_table_host: Optional[pulumi.Input[str]] = None,
                 secondary_web_endpoint: Optional[pulumi.Input[str]] = None,
                 secondary_web_host: Optional[pulumi.Input[str]] = None,
                 share_properties: Optional[pulumi.Input['AccountSharePropertiesArgs']] = None,
                 shared_access_key_enabled: Optional[pulumi.Input[bool]] = None,
                 static_website: Optional[pulumi.Input['AccountStaticWebsiteArgs']] = None,
                 table_encryption_key_type: Optional[pulumi.Input[str]] = None,
                 tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None):
        """
        Input properties used for looking up and filtering Account resources.
        :param pulumi.Input[str] access_tier: Defines the access tier for `BlobStorage`, `FileStorage` and `StorageV2` accounts. Valid options are `Hot` and `Cool`, defaults to `Hot`.
        :param pulumi.Input[str] account_kind: Defines the Kind of account. Valid options are `BlobStorage`, `BlockBlobStorage`, `FileStorage`, `Storage` and `StorageV2`. Changing this forces a new resource to be created. Defaults to `StorageV2`.
        :param pulumi.Input[str] account_replication_type: Defines the type of replication to use for this storage account. Valid options are `LRS`, `GRS`, `RAGRS`, `ZRS`, `GZRS` and `RAGZRS`. Changing this forces a new resource to be created when types `LRS`, `GRS` and `RAGRS` are changed to `ZRS`, `GZRS` or `RAGZRS` and vice versa.
        :param pulumi.Input[str] account_tier: Defines the Tier to use for this storage account. Valid options are `Standard` and `Premium`. For `BlockBlobStorage` and `FileStorage` accounts only `Premium` is valid. Changing this forces a new resource to be created.
        :param pulumi.Input[bool] allow_nested_items_to_be_public: Allow or disallow nested items within this Account to opt into being public. Defaults to `true`.
        :param pulumi.Input['AccountAzureFilesAuthenticationArgs'] azure_files_authentication: A `azure_files_authentication` block as defined below.
        :param pulumi.Input['AccountBlobPropertiesArgs'] blob_properties: A `blob_properties` block as defined below.
        :param pulumi.Input[bool] cross_tenant_replication_enabled: Should cross Tenant replication be enabled? Defaults to `true`.
        :param pulumi.Input['AccountCustomDomainArgs'] custom_domain: A `custom_domain` block as documented below.
        :param pulumi.Input['AccountCustomerManagedKeyArgs'] customer_managed_key: A `customer_managed_key` block as documented below.
        :param pulumi.Input[str] edge_zone: Specifies the Edge Zone within the Azure Region where this Storage Account should exist. Changing this forces a new Storage Account to be created.
        :param pulumi.Input[bool] enable_https_traffic_only: Boolean flag which forces HTTPS if enabled, see [here](https://docs.microsoft.com/azure/storage/storage-require-secure-transfer/)
               for more information. Defaults to `true`.
        :param pulumi.Input['AccountIdentityArgs'] identity: An `identity` block as defined below.
        :param pulumi.Input[bool] infrastructure_encryption_enabled: Is infrastructure encryption enabled? Changing this forces a new resource to be created. Defaults to `false`.
        :param pulumi.Input[bool] is_hns_enabled: Is Hierarchical Namespace enabled? This can be used with Azure Data Lake Storage Gen 2 ([see here for more information](https://docs.microsoft.com/azure/storage/blobs/data-lake-storage-quickstart-create-account/)). Changing this forces a new resource to be created.
        :param pulumi.Input[bool] large_file_share_enabled: Is Large File Share Enabled?
        :param pulumi.Input[str] location: Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
        :param pulumi.Input[str] min_tls_version: The minimum supported TLS version for the storage account. Possible values are `TLS1_0`, `TLS1_1`, and `TLS1_2`. Defaults to `TLS1_2` for new storage accounts.
        :param pulumi.Input[str] name: Specifies the name of the storage account. Changing this forces a new resource to be created. This must be unique across the entire Azure service, not just within the resource group.
        :param pulumi.Input['AccountNetworkRulesArgs'] network_rules: A `network_rules` block as documented below.
        :param pulumi.Input[bool] nfsv3_enabled: Is NFSv3 protocol enabled? Changing this forces a new resource to be created. Defaults to `false`.
        :param pulumi.Input[str] primary_access_key: The primary access key for the storage account.
        :param pulumi.Input[str] primary_blob_connection_string: The connection string associated with the primary blob location.
        :param pulumi.Input[str] primary_blob_endpoint: The endpoint URL for blob storage in the primary location.
        :param pulumi.Input[str] primary_blob_host: The hostname with port if applicable for blob storage in the primary location.
        :param pulumi.Input[str] primary_connection_string: The connection string associated with the primary location.
        :param pulumi.Input[str] primary_dfs_endpoint: The endpoint URL for DFS storage in the primary location.
        :param pulumi.Input[str] primary_dfs_host: The hostname with port if applicable for DFS storage in the primary location.
        :param pulumi.Input[str] primary_file_endpoint: The endpoint URL for file storage in the primary location.
        :param pulumi.Input[str] primary_file_host: The hostname with port if applicable for file storage in the primary location.
        :param pulumi.Input[str] primary_location: The primary location of the storage account.
        :param pulumi.Input[str] primary_queue_endpoint: The endpoint URL for queue storage in the primary location.
        :param pulumi.Input[str] primary_queue_host: The hostname with port if applicable for queue storage in the primary location.
        :param pulumi.Input[str] primary_table_endpoint: The endpoint URL for table storage in the primary location.
        :param pulumi.Input[str] primary_table_host: The hostname with port if applicable for table storage in the primary location.
        :param pulumi.Input[str] primary_web_endpoint: The endpoint URL for web storage in the primary location.
        :param pulumi.Input[str] primary_web_host: The hostname with port if applicable for web storage in the primary location.
        :param pulumi.Input[str] queue_encryption_key_type: The encryption type of the queue service. Possible values are `Service` and `Account`. Changing this forces a new resource to be created. Default value is `Service`.
        :param pulumi.Input['AccountQueuePropertiesArgs'] queue_properties: A `queue_properties` block as defined below.
        :param pulumi.Input[str] resource_group_name: The name of the resource group in which to create the storage account. Changing this forces a new resource to be created.
        :param pulumi.Input['AccountRoutingArgs'] routing: A `routing` block as defined below.
        :param pulumi.Input[str] secondary_access_key: The secondary access key for the storage account.
        :param pulumi.Input[str] secondary_blob_connection_string: The connection string associated with the secondary blob location.
        :param pulumi.Input[str] secondary_blob_endpoint: The endpoint URL for blob storage in the secondary location.
        :param pulumi.Input[str] secondary_blob_host: The hostname with port if applicable for blob storage in the secondary location.
        :param pulumi.Input[str] secondary_connection_string: The connection string associated with the secondary location.
        :param pulumi.Input[str] secondary_dfs_endpoint: The endpoint URL for DFS storage in the secondary location.
        :param pulumi.Input[str] secondary_dfs_host: The hostname with port if applicable for DFS storage in the secondary location.
        :param pulumi.Input[str] secondary_file_endpoint: The endpoint URL for file storage in the secondary location.
        :param pulumi.Input[str] secondary_file_host: The hostname with port if applicable for file storage in the secondary location.
        :param pulumi.Input[str] secondary_location: The secondary location of the storage account.
        :param pulumi.Input[str] secondary_queue_endpoint: The endpoint URL for queue storage in the secondary location.
        :param pulumi.Input[str] secondary_queue_host: The hostname with port if applicable for queue storage in the secondary location.
        :param pulumi.Input[str] secondary_table_endpoint: The endpoint URL for table storage in the secondary location.
        :param pulumi.Input[str] secondary_table_host: The hostname with port if applicable for table storage in the secondary location.
        :param pulumi.Input[str] secondary_web_endpoint: The endpoint URL for web storage in the secondary location.
        :param pulumi.Input[str] secondary_web_host: The hostname with port if applicable for web storage in the secondary location.
        :param pulumi.Input['AccountSharePropertiesArgs'] share_properties: A `share_properties` block as defined below.
        :param pulumi.Input[bool] shared_access_key_enabled: Indicates whether the storage account permits requests to be authorized with the account access key via Shared Key. If false, then all requests, including shared access signatures, must be authorized with Azure Active Directory (Azure AD). The default value is `true`.
        :param pulumi.Input['AccountStaticWebsiteArgs'] static_website: A `static_website` block as defined below.
        :param pulumi.Input[str] table_encryption_key_type: The encryption type of the table service. Possible values are `Service` and `Account`. Changing this forces a new resource to be created. Default value is `Service`.
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A mapping of tags to assign to the resource.
        """
        if access_tier is not None:
            pulumi.set(__self__, "access_tier", access_tier)
        if account_kind is not None:
            pulumi.set(__self__, "account_kind", account_kind)
        if account_replication_type is not None:
            pulumi.set(__self__, "account_replication_type", account_replication_type)
        if account_tier is not None:
            pulumi.set(__self__, "account_tier", account_tier)
        if allow_nested_items_to_be_public is not None:
            pulumi.set(__self__, "allow_nested_items_to_be_public", allow_nested_items_to_be_public)
        if azure_files_authentication is not None:
            pulumi.set(__self__, "azure_files_authentication", azure_files_authentication)
        if blob_properties is not None:
            pulumi.set(__self__, "blob_properties", blob_properties)
        if cross_tenant_replication_enabled is not None:
            pulumi.set(__self__, "cross_tenant_replication_enabled", cross_tenant_replication_enabled)
        if custom_domain is not None:
            pulumi.set(__self__, "custom_domain", custom_domain)
        if customer_managed_key is not None:
            pulumi.set(__self__, "customer_managed_key", customer_managed_key)
        if edge_zone is not None:
            pulumi.set(__self__, "edge_zone", edge_zone)
        if enable_https_traffic_only is not None:
            pulumi.set(__self__, "enable_https_traffic_only", enable_https_traffic_only)
        if identity is not None:
            pulumi.set(__self__, "identity", identity)
        if infrastructure_encryption_enabled is not None:
            pulumi.set(__self__, "infrastructure_encryption_enabled", infrastructure_encryption_enabled)
        if is_hns_enabled is not None:
            pulumi.set(__self__, "is_hns_enabled", is_hns_enabled)
        if large_file_share_enabled is not None:
            pulumi.set(__self__, "large_file_share_enabled", large_file_share_enabled)
        if location is not None:
            pulumi.set(__self__, "location", location)
        if min_tls_version is not None:
            pulumi.set(__self__, "min_tls_version", min_tls_version)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if network_rules is not None:
            pulumi.set(__self__, "network_rules", network_rules)
        if nfsv3_enabled is not None:
            pulumi.set(__self__, "nfsv3_enabled", nfsv3_enabled)
        if primary_access_key is not None:
            pulumi.set(__self__, "primary_access_key", primary_access_key)
        if primary_blob_connection_string is not None:
            pulumi.set(__self__, "primary_blob_connection_string", primary_blob_connection_string)
        if primary_blob_endpoint is not None:
            pulumi.set(__self__, "primary_blob_endpoint", primary_blob_endpoint)
        if primary_blob_host is not None:
            pulumi.set(__self__, "primary_blob_host", primary_blob_host)
        if primary_connection_string is not None:
            pulumi.set(__self__, "primary_connection_string", primary_connection_string)
        if primary_dfs_endpoint is not None:
            pulumi.set(__self__, "primary_dfs_endpoint", primary_dfs_endpoint)
        if primary_dfs_host is not None:
            pulumi.set(__self__, "primary_dfs_host", primary_dfs_host)
        if primary_file_endpoint is not None:
            pulumi.set(__self__, "primary_file_endpoint", primary_file_endpoint)
        if primary_file_host is not None:
            pulumi.set(__self__, "primary_file_host", primary_file_host)
        if primary_location is not None:
            pulumi.set(__self__, "primary_location", primary_location)
        if primary_queue_endpoint is not None:
            pulumi.set(__self__, "primary_queue_endpoint", primary_queue_endpoint)
        if primary_queue_host is not None:
            pulumi.set(__self__, "primary_queue_host", primary_queue_host)
        if primary_table_endpoint is not None:
            pulumi.set(__self__, "primary_table_endpoint", primary_table_endpoint)
        if primary_table_host is not None:
            pulumi.set(__self__, "primary_table_host", primary_table_host)
        if primary_web_endpoint is not None:
            pulumi.set(__self__, "primary_web_endpoint", primary_web_endpoint)
        if primary_web_host is not None:
            pulumi.set(__self__, "primary_web_host", primary_web_host)
        if queue_encryption_key_type is not None:
            pulumi.set(__self__, "queue_encryption_key_type", queue_encryption_key_type)
        if queue_properties is not None:
            pulumi.set(__self__, "queue_properties", queue_properties)
        if resource_group_name is not None:
            pulumi.set(__self__, "resource_group_name", resource_group_name)
        if routing is not None:
            pulumi.set(__self__, "routing", routing)
        if secondary_access_key is not None:
            pulumi.set(__self__, "secondary_access_key", secondary_access_key)
        if secondary_blob_connection_string is not None:
            pulumi.set(__self__, "secondary_blob_connection_string", secondary_blob_connection_string)
        if secondary_blob_endpoint is not None:
            pulumi.set(__self__, "secondary_blob_endpoint", secondary_blob_endpoint)
        if secondary_blob_host is not None:
            pulumi.set(__self__, "secondary_blob_host", secondary_blob_host)
        if secondary_connection_string is not None:
            pulumi.set(__self__, "secondary_connection_string", secondary_connection_string)
        if secondary_dfs_endpoint is not None:
            pulumi.set(__self__, "secondary_dfs_endpoint", secondary_dfs_endpoint)
        if secondary_dfs_host is not None:
            pulumi.set(__self__, "secondary_dfs_host", secondary_dfs_host)
        if secondary_file_endpoint is not None:
            pulumi.set(__self__, "secondary_file_endpoint", secondary_file_endpoint)
        if secondary_file_host is not None:
            pulumi.set(__self__, "secondary_file_host", secondary_file_host)
        if secondary_location is not None:
            pulumi.set(__self__, "secondary_location", secondary_location)
        if secondary_queue_endpoint is not None:
            pulumi.set(__self__, "secondary_queue_endpoint", secondary_queue_endpoint)
        if secondary_queue_host is not None:
            pulumi.set(__self__, "secondary_queue_host", secondary_queue_host)
        if secondary_table_endpoint is not None:
            pulumi.set(__self__, "secondary_table_endpoint", secondary_table_endpoint)
        if secondary_table_host is not None:
            pulumi.set(__self__, "secondary_table_host", secondary_table_host)
        if secondary_web_endpoint is not None:
            pulumi.set(__self__, "secondary_web_endpoint", secondary_web_endpoint)
        if secondary_web_host is not None:
            pulumi.set(__self__, "secondary_web_host", secondary_web_host)
        if share_properties is not None:
            pulumi.set(__self__, "share_properties", share_properties)
        if shared_access_key_enabled is not None:
            pulumi.set(__self__, "shared_access_key_enabled", shared_access_key_enabled)
        if static_website is not None:
            pulumi.set(__self__, "static_website", static_website)
        if table_encryption_key_type is not None:
            pulumi.set(__self__, "table_encryption_key_type", table_encryption_key_type)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)

    @property
    @pulumi.getter(name="accessTier")
    def access_tier(self) -> Optional[pulumi.Input[str]]:
        """
        Defines the access tier for `BlobStorage`, `FileStorage` and `StorageV2` accounts. Valid options are `Hot` and `Cool`, defaults to `Hot`.
        """
        return pulumi.get(self, "access_tier")

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

    @property
    @pulumi.getter(name="accountKind")
    def account_kind(self) -> Optional[pulumi.Input[str]]:
        """
        Defines the Kind of account. Valid options are `BlobStorage`, `BlockBlobStorage`, `FileStorage`, `Storage` and `StorageV2`. Changing this forces a new resource to be created. Defaults to `StorageV2`.
        """
        return pulumi.get(self, "account_kind")

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

    @property
    @pulumi.getter(name="accountReplicationType")
    def account_replication_type(self) -> Optional[pulumi.Input[str]]:
        """
        Defines the type of replication to use for this storage account. Valid options are `LRS`, `GRS`, `RAGRS`, `ZRS`, `GZRS` and `RAGZRS`. Changing this forces a new resource to be created when types `LRS`, `GRS` and `RAGRS` are changed to `ZRS`, `GZRS` or `RAGZRS` and vice versa.
        """
        return pulumi.get(self, "account_replication_type")

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

    @property
    @pulumi.getter(name="accountTier")
    def account_tier(self) -> Optional[pulumi.Input[str]]:
        """
        Defines the Tier to use for this storage account. Valid options are `Standard` and `Premium`. For `BlockBlobStorage` and `FileStorage` accounts only `Premium` is valid. Changing this forces a new resource to be created.
        """
        return pulumi.get(self, "account_tier")

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

    @property
    @pulumi.getter(name="allowNestedItemsToBePublic")
    def allow_nested_items_to_be_public(self) -> Optional[pulumi.Input[bool]]:
        """
        Allow or disallow nested items within this Account to opt into being public. Defaults to `true`.
        """
        return pulumi.get(self, "allow_nested_items_to_be_public")

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

    @property
    @pulumi.getter(name="azureFilesAuthentication")
    def azure_files_authentication(self) -> Optional[pulumi.Input['AccountAzureFilesAuthenticationArgs']]:
        """
        A `azure_files_authentication` block as defined below.
        """
        return pulumi.get(self, "azure_files_authentication")

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

    @property
    @pulumi.getter(name="blobProperties")
    def blob_properties(self) -> Optional[pulumi.Input['AccountBlobPropertiesArgs']]:
        """
        A `blob_properties` block as defined below.
        """
        return pulumi.get(self, "blob_properties")

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

    @property
    @pulumi.getter(name="crossTenantReplicationEnabled")
    def cross_tenant_replication_enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Should cross Tenant replication be enabled? Defaults to `true`.
        """
        return pulumi.get(self, "cross_tenant_replication_enabled")

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

    @property
    @pulumi.getter(name="customDomain")
    def custom_domain(self) -> Optional[pulumi.Input['AccountCustomDomainArgs']]:
        """
        A `custom_domain` block as documented below.
        """
        return pulumi.get(self, "custom_domain")

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

    @property
    @pulumi.getter(name="customerManagedKey")
    def customer_managed_key(self) -> Optional[pulumi.Input['AccountCustomerManagedKeyArgs']]:
        """
        A `customer_managed_key` block as documented below.
        """
        return pulumi.get(self, "customer_managed_key")

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

    @property
    @pulumi.getter(name="edgeZone")
    def edge_zone(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the Edge Zone within the Azure Region where this Storage Account should exist. Changing this forces a new Storage Account to be created.
        """
        return pulumi.get(self, "edge_zone")

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

    @property
    @pulumi.getter(name="enableHttpsTrafficOnly")
    def enable_https_traffic_only(self) -> Optional[pulumi.Input[bool]]:
        """
        Boolean flag which forces HTTPS if enabled, see [here](https://docs.microsoft.com/azure/storage/storage-require-secure-transfer/)
        for more information. Defaults to `true`.
        """
        return pulumi.get(self, "enable_https_traffic_only")

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

    @property
    @pulumi.getter
    def identity(self) -> Optional[pulumi.Input['AccountIdentityArgs']]:
        """
        An `identity` block as defined below.
        """
        return pulumi.get(self, "identity")

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

    @property
    @pulumi.getter(name="infrastructureEncryptionEnabled")
    def infrastructure_encryption_enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Is infrastructure encryption enabled? Changing this forces a new resource to be created. Defaults to `false`.
        """
        return pulumi.get(self, "infrastructure_encryption_enabled")

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

    @property
    @pulumi.getter(name="isHnsEnabled")
    def is_hns_enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Is Hierarchical Namespace enabled? This can be used with Azure Data Lake Storage Gen 2 ([see here for more information](https://docs.microsoft.com/azure/storage/blobs/data-lake-storage-quickstart-create-account/)). Changing this forces a new resource to be created.
        """
        return pulumi.get(self, "is_hns_enabled")

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

    @property
    @pulumi.getter(name="largeFileShareEnabled")
    def large_file_share_enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Is Large File Share Enabled?
        """
        return pulumi.get(self, "large_file_share_enabled")

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

    @property
    @pulumi.getter
    def location(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
        """
        return pulumi.get(self, "location")

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

    @property
    @pulumi.getter(name="minTlsVersion")
    def min_tls_version(self) -> Optional[pulumi.Input[str]]:
        """
        The minimum supported TLS version for the storage account. Possible values are `TLS1_0`, `TLS1_1`, and `TLS1_2`. Defaults to `TLS1_2` for new storage accounts.
        """
        return pulumi.get(self, "min_tls_version")

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

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the name of the storage account. Changing this forces a new resource to be created. This must be unique across the entire Azure service, not just within the resource group.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="networkRules")
    def network_rules(self) -> Optional[pulumi.Input['AccountNetworkRulesArgs']]:
        """
        A `network_rules` block as documented below.
        """
        return pulumi.get(self, "network_rules")

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

    @property
    @pulumi.getter(name="nfsv3Enabled")
    def nfsv3_enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Is NFSv3 protocol enabled? Changing this forces a new resource to be created. Defaults to `false`.
        """
        return pulumi.get(self, "nfsv3_enabled")

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

    @property
    @pulumi.getter(name="primaryAccessKey")
    def primary_access_key(self) -> Optional[pulumi.Input[str]]:
        """
        The primary access key for the storage account.
        """
        return pulumi.get(self, "primary_access_key")

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

    @property
    @pulumi.getter(name="primaryBlobConnectionString")
    def primary_blob_connection_string(self) -> Optional[pulumi.Input[str]]:
        """
        The connection string associated with the primary blob location.
        """
        return pulumi.get(self, "primary_blob_connection_string")

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

    @property
    @pulumi.getter(name="primaryBlobEndpoint")
    def primary_blob_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The endpoint URL for blob storage in the primary location.
        """
        return pulumi.get(self, "primary_blob_endpoint")

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

    @property
    @pulumi.getter(name="primaryBlobHost")
    def primary_blob_host(self) -> Optional[pulumi.Input[str]]:
        """
        The hostname with port if applicable for blob storage in the primary location.
        """
        return pulumi.get(self, "primary_blob_host")

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

    @property
    @pulumi.getter(name="primaryConnectionString")
    def primary_connection_string(self) -> Optional[pulumi.Input[str]]:
        """
        The connection string associated with the primary location.
        """
        return pulumi.get(self, "primary_connection_string")

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

    @property
    @pulumi.getter(name="primaryDfsEndpoint")
    def primary_dfs_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The endpoint URL for DFS storage in the primary location.
        """
        return pulumi.get(self, "primary_dfs_endpoint")

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

    @property
    @pulumi.getter(name="primaryDfsHost")
    def primary_dfs_host(self) -> Optional[pulumi.Input[str]]:
        """
        The hostname with port if applicable for DFS storage in the primary location.
        """
        return pulumi.get(self, "primary_dfs_host")

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

    @property
    @pulumi.getter(name="primaryFileEndpoint")
    def primary_file_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The endpoint URL for file storage in the primary location.
        """
        return pulumi.get(self, "primary_file_endpoint")

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

    @property
    @pulumi.getter(name="primaryFileHost")
    def primary_file_host(self) -> Optional[pulumi.Input[str]]:
        """
        The hostname with port if applicable for file storage in the primary location.
        """
        return pulumi.get(self, "primary_file_host")

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

    @property
    @pulumi.getter(name="primaryLocation")
    def primary_location(self) -> Optional[pulumi.Input[str]]:
        """
        The primary location of the storage account.
        """
        return pulumi.get(self, "primary_location")

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

    @property
    @pulumi.getter(name="primaryQueueEndpoint")
    def primary_queue_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The endpoint URL for queue storage in the primary location.
        """
        return pulumi.get(self, "primary_queue_endpoint")

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

    @property
    @pulumi.getter(name="primaryQueueHost")
    def primary_queue_host(self) -> Optional[pulumi.Input[str]]:
        """
        The hostname with port if applicable for queue storage in the primary location.
        """
        return pulumi.get(self, "primary_queue_host")

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

    @property
    @pulumi.getter(name="primaryTableEndpoint")
    def primary_table_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The endpoint URL for table storage in the primary location.
        """
        return pulumi.get(self, "primary_table_endpoint")

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

    @property
    @pulumi.getter(name="primaryTableHost")
    def primary_table_host(self) -> Optional[pulumi.Input[str]]:
        """
        The hostname with port if applicable for table storage in the primary location.
        """
        return pulumi.get(self, "primary_table_host")

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

    @property
    @pulumi.getter(name="primaryWebEndpoint")
    def primary_web_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The endpoint URL for web storage in the primary location.
        """
        return pulumi.get(self, "primary_web_endpoint")

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

    @property
    @pulumi.getter(name="primaryWebHost")
    def primary_web_host(self) -> Optional[pulumi.Input[str]]:
        """
        The hostname with port if applicable for web storage in the primary location.
        """
        return pulumi.get(self, "primary_web_host")

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

    @property
    @pulumi.getter(name="queueEncryptionKeyType")
    def queue_encryption_key_type(self) -> Optional[pulumi.Input[str]]:
        """
        The encryption type of the queue service. Possible values are `Service` and `Account`. Changing this forces a new resource to be created. Default value is `Service`.
        """
        return pulumi.get(self, "queue_encryption_key_type")

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

    @property
    @pulumi.getter(name="queueProperties")
    def queue_properties(self) -> Optional[pulumi.Input['AccountQueuePropertiesArgs']]:
        """
        A `queue_properties` block as defined below.
        """
        return pulumi.get(self, "queue_properties")

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

    @property
    @pulumi.getter(name="resourceGroupName")
    def resource_group_name(self) -> Optional[pulumi.Input[str]]:
        """
        The name of the resource group in which to create the storage account. Changing this forces a new resource to be created.
        """
        return pulumi.get(self, "resource_group_name")

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

    @property
    @pulumi.getter
    def routing(self) -> Optional[pulumi.Input['AccountRoutingArgs']]:
        """
        A `routing` block as defined below.
        """
        return pulumi.get(self, "routing")

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

    @property
    @pulumi.getter(name="secondaryAccessKey")
    def secondary_access_key(self) -> Optional[pulumi.Input[str]]:
        """
        The secondary access key for the storage account.
        """
        return pulumi.get(self, "secondary_access_key")

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

    @property
    @pulumi.getter(name="secondaryBlobConnectionString")
    def secondary_blob_connection_string(self) -> Optional[pulumi.Input[str]]:
        """
        The connection string associated with the secondary blob location.
        """
        return pulumi.get(self, "secondary_blob_connection_string")

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

    @property
    @pulumi.getter(name="secondaryBlobEndpoint")
    def secondary_blob_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The endpoint URL for blob storage in the secondary location.
        """
        return pulumi.get(self, "secondary_blob_endpoint")

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

    @property
    @pulumi.getter(name="secondaryBlobHost")
    def secondary_blob_host(self) -> Optional[pulumi.Input[str]]:
        """
        The hostname with port if applicable for blob storage in the secondary location.
        """
        return pulumi.get(self, "secondary_blob_host")

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

    @property
    @pulumi.getter(name="secondaryConnectionString")
    def secondary_connection_string(self) -> Optional[pulumi.Input[str]]:
        """
        The connection string associated with the secondary location.
        """
        return pulumi.get(self, "secondary_connection_string")

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

    @property
    @pulumi.getter(name="secondaryDfsEndpoint")
    def secondary_dfs_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The endpoint URL for DFS storage in the secondary location.
        """
        return pulumi.get(self, "secondary_dfs_endpoint")

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

    @property
    @pulumi.getter(name="secondaryDfsHost")
    def secondary_dfs_host(self) -> Optional[pulumi.Input[str]]:
        """
        The hostname with port if applicable for DFS storage in the secondary location.
        """
        return pulumi.get(self, "secondary_dfs_host")

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

    @property
    @pulumi.getter(name="secondaryFileEndpoint")
    def secondary_file_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The endpoint URL for file storage in the secondary location.
        """
        return pulumi.get(self, "secondary_file_endpoint")

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

    @property
    @pulumi.getter(name="secondaryFileHost")
    def secondary_file_host(self) -> Optional[pulumi.Input[str]]:
        """
        The hostname with port if applicable for file storage in the secondary location.
        """
        return pulumi.get(self, "secondary_file_host")

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

    @property
    @pulumi.getter(name="secondaryLocation")
    def secondary_location(self) -> Optional[pulumi.Input[str]]:
        """
        The secondary location of the storage account.
        """
        return pulumi.get(self, "secondary_location")

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

    @property
    @pulumi.getter(name="secondaryQueueEndpoint")
    def secondary_queue_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The endpoint URL for queue storage in the secondary location.
        """
        return pulumi.get(self, "secondary_queue_endpoint")

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

    @property
    @pulumi.getter(name="secondaryQueueHost")
    def secondary_queue_host(self) -> Optional[pulumi.Input[str]]:
        """
        The hostname with port if applicable for queue storage in the secondary location.
        """
        return pulumi.get(self, "secondary_queue_host")

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

    @property
    @pulumi.getter(name="secondaryTableEndpoint")
    def secondary_table_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The endpoint URL for table storage in the secondary location.
        """
        return pulumi.get(self, "secondary_table_endpoint")

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

    @property
    @pulumi.getter(name="secondaryTableHost")
    def secondary_table_host(self) -> Optional[pulumi.Input[str]]:
        """
        The hostname with port if applicable for table storage in the secondary location.
        """
        return pulumi.get(self, "secondary_table_host")

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

    @property
    @pulumi.getter(name="secondaryWebEndpoint")
    def secondary_web_endpoint(self) -> Optional[pulumi.Input[str]]:
        """
        The endpoint URL for web storage in the secondary location.
        """
        return pulumi.get(self, "secondary_web_endpoint")

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

    @property
    @pulumi.getter(name="secondaryWebHost")
    def secondary_web_host(self) -> Optional[pulumi.Input[str]]:
        """
        The hostname with port if applicable for web storage in the secondary location.
        """
        return pulumi.get(self, "secondary_web_host")

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

    @property
    @pulumi.getter(name="shareProperties")
    def share_properties(self) -> Optional[pulumi.Input['AccountSharePropertiesArgs']]:
        """
        A `share_properties` block as defined below.
        """
        return pulumi.get(self, "share_properties")

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

    @property
    @pulumi.getter(name="sharedAccessKeyEnabled")
    def shared_access_key_enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Indicates whether the storage account permits requests to be authorized with the account access key via Shared Key. If false, then all requests, including shared access signatures, must be authorized with Azure Active Directory (Azure AD). The default value is `true`.
        """
        return pulumi.get(self, "shared_access_key_enabled")

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

    @property
    @pulumi.getter(name="staticWebsite")
    def static_website(self) -> Optional[pulumi.Input['AccountStaticWebsiteArgs']]:
        """
        A `static_website` block as defined below.
        """
        return pulumi.get(self, "static_website")

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

    @property
    @pulumi.getter(name="tableEncryptionKeyType")
    def table_encryption_key_type(self) -> Optional[pulumi.Input[str]]:
        """
        The encryption type of the table service. Possible values are `Service` and `Account`. Changing this forces a new resource to be created. Default value is `Service`.
        """
        return pulumi.get(self, "table_encryption_key_type")

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

    @property
    @pulumi.getter
    def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
        """
        A mapping of tags to assign to the resource.
        """
        return pulumi.get(self, "tags")

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


class Account(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 access_tier: Optional[pulumi.Input[str]] = None,
                 account_kind: Optional[pulumi.Input[str]] = None,
                 account_replication_type: Optional[pulumi.Input[str]] = None,
                 account_tier: Optional[pulumi.Input[str]] = None,
                 allow_nested_items_to_be_public: Optional[pulumi.Input[bool]] = None,
                 azure_files_authentication: Optional[pulumi.Input[pulumi.InputType['AccountAzureFilesAuthenticationArgs']]] = None,
                 blob_properties: Optional[pulumi.Input[pulumi.InputType['AccountBlobPropertiesArgs']]] = None,
                 cross_tenant_replication_enabled: Optional[pulumi.Input[bool]] = None,
                 custom_domain: Optional[pulumi.Input[pulumi.InputType['AccountCustomDomainArgs']]] = None,
                 customer_managed_key: Optional[pulumi.Input[pulumi.InputType['AccountCustomerManagedKeyArgs']]] = None,
                 edge_zone: Optional[pulumi.Input[str]] = None,
                 enable_https_traffic_only: Optional[pulumi.Input[bool]] = None,
                 identity: Optional[pulumi.Input[pulumi.InputType['AccountIdentityArgs']]] = None,
                 infrastructure_encryption_enabled: Optional[pulumi.Input[bool]] = None,
                 is_hns_enabled: Optional[pulumi.Input[bool]] = None,
                 large_file_share_enabled: Optional[pulumi.Input[bool]] = None,
                 location: Optional[pulumi.Input[str]] = None,
                 min_tls_version: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 network_rules: Optional[pulumi.Input[pulumi.InputType['AccountNetworkRulesArgs']]] = None,
                 nfsv3_enabled: Optional[pulumi.Input[bool]] = None,
                 queue_encryption_key_type: Optional[pulumi.Input[str]] = None,
                 queue_properties: Optional[pulumi.Input[pulumi.InputType['AccountQueuePropertiesArgs']]] = None,
                 resource_group_name: Optional[pulumi.Input[str]] = None,
                 routing: Optional[pulumi.Input[pulumi.InputType['AccountRoutingArgs']]] = None,
                 share_properties: Optional[pulumi.Input[pulumi.InputType['AccountSharePropertiesArgs']]] = None,
                 shared_access_key_enabled: Optional[pulumi.Input[bool]] = None,
                 static_website: Optional[pulumi.Input[pulumi.InputType['AccountStaticWebsiteArgs']]] = None,
                 table_encryption_key_type: Optional[pulumi.Input[str]] = None,
                 tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 __props__=None):
        """
        Manages an Azure Storage Account.

        ## Example Usage

        ```python
        import pulumi
        import pulumi_azure as azure

        example_resource_group = azure.core.ResourceGroup("exampleResourceGroup", location="West Europe")
        example_account = azure.storage.Account("exampleAccount",
            resource_group_name=example_resource_group.name,
            location=example_resource_group.location,
            account_tier="Standard",
            account_replication_type="GRS",
            tags={
                "environment": "staging",
            })
        ```
        ### With Network Rules

        ```python
        import pulumi
        import pulumi_azure as azure

        example_resource_group = azure.core.ResourceGroup("exampleResourceGroup", location="West Europe")
        example_virtual_network = azure.network.VirtualNetwork("exampleVirtualNetwork",
            address_spaces=["10.0.0.0/16"],
            location=example_resource_group.location,
            resource_group_name=example_resource_group.name)
        example_subnet = azure.network.Subnet("exampleSubnet",
            resource_group_name=example_resource_group.name,
            virtual_network_name=example_virtual_network.name,
            address_prefixes=["10.0.2.0/24"],
            service_endpoints=[
                "Microsoft.Sql",
                "Microsoft.Storage",
            ])
        example_account = azure.storage.Account("exampleAccount",
            resource_group_name=example_resource_group.name,
            location=example_resource_group.location,
            account_tier="Standard",
            account_replication_type="LRS",
            network_rules=azure.storage.AccountNetworkRulesArgs(
                default_action="Deny",
                ip_rules=["100.0.0.1"],
                virtual_network_subnet_ids=[example_subnet.id],
            ),
            tags={
                "environment": "staging",
            })
        ```

        ## Import

        Storage Accounts can be imported using the `resource id`, e.g.

        ```sh
         $ pulumi import azure:storage/account:Account storageAcc1 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myresourcegroup/providers/Microsoft.Storage/storageAccounts/myaccount
        ```

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[str] access_tier: Defines the access tier for `BlobStorage`, `FileStorage` and `StorageV2` accounts. Valid options are `Hot` and `Cool`, defaults to `Hot`.
        :param pulumi.Input[str] account_kind: Defines the Kind of account. Valid options are `BlobStorage`, `BlockBlobStorage`, `FileStorage`, `Storage` and `StorageV2`. Changing this forces a new resource to be created. Defaults to `StorageV2`.
        :param pulumi.Input[str] account_replication_type: Defines the type of replication to use for this storage account. Valid options are `LRS`, `GRS`, `RAGRS`, `ZRS`, `GZRS` and `RAGZRS`. Changing this forces a new resource to be created when types `LRS`, `GRS` and `RAGRS` are changed to `ZRS`, `GZRS` or `RAGZRS` and vice versa.
        :param pulumi.Input[str] account_tier: Defines the Tier to use for this storage account. Valid options are `Standard` and `Premium`. For `BlockBlobStorage` and `FileStorage` accounts only `Premium` is valid. Changing this forces a new resource to be created.
        :param pulumi.Input[bool] allow_nested_items_to_be_public: Allow or disallow nested items within this Account to opt into being public. Defaults to `true`.
        :param pulumi.Input[pulumi.InputType['AccountAzureFilesAuthenticationArgs']] azure_files_authentication: A `azure_files_authentication` block as defined below.
        :param pulumi.Input[pulumi.InputType['AccountBlobPropertiesArgs']] blob_properties: A `blob_properties` block as defined below.
        :param pulumi.Input[bool] cross_tenant_replication_enabled: Should cross Tenant replication be enabled? Defaults to `true`.
        :param pulumi.Input[pulumi.InputType['AccountCustomDomainArgs']] custom_domain: A `custom_domain` block as documented below.
        :param pulumi.Input[pulumi.InputType['AccountCustomerManagedKeyArgs']] customer_managed_key: A `customer_managed_key` block as documented below.
        :param pulumi.Input[str] edge_zone: Specifies the Edge Zone within the Azure Region where this Storage Account should exist. Changing this forces a new Storage Account to be created.
        :param pulumi.Input[bool] enable_https_traffic_only: Boolean flag which forces HTTPS if enabled, see [here](https://docs.microsoft.com/azure/storage/storage-require-secure-transfer/)
               for more information. Defaults to `true`.
        :param pulumi.Input[pulumi.InputType['AccountIdentityArgs']] identity: An `identity` block as defined below.
        :param pulumi.Input[bool] infrastructure_encryption_enabled: Is infrastructure encryption enabled? Changing this forces a new resource to be created. Defaults to `false`.
        :param pulumi.Input[bool] is_hns_enabled: Is Hierarchical Namespace enabled? This can be used with Azure Data Lake Storage Gen 2 ([see here for more information](https://docs.microsoft.com/azure/storage/blobs/data-lake-storage-quickstart-create-account/)). Changing this forces a new resource to be created.
        :param pulumi.Input[bool] large_file_share_enabled: Is Large File Share Enabled?
        :param pulumi.Input[str] location: Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
        :param pulumi.Input[str] min_tls_version: The minimum supported TLS version for the storage account. Possible values are `TLS1_0`, `TLS1_1`, and `TLS1_2`. Defaults to `TLS1_2` for new storage accounts.
        :param pulumi.Input[str] name: Specifies the name of the storage account. Changing this forces a new resource to be created. This must be unique across the entire Azure service, not just within the resource group.
        :param pulumi.Input[pulumi.InputType['AccountNetworkRulesArgs']] network_rules: A `network_rules` block as documented below.
        :param pulumi.Input[bool] nfsv3_enabled: Is NFSv3 protocol enabled? Changing this forces a new resource to be created. Defaults to `false`.
        :param pulumi.Input[str] queue_encryption_key_type: The encryption type of the queue service. Possible values are `Service` and `Account`. Changing this forces a new resource to be created. Default value is `Service`.
        :param pulumi.Input[pulumi.InputType['AccountQueuePropertiesArgs']] queue_properties: A `queue_properties` block as defined below.
        :param pulumi.Input[str] resource_group_name: The name of the resource group in which to create the storage account. Changing this forces a new resource to be created.
        :param pulumi.Input[pulumi.InputType['AccountRoutingArgs']] routing: A `routing` block as defined below.
        :param pulumi.Input[pulumi.InputType['AccountSharePropertiesArgs']] share_properties: A `share_properties` block as defined below.
        :param pulumi.Input[bool] shared_access_key_enabled: Indicates whether the storage account permits requests to be authorized with the account access key via Shared Key. If false, then all requests, including shared access signatures, must be authorized with Azure Active Directory (Azure AD). The default value is `true`.
        :param pulumi.Input[pulumi.InputType['AccountStaticWebsiteArgs']] static_website: A `static_website` block as defined below.
        :param pulumi.Input[str] table_encryption_key_type: The encryption type of the table service. Possible values are `Service` and `Account`. Changing this forces a new resource to be created. Default value is `Service`.
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A mapping of tags to assign to the resource.
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: AccountArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        Manages an Azure Storage Account.

        ## Example Usage

        ```python
        import pulumi
        import pulumi_azure as azure

        example_resource_group = azure.core.ResourceGroup("exampleResourceGroup", location="West Europe")
        example_account = azure.storage.Account("exampleAccount",
            resource_group_name=example_resource_group.name,
            location=example_resource_group.location,
            account_tier="Standard",
            account_replication_type="GRS",
            tags={
                "environment": "staging",
            })
        ```
        ### With Network Rules

        ```python
        import pulumi
        import pulumi_azure as azure

        example_resource_group = azure.core.ResourceGroup("exampleResourceGroup", location="West Europe")
        example_virtual_network = azure.network.VirtualNetwork("exampleVirtualNetwork",
            address_spaces=["10.0.0.0/16"],
            location=example_resource_group.location,
            resource_group_name=example_resource_group.name)
        example_subnet = azure.network.Subnet("exampleSubnet",
            resource_group_name=example_resource_group.name,
            virtual_network_name=example_virtual_network.name,
            address_prefixes=["10.0.2.0/24"],
            service_endpoints=[
                "Microsoft.Sql",
                "Microsoft.Storage",
            ])
        example_account = azure.storage.Account("exampleAccount",
            resource_group_name=example_resource_group.name,
            location=example_resource_group.location,
            account_tier="Standard",
            account_replication_type="LRS",
            network_rules=azure.storage.AccountNetworkRulesArgs(
                default_action="Deny",
                ip_rules=["100.0.0.1"],
                virtual_network_subnet_ids=[example_subnet.id],
            ),
            tags={
                "environment": "staging",
            })
        ```

        ## Import

        Storage Accounts can be imported using the `resource id`, e.g.

        ```sh
         $ pulumi import azure:storage/account:Account storageAcc1 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myresourcegroup/providers/Microsoft.Storage/storageAccounts/myaccount
        ```

        :param str resource_name: The name of the resource.
        :param AccountArgs args: The arguments to use to populate this resource's properties.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    def __init__(__self__, resource_name: str, *args, **kwargs):
        resource_args, opts = _utilities.get_resource_args_opts(AccountArgs, pulumi.ResourceOptions, *args, **kwargs)
        if resource_args is not None:
            __self__._internal_init(resource_name, opts, **resource_args.__dict__)
        else:
            __self__._internal_init(resource_name, *args, **kwargs)

    def _internal_init(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 access_tier: Optional[pulumi.Input[str]] = None,
                 account_kind: Optional[pulumi.Input[str]] = None,
                 account_replication_type: Optional[pulumi.Input[str]] = None,
                 account_tier: Optional[pulumi.Input[str]] = None,
                 allow_nested_items_to_be_public: Optional[pulumi.Input[bool]] = None,
                 azure_files_authentication: Optional[pulumi.Input[pulumi.InputType['AccountAzureFilesAuthenticationArgs']]] = None,
                 blob_properties: Optional[pulumi.Input[pulumi.InputType['AccountBlobPropertiesArgs']]] = None,
                 cross_tenant_replication_enabled: Optional[pulumi.Input[bool]] = None,
                 custom_domain: Optional[pulumi.Input[pulumi.InputType['AccountCustomDomainArgs']]] = None,
                 customer_managed_key: Optional[pulumi.Input[pulumi.InputType['AccountCustomerManagedKeyArgs']]] = None,
                 edge_zone: Optional[pulumi.Input[str]] = None,
                 enable_https_traffic_only: Optional[pulumi.Input[bool]] = None,
                 identity: Optional[pulumi.Input[pulumi.InputType['AccountIdentityArgs']]] = None,
                 infrastructure_encryption_enabled: Optional[pulumi.Input[bool]] = None,
                 is_hns_enabled: Optional[pulumi.Input[bool]] = None,
                 large_file_share_enabled: Optional[pulumi.Input[bool]] = None,
                 location: Optional[pulumi.Input[str]] = None,
                 min_tls_version: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 network_rules: Optional[pulumi.Input[pulumi.InputType['AccountNetworkRulesArgs']]] = None,
                 nfsv3_enabled: Optional[pulumi.Input[bool]] = None,
                 queue_encryption_key_type: Optional[pulumi.Input[str]] = None,
                 queue_properties: Optional[pulumi.Input[pulumi.InputType['AccountQueuePropertiesArgs']]] = None,
                 resource_group_name: Optional[pulumi.Input[str]] = None,
                 routing: Optional[pulumi.Input[pulumi.InputType['AccountRoutingArgs']]] = None,
                 share_properties: Optional[pulumi.Input[pulumi.InputType['AccountSharePropertiesArgs']]] = None,
                 shared_access_key_enabled: Optional[pulumi.Input[bool]] = None,
                 static_website: Optional[pulumi.Input[pulumi.InputType['AccountStaticWebsiteArgs']]] = None,
                 table_encryption_key_type: Optional[pulumi.Input[str]] = None,
                 tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 __props__=None):
        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__ = AccountArgs.__new__(AccountArgs)

            __props__.__dict__["access_tier"] = access_tier
            __props__.__dict__["account_kind"] = account_kind
            if account_replication_type is None and not opts.urn:
                raise TypeError("Missing required property 'account_replication_type'")
            __props__.__dict__["account_replication_type"] = account_replication_type
            if account_tier is None and not opts.urn:
                raise TypeError("Missing required property 'account_tier'")
            __props__.__dict__["account_tier"] = account_tier
            __props__.__dict__["allow_nested_items_to_be_public"] = allow_nested_items_to_be_public
            __props__.__dict__["azure_files_authentication"] = azure_files_authentication
            __props__.__dict__["blob_properties"] = blob_properties
            __props__.__dict__["cross_tenant_replication_enabled"] = cross_tenant_replication_enabled
            __props__.__dict__["custom_domain"] = custom_domain
            __props__.__dict__["customer_managed_key"] = customer_managed_key
            __props__.__dict__["edge_zone"] = edge_zone
            __props__.__dict__["enable_https_traffic_only"] = enable_https_traffic_only
            __props__.__dict__["identity"] = identity
            __props__.__dict__["infrastructure_encryption_enabled"] = infrastructure_encryption_enabled
            __props__.__dict__["is_hns_enabled"] = is_hns_enabled
            __props__.__dict__["large_file_share_enabled"] = large_file_share_enabled
            __props__.__dict__["location"] = location
            __props__.__dict__["min_tls_version"] = min_tls_version
            __props__.__dict__["name"] = name
            __props__.__dict__["network_rules"] = network_rules
            __props__.__dict__["nfsv3_enabled"] = nfsv3_enabled
            __props__.__dict__["queue_encryption_key_type"] = queue_encryption_key_type
            __props__.__dict__["queue_properties"] = queue_properties
            if resource_group_name is None and not opts.urn:
                raise TypeError("Missing required property 'resource_group_name'")
            __props__.__dict__["resource_group_name"] = resource_group_name
            __props__.__dict__["routing"] = routing
            __props__.__dict__["share_properties"] = share_properties
            __props__.__dict__["shared_access_key_enabled"] = shared_access_key_enabled
            __props__.__dict__["static_website"] = static_website
            __props__.__dict__["table_encryption_key_type"] = table_encryption_key_type
            __props__.__dict__["tags"] = tags
            __props__.__dict__["primary_access_key"] = None
            __props__.__dict__["primary_blob_connection_string"] = None
            __props__.__dict__["primary_blob_endpoint"] = None
            __props__.__dict__["primary_blob_host"] = None
            __props__.__dict__["primary_connection_string"] = None
            __props__.__dict__["primary_dfs_endpoint"] = None
            __props__.__dict__["primary_dfs_host"] = None
            __props__.__dict__["primary_file_endpoint"] = None
            __props__.__dict__["primary_file_host"] = None
            __props__.__dict__["primary_location"] = None
            __props__.__dict__["primary_queue_endpoint"] = None
            __props__.__dict__["primary_queue_host"] = None
            __props__.__dict__["primary_table_endpoint"] = None
            __props__.__dict__["primary_table_host"] = None
            __props__.__dict__["primary_web_endpoint"] = None
            __props__.__dict__["primary_web_host"] = None
            __props__.__dict__["secondary_access_key"] = None
            __props__.__dict__["secondary_blob_connection_string"] = None
            __props__.__dict__["secondary_blob_endpoint"] = None
            __props__.__dict__["secondary_blob_host"] = None
            __props__.__dict__["secondary_connection_string"] = None
            __props__.__dict__["secondary_dfs_endpoint"] = None
            __props__.__dict__["secondary_dfs_host"] = None
            __props__.__dict__["secondary_file_endpoint"] = None
            __props__.__dict__["secondary_file_host"] = None
            __props__.__dict__["secondary_location"] = None
            __props__.__dict__["secondary_queue_endpoint"] = None
            __props__.__dict__["secondary_queue_host"] = None
            __props__.__dict__["secondary_table_endpoint"] = None
            __props__.__dict__["secondary_table_host"] = None
            __props__.__dict__["secondary_web_endpoint"] = None
            __props__.__dict__["secondary_web_host"] = None
        super(Account, __self__).__init__(
            'azure:storage/account:Account',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            access_tier: Optional[pulumi.Input[str]] = None,
            account_kind: Optional[pulumi.Input[str]] = None,
            account_replication_type: Optional[pulumi.Input[str]] = None,
            account_tier: Optional[pulumi.Input[str]] = None,
            allow_nested_items_to_be_public: Optional[pulumi.Input[bool]] = None,
            azure_files_authentication: Optional[pulumi.Input[pulumi.InputType['AccountAzureFilesAuthenticationArgs']]] = None,
            blob_properties: Optional[pulumi.Input[pulumi.InputType['AccountBlobPropertiesArgs']]] = None,
            cross_tenant_replication_enabled: Optional[pulumi.Input[bool]] = None,
            custom_domain: Optional[pulumi.Input[pulumi.InputType['AccountCustomDomainArgs']]] = None,
            customer_managed_key: Optional[pulumi.Input[pulumi.InputType['AccountCustomerManagedKeyArgs']]] = None,
            edge_zone: Optional[pulumi.Input[str]] = None,
            enable_https_traffic_only: Optional[pulumi.Input[bool]] = None,
            identity: Optional[pulumi.Input[pulumi.InputType['AccountIdentityArgs']]] = None,
            infrastructure_encryption_enabled: Optional[pulumi.Input[bool]] = None,
            is_hns_enabled: Optional[pulumi.Input[bool]] = None,
            large_file_share_enabled: Optional[pulumi.Input[bool]] = None,
            location: Optional[pulumi.Input[str]] = None,
            min_tls_version: Optional[pulumi.Input[str]] = None,
            name: Optional[pulumi.Input[str]] = None,
            network_rules: Optional[pulumi.Input[pulumi.InputType['AccountNetworkRulesArgs']]] = None,
            nfsv3_enabled: Optional[pulumi.Input[bool]] = None,
            primary_access_key: Optional[pulumi.Input[str]] = None,
            primary_blob_connection_string: Optional[pulumi.Input[str]] = None,
            primary_blob_endpoint: Optional[pulumi.Input[str]] = None,
            primary_blob_host: Optional[pulumi.Input[str]] = None,
            primary_connection_string: Optional[pulumi.Input[str]] = None,
            primary_dfs_endpoint: Optional[pulumi.Input[str]] = None,
            primary_dfs_host: Optional[pulumi.Input[str]] = None,
            primary_file_endpoint: Optional[pulumi.Input[str]] = None,
            primary_file_host: Optional[pulumi.Input[str]] = None,
            primary_location: Optional[pulumi.Input[str]] = None,
            primary_queue_endpoint: Optional[pulumi.Input[str]] = None,
            primary_queue_host: Optional[pulumi.Input[str]] = None,
            primary_table_endpoint: Optional[pulumi.Input[str]] = None,
            primary_table_host: Optional[pulumi.Input[str]] = None,
            primary_web_endpoint: Optional[pulumi.Input[str]] = None,
            primary_web_host: Optional[pulumi.Input[str]] = None,
            queue_encryption_key_type: Optional[pulumi.Input[str]] = None,
            queue_properties: Optional[pulumi.Input[pulumi.InputType['AccountQueuePropertiesArgs']]] = None,
            resource_group_name: Optional[pulumi.Input[str]] = None,
            routing: Optional[pulumi.Input[pulumi.InputType['AccountRoutingArgs']]] = None,
            secondary_access_key: Optional[pulumi.Input[str]] = None,
            secondary_blob_connection_string: Optional[pulumi.Input[str]] = None,
            secondary_blob_endpoint: Optional[pulumi.Input[str]] = None,
            secondary_blob_host: Optional[pulumi.Input[str]] = None,
            secondary_connection_string: Optional[pulumi.Input[str]] = None,
            secondary_dfs_endpoint: Optional[pulumi.Input[str]] = None,
            secondary_dfs_host: Optional[pulumi.Input[str]] = None,
            secondary_file_endpoint: Optional[pulumi.Input[str]] = None,
            secondary_file_host: Optional[pulumi.Input[str]] = None,
            secondary_location: Optional[pulumi.Input[str]] = None,
            secondary_queue_endpoint: Optional[pulumi.Input[str]] = None,
            secondary_queue_host: Optional[pulumi.Input[str]] = None,
            secondary_table_endpoint: Optional[pulumi.Input[str]] = None,
            secondary_table_host: Optional[pulumi.Input[str]] = None,
            secondary_web_endpoint: Optional[pulumi.Input[str]] = None,
            secondary_web_host: Optional[pulumi.Input[str]] = None,
            share_properties: Optional[pulumi.Input[pulumi.InputType['AccountSharePropertiesArgs']]] = None,
            shared_access_key_enabled: Optional[pulumi.Input[bool]] = None,
            static_website: Optional[pulumi.Input[pulumi.InputType['AccountStaticWebsiteArgs']]] = None,
            table_encryption_key_type: Optional[pulumi.Input[str]] = None,
            tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None) -> 'Account':
        """
        Get an existing Account 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] access_tier: Defines the access tier for `BlobStorage`, `FileStorage` and `StorageV2` accounts. Valid options are `Hot` and `Cool`, defaults to `Hot`.
        :param pulumi.Input[str] account_kind: Defines the Kind of account. Valid options are `BlobStorage`, `BlockBlobStorage`, `FileStorage`, `Storage` and `StorageV2`. Changing this forces a new resource to be created. Defaults to `StorageV2`.
        :param pulumi.Input[str] account_replication_type: Defines the type of replication to use for this storage account. Valid options are `LRS`, `GRS`, `RAGRS`, `ZRS`, `GZRS` and `RAGZRS`. Changing this forces a new resource to be created when types `LRS`, `GRS` and `RAGRS` are changed to `ZRS`, `GZRS` or `RAGZRS` and vice versa.
        :param pulumi.Input[str] account_tier: Defines the Tier to use for this storage account. Valid options are `Standard` and `Premium`. For `BlockBlobStorage` and `FileStorage` accounts only `Premium` is valid. Changing this forces a new resource to be created.
        :param pulumi.Input[bool] allow_nested_items_to_be_public: Allow or disallow nested items within this Account to opt into being public. Defaults to `true`.
        :param pulumi.Input[pulumi.InputType['AccountAzureFilesAuthenticationArgs']] azure_files_authentication: A `azure_files_authentication` block as defined below.
        :param pulumi.Input[pulumi.InputType['AccountBlobPropertiesArgs']] blob_properties: A `blob_properties` block as defined below.
        :param pulumi.Input[bool] cross_tenant_replication_enabled: Should cross Tenant replication be enabled? Defaults to `true`.
        :param pulumi.Input[pulumi.InputType['AccountCustomDomainArgs']] custom_domain: A `custom_domain` block as documented below.
        :param pulumi.Input[pulumi.InputType['AccountCustomerManagedKeyArgs']] customer_managed_key: A `customer_managed_key` block as documented below.
        :param pulumi.Input[str] edge_zone: Specifies the Edge Zone within the Azure Region where this Storage Account should exist. Changing this forces a new Storage Account to be created.
        :param pulumi.Input[bool] enable_https_traffic_only: Boolean flag which forces HTTPS if enabled, see [here](https://docs.microsoft.com/azure/storage/storage-require-secure-transfer/)
               for more information. Defaults to `true`.
        :param pulumi.Input[pulumi.InputType['AccountIdentityArgs']] identity: An `identity` block as defined below.
        :param pulumi.Input[bool] infrastructure_encryption_enabled: Is infrastructure encryption enabled? Changing this forces a new resource to be created. Defaults to `false`.
        :param pulumi.Input[bool] is_hns_enabled: Is Hierarchical Namespace enabled? This can be used with Azure Data Lake Storage Gen 2 ([see here for more information](https://docs.microsoft.com/azure/storage/blobs/data-lake-storage-quickstart-create-account/)). Changing this forces a new resource to be created.
        :param pulumi.Input[bool] large_file_share_enabled: Is Large File Share Enabled?
        :param pulumi.Input[str] location: Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
        :param pulumi.Input[str] min_tls_version: The minimum supported TLS version for the storage account. Possible values are `TLS1_0`, `TLS1_1`, and `TLS1_2`. Defaults to `TLS1_2` for new storage accounts.
        :param pulumi.Input[str] name: Specifies the name of the storage account. Changing this forces a new resource to be created. This must be unique across the entire Azure service, not just within the resource group.
        :param pulumi.Input[pulumi.InputType['AccountNetworkRulesArgs']] network_rules: A `network_rules` block as documented below.
        :param pulumi.Input[bool] nfsv3_enabled: Is NFSv3 protocol enabled? Changing this forces a new resource to be created. Defaults to `false`.
        :param pulumi.Input[str] primary_access_key: The primary access key for the storage account.
        :param pulumi.Input[str] primary_blob_connection_string: The connection string associated with the primary blob location.
        :param pulumi.Input[str] primary_blob_endpoint: The endpoint URL for blob storage in the primary location.
        :param pulumi.Input[str] primary_blob_host: The hostname with port if applicable for blob storage in the primary location.
        :param pulumi.Input[str] primary_connection_string: The connection string associated with the primary location.
        :param pulumi.Input[str] primary_dfs_endpoint: The endpoint URL for DFS storage in the primary location.
        :param pulumi.Input[str] primary_dfs_host: The hostname with port if applicable for DFS storage in the primary location.
        :param pulumi.Input[str] primary_file_endpoint: The endpoint URL for file storage in the primary location.
        :param pulumi.Input[str] primary_file_host: The hostname with port if applicable for file storage in the primary location.
        :param pulumi.Input[str] primary_location: The primary location of the storage account.
        :param pulumi.Input[str] primary_queue_endpoint: The endpoint URL for queue storage in the primary location.
        :param pulumi.Input[str] primary_queue_host: The hostname with port if applicable for queue storage in the primary location.
        :param pulumi.Input[str] primary_table_endpoint: The endpoint URL for table storage in the primary location.
        :param pulumi.Input[str] primary_table_host: The hostname with port if applicable for table storage in the primary location.
        :param pulumi.Input[str] primary_web_endpoint: The endpoint URL for web storage in the primary location.
        :param pulumi.Input[str] primary_web_host: The hostname with port if applicable for web storage in the primary location.
        :param pulumi.Input[str] queue_encryption_key_type: The encryption type of the queue service. Possible values are `Service` and `Account`. Changing this forces a new resource to be created. Default value is `Service`.
        :param pulumi.Input[pulumi.InputType['AccountQueuePropertiesArgs']] queue_properties: A `queue_properties` block as defined below.
        :param pulumi.Input[str] resource_group_name: The name of the resource group in which to create the storage account. Changing this forces a new resource to be created.
        :param pulumi.Input[pulumi.InputType['AccountRoutingArgs']] routing: A `routing` block as defined below.
        :param pulumi.Input[str] secondary_access_key: The secondary access key for the storage account.
        :param pulumi.Input[str] secondary_blob_connection_string: The connection string associated with the secondary blob location.
        :param pulumi.Input[str] secondary_blob_endpoint: The endpoint URL for blob storage in the secondary location.
        :param pulumi.Input[str] secondary_blob_host: The hostname with port if applicable for blob storage in the secondary location.
        :param pulumi.Input[str] secondary_connection_string: The connection string associated with the secondary location.
        :param pulumi.Input[str] secondary_dfs_endpoint: The endpoint URL for DFS storage in the secondary location.
        :param pulumi.Input[str] secondary_dfs_host: The hostname with port if applicable for DFS storage in the secondary location.
        :param pulumi.Input[str] secondary_file_endpoint: The endpoint URL for file storage in the secondary location.
        :param pulumi.Input[str] secondary_file_host: The hostname with port if applicable for file storage in the secondary location.
        :param pulumi.Input[str] secondary_location: The secondary location of the storage account.
        :param pulumi.Input[str] secondary_queue_endpoint: The endpoint URL for queue storage in the secondary location.
        :param pulumi.Input[str] secondary_queue_host: The hostname with port if applicable for queue storage in the secondary location.
        :param pulumi.Input[str] secondary_table_endpoint: The endpoint URL for table storage in the secondary location.
        :param pulumi.Input[str] secondary_table_host: The hostname with port if applicable for table storage in the secondary location.
        :param pulumi.Input[str] secondary_web_endpoint: The endpoint URL for web storage in the secondary location.
        :param pulumi.Input[str] secondary_web_host: The hostname with port if applicable for web storage in the secondary location.
        :param pulumi.Input[pulumi.InputType['AccountSharePropertiesArgs']] share_properties: A `share_properties` block as defined below.
        :param pulumi.Input[bool] shared_access_key_enabled: Indicates whether the storage account permits requests to be authorized with the account access key via Shared Key. If false, then all requests, including shared access signatures, must be authorized with Azure Active Directory (Azure AD). The default value is `true`.
        :param pulumi.Input[pulumi.InputType['AccountStaticWebsiteArgs']] static_website: A `static_website` block as defined below.
        :param pulumi.Input[str] table_encryption_key_type: The encryption type of the table service. Possible values are `Service` and `Account`. Changing this forces a new resource to be created. Default value is `Service`.
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A mapping of tags to assign to the resource.
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _AccountState.__new__(_AccountState)

        __props__.__dict__["access_tier"] = access_tier
        __props__.__dict__["account_kind"] = account_kind
        __props__.__dict__["account_replication_type"] = account_replication_type
        __props__.__dict__["account_tier"] = account_tier
        __props__.__dict__["allow_nested_items_to_be_public"] = allow_nested_items_to_be_public
        __props__.__dict__["azure_files_authentication"] = azure_files_authentication
        __props__.__dict__["blob_properties"] = blob_properties
        __props__.__dict__["cross_tenant_replication_enabled"] = cross_tenant_replication_enabled
        __props__.__dict__["custom_domain"] = custom_domain
        __props__.__dict__["customer_managed_key"] = customer_managed_key
        __props__.__dict__["edge_zone"] = edge_zone
        __props__.__dict__["enable_https_traffic_only"] = enable_https_traffic_only
        __props__.__dict__["identity"] = identity
        __props__.__dict__["infrastructure_encryption_enabled"] = infrastructure_encryption_enabled
        __props__.__dict__["is_hns_enabled"] = is_hns_enabled
        __props__.__dict__["large_file_share_enabled"] = large_file_share_enabled
        __props__.__dict__["location"] = location
        __props__.__dict__["min_tls_version"] = min_tls_version
        __props__.__dict__["name"] = name
        __props__.__dict__["network_rules"] = network_rules
        __props__.__dict__["nfsv3_enabled"] = nfsv3_enabled
        __props__.__dict__["primary_access_key"] = primary_access_key
        __props__.__dict__["primary_blob_connection_string"] = primary_blob_connection_string
        __props__.__dict__["primary_blob_endpoint"] = primary_blob_endpoint
        __props__.__dict__["primary_blob_host"] = primary_blob_host
        __props__.__dict__["primary_connection_string"] = primary_connection_string
        __props__.__dict__["primary_dfs_endpoint"] = primary_dfs_endpoint
        __props__.__dict__["primary_dfs_host"] = primary_dfs_host
        __props__.__dict__["primary_file_endpoint"] = primary_file_endpoint
        __props__.__dict__["primary_file_host"] = primary_file_host
        __props__.__dict__["primary_location"] = primary_location
        __props__.__dict__["primary_queue_endpoint"] = primary_queue_endpoint
        __props__.__dict__["primary_queue_host"] = primary_queue_host
        __props__.__dict__["primary_table_endpoint"] = primary_table_endpoint
        __props__.__dict__["primary_table_host"] = primary_table_host
        __props__.__dict__["primary_web_endpoint"] = primary_web_endpoint
        __props__.__dict__["primary_web_host"] = primary_web_host
        __props__.__dict__["queue_encryption_key_type"] = queue_encryption_key_type
        __props__.__dict__["queue_properties"] = queue_properties
        __props__.__dict__["resource_group_name"] = resource_group_name
        __props__.__dict__["routing"] = routing
        __props__.__dict__["secondary_access_key"] = secondary_access_key
        __props__.__dict__["secondary_blob_connection_string"] = secondary_blob_connection_string
        __props__.__dict__["secondary_blob_endpoint"] = secondary_blob_endpoint
        __props__.__dict__["secondary_blob_host"] = secondary_blob_host
        __props__.__dict__["secondary_connection_string"] = secondary_connection_string
        __props__.__dict__["secondary_dfs_endpoint"] = secondary_dfs_endpoint
        __props__.__dict__["secondary_dfs_host"] = secondary_dfs_host
        __props__.__dict__["secondary_file_endpoint"] = secondary_file_endpoint
        __props__.__dict__["secondary_file_host"] = secondary_file_host
        __props__.__dict__["secondary_location"] = secondary_location
        __props__.__dict__["secondary_queue_endpoint"] = secondary_queue_endpoint
        __props__.__dict__["secondary_queue_host"] = secondary_queue_host
        __props__.__dict__["secondary_table_endpoint"] = secondary_table_endpoint
        __props__.__dict__["secondary_table_host"] = secondary_table_host
        __props__.__dict__["secondary_web_endpoint"] = secondary_web_endpoint
        __props__.__dict__["secondary_web_host"] = secondary_web_host
        __props__.__dict__["share_properties"] = share_properties
        __props__.__dict__["shared_access_key_enabled"] = shared_access_key_enabled
        __props__.__dict__["static_website"] = static_website
        __props__.__dict__["table_encryption_key_type"] = table_encryption_key_type
        __props__.__dict__["tags"] = tags
        return Account(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter(name="accessTier")
    def access_tier(self) -> pulumi.Output[str]:
        """
        Defines the access tier for `BlobStorage`, `FileStorage` and `StorageV2` accounts. Valid options are `Hot` and `Cool`, defaults to `Hot`.
        """
        return pulumi.get(self, "access_tier")

    @property
    @pulumi.getter(name="accountKind")
    def account_kind(self) -> pulumi.Output[Optional[str]]:
        """
        Defines the Kind of account. Valid options are `BlobStorage`, `BlockBlobStorage`, `FileStorage`, `Storage` and `StorageV2`. Changing this forces a new resource to be created. Defaults to `StorageV2`.
        """
        return pulumi.get(self, "account_kind")

    @property
    @pulumi.getter(name="accountReplicationType")
    def account_replication_type(self) -> pulumi.Output[str]:
        """
        Defines the type of replication to use for this storage account. Valid options are `LRS`, `GRS`, `RAGRS`, `ZRS`, `GZRS` and `RAGZRS`. Changing this forces a new resource to be created when types `LRS`, `GRS` and `RAGRS` are changed to `ZRS`, `GZRS` or `RAGZRS` and vice versa.
        """
        return pulumi.get(self, "account_replication_type")

    @property
    @pulumi.getter(name="accountTier")
    def account_tier(self) -> pulumi.Output[str]:
        """
        Defines the Tier to use for this storage account. Valid options are `Standard` and `Premium`. For `BlockBlobStorage` and `FileStorage` accounts only `Premium` is valid. Changing this forces a new resource to be created.
        """
        return pulumi.get(self, "account_tier")

    @property
    @pulumi.getter(name="allowNestedItemsToBePublic")
    def allow_nested_items_to_be_public(self) -> pulumi.Output[Optional[bool]]:
        """
        Allow or disallow nested items within this Account to opt into being public. Defaults to `true`.
        """
        return pulumi.get(self, "allow_nested_items_to_be_public")

    @property
    @pulumi.getter(name="azureFilesAuthentication")
    def azure_files_authentication(self) -> pulumi.Output[Optional['outputs.AccountAzureFilesAuthentication']]:
        """
        A `azure_files_authentication` block as defined below.
        """
        return pulumi.get(self, "azure_files_authentication")

    @property
    @pulumi.getter(name="blobProperties")
    def blob_properties(self) -> pulumi.Output['outputs.AccountBlobProperties']:
        """
        A `blob_properties` block as defined below.
        """
        return pulumi.get(self, "blob_properties")

    @property
    @pulumi.getter(name="crossTenantReplicationEnabled")
    def cross_tenant_replication_enabled(self) -> pulumi.Output[Optional[bool]]:
        """
        Should cross Tenant replication be enabled? Defaults to `true`.
        """
        return pulumi.get(self, "cross_tenant_replication_enabled")

    @property
    @pulumi.getter(name="customDomain")
    def custom_domain(self) -> pulumi.Output[Optional['outputs.AccountCustomDomain']]:
        """
        A `custom_domain` block as documented below.
        """
        return pulumi.get(self, "custom_domain")

    @property
    @pulumi.getter(name="customerManagedKey")
    def customer_managed_key(self) -> pulumi.Output[Optional['outputs.AccountCustomerManagedKey']]:
        """
        A `customer_managed_key` block as documented below.
        """
        return pulumi.get(self, "customer_managed_key")

    @property
    @pulumi.getter(name="edgeZone")
    def edge_zone(self) -> pulumi.Output[Optional[str]]:
        """
        Specifies the Edge Zone within the Azure Region where this Storage Account should exist. Changing this forces a new Storage Account to be created.
        """
        return pulumi.get(self, "edge_zone")

    @property
    @pulumi.getter(name="enableHttpsTrafficOnly")
    def enable_https_traffic_only(self) -> pulumi.Output[Optional[bool]]:
        """
        Boolean flag which forces HTTPS if enabled, see [here](https://docs.microsoft.com/azure/storage/storage-require-secure-transfer/)
        for more information. Defaults to `true`.
        """
        return pulumi.get(self, "enable_https_traffic_only")

    @property
    @pulumi.getter
    def identity(self) -> pulumi.Output[Optional['outputs.AccountIdentity']]:
        """
        An `identity` block as defined below.
        """
        return pulumi.get(self, "identity")

    @property
    @pulumi.getter(name="infrastructureEncryptionEnabled")
    def infrastructure_encryption_enabled(self) -> pulumi.Output[Optional[bool]]:
        """
        Is infrastructure encryption enabled? Changing this forces a new resource to be created. Defaults to `false`.
        """
        return pulumi.get(self, "infrastructure_encryption_enabled")

    @property
    @pulumi.getter(name="isHnsEnabled")
    def is_hns_enabled(self) -> pulumi.Output[Optional[bool]]:
        """
        Is Hierarchical Namespace enabled? This can be used with Azure Data Lake Storage Gen 2 ([see here for more information](https://docs.microsoft.com/azure/storage/blobs/data-lake-storage-quickstart-create-account/)). Changing this forces a new resource to be created.
        """
        return pulumi.get(self, "is_hns_enabled")

    @property
    @pulumi.getter(name="largeFileShareEnabled")
    def large_file_share_enabled(self) -> pulumi.Output[bool]:
        """
        Is Large File Share Enabled?
        """
        return pulumi.get(self, "large_file_share_enabled")

    @property
    @pulumi.getter
    def location(self) -> pulumi.Output[str]:
        """
        Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
        """
        return pulumi.get(self, "location")

    @property
    @pulumi.getter(name="minTlsVersion")
    def min_tls_version(self) -> pulumi.Output[Optional[str]]:
        """
        The minimum supported TLS version for the storage account. Possible values are `TLS1_0`, `TLS1_1`, and `TLS1_2`. Defaults to `TLS1_2` for new storage accounts.
        """
        return pulumi.get(self, "min_tls_version")

    @property
    @pulumi.getter
    def name(self) -> pulumi.Output[str]:
        """
        Specifies the name of the storage account. Changing this forces a new resource to be created. This must be unique across the entire Azure service, not just within the resource group.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="networkRules")
    def network_rules(self) -> pulumi.Output['outputs.AccountNetworkRules']:
        """
        A `network_rules` block as documented below.
        """
        return pulumi.get(self, "network_rules")

    @property
    @pulumi.getter(name="nfsv3Enabled")
    def nfsv3_enabled(self) -> pulumi.Output[Optional[bool]]:
        """
        Is NFSv3 protocol enabled? Changing this forces a new resource to be created. Defaults to `false`.
        """
        return pulumi.get(self, "nfsv3_enabled")

    @property
    @pulumi.getter(name="primaryAccessKey")
    def primary_access_key(self) -> pulumi.Output[str]:
        """
        The primary access key for the storage account.
        """
        return pulumi.get(self, "primary_access_key")

    @property
    @pulumi.getter(name="primaryBlobConnectionString")
    def primary_blob_connection_string(self) -> pulumi.Output[str]:
        """
        The connection string associated with the primary blob location.
        """
        return pulumi.get(self, "primary_blob_connection_string")

    @property
    @pulumi.getter(name="primaryBlobEndpoint")
    def primary_blob_endpoint(self) -> pulumi.Output[str]:
        """
        The endpoint URL for blob storage in the primary location.
        """
        return pulumi.get(self, "primary_blob_endpoint")

    @property
    @pulumi.getter(name="primaryBlobHost")
    def primary_blob_host(self) -> pulumi.Output[str]:
        """
        The hostname with port if applicable for blob storage in the primary location.
        """
        return pulumi.get(self, "primary_blob_host")

    @property
    @pulumi.getter(name="primaryConnectionString")
    def primary_connection_string(self) -> pulumi.Output[str]:
        """
        The connection string associated with the primary location.
        """
        return pulumi.get(self, "primary_connection_string")

    @property
    @pulumi.getter(name="primaryDfsEndpoint")
    def primary_dfs_endpoint(self) -> pulumi.Output[str]:
        """
        The endpoint URL for DFS storage in the primary location.
        """
        return pulumi.get(self, "primary_dfs_endpoint")

    @property
    @pulumi.getter(name="primaryDfsHost")
    def primary_dfs_host(self) -> pulumi.Output[str]:
        """
        The hostname with port if applicable for DFS storage in the primary location.
        """
        return pulumi.get(self, "primary_dfs_host")

    @property
    @pulumi.getter(name="primaryFileEndpoint")
    def primary_file_endpoint(self) -> pulumi.Output[str]:
        """
        The endpoint URL for file storage in the primary location.
        """
        return pulumi.get(self, "primary_file_endpoint")

    @property
    @pulumi.getter(name="primaryFileHost")
    def primary_file_host(self) -> pulumi.Output[str]:
        """
        The hostname with port if applicable for file storage in the primary location.
        """
        return pulumi.get(self, "primary_file_host")

    @property
    @pulumi.getter(name="primaryLocation")
    def primary_location(self) -> pulumi.Output[str]:
        """
        The primary location of the storage account.
        """
        return pulumi.get(self, "primary_location")

    @property
    @pulumi.getter(name="primaryQueueEndpoint")
    def primary_queue_endpoint(self) -> pulumi.Output[str]:
        """
        The endpoint URL for queue storage in the primary location.
        """
        return pulumi.get(self, "primary_queue_endpoint")

    @property
    @pulumi.getter(name="primaryQueueHost")
    def primary_queue_host(self) -> pulumi.Output[str]:
        """
        The hostname with port if applicable for queue storage in the primary location.
        """
        return pulumi.get(self, "primary_queue_host")

    @property
    @pulumi.getter(name="primaryTableEndpoint")
    def primary_table_endpoint(self) -> pulumi.Output[str]:
        """
        The endpoint URL for table storage in the primary location.
        """
        return pulumi.get(self, "primary_table_endpoint")

    @property
    @pulumi.getter(name="primaryTableHost")
    def primary_table_host(self) -> pulumi.Output[str]:
        """
        The hostname with port if applicable for table storage in the primary location.
        """
        return pulumi.get(self, "primary_table_host")

    @property
    @pulumi.getter(name="primaryWebEndpoint")
    def primary_web_endpoint(self) -> pulumi.Output[str]:
        """
        The endpoint URL for web storage in the primary location.
        """
        return pulumi.get(self, "primary_web_endpoint")

    @property
    @pulumi.getter(name="primaryWebHost")
    def primary_web_host(self) -> pulumi.Output[str]:
        """
        The hostname with port if applicable for web storage in the primary location.
        """
        return pulumi.get(self, "primary_web_host")

    @property
    @pulumi.getter(name="queueEncryptionKeyType")
    def queue_encryption_key_type(self) -> pulumi.Output[Optional[str]]:
        """
        The encryption type of the queue service. Possible values are `Service` and `Account`. Changing this forces a new resource to be created. Default value is `Service`.
        """
        return pulumi.get(self, "queue_encryption_key_type")

    @property
    @pulumi.getter(name="queueProperties")
    def queue_properties(self) -> pulumi.Output['outputs.AccountQueueProperties']:
        """
        A `queue_properties` block as defined below.
        """
        return pulumi.get(self, "queue_properties")

    @property
    @pulumi.getter(name="resourceGroupName")
    def resource_group_name(self) -> pulumi.Output[str]:
        """
        The name of the resource group in which to create the storage account. Changing this forces a new resource to be created.
        """
        return pulumi.get(self, "resource_group_name")

    @property
    @pulumi.getter
    def routing(self) -> pulumi.Output['outputs.AccountRouting']:
        """
        A `routing` block as defined below.
        """
        return pulumi.get(self, "routing")

    @property
    @pulumi.getter(name="secondaryAccessKey")
    def secondary_access_key(self) -> pulumi.Output[str]:
        """
        The secondary access key for the storage account.
        """
        return pulumi.get(self, "secondary_access_key")

    @property
    @pulumi.getter(name="secondaryBlobConnectionString")
    def secondary_blob_connection_string(self) -> pulumi.Output[str]:
        """
        The connection string associated with the secondary blob location.
        """
        return pulumi.get(self, "secondary_blob_connection_string")

    @property
    @pulumi.getter(name="secondaryBlobEndpoint")
    def secondary_blob_endpoint(self) -> pulumi.Output[str]:
        """
        The endpoint URL for blob storage in the secondary location.
        """
        return pulumi.get(self, "secondary_blob_endpoint")

    @property
    @pulumi.getter(name="secondaryBlobHost")
    def secondary_blob_host(self) -> pulumi.Output[str]:
        """
        The hostname with port if applicable for blob storage in the secondary location.
        """
        return pulumi.get(self, "secondary_blob_host")

    @property
    @pulumi.getter(name="secondaryConnectionString")
    def secondary_connection_string(self) -> pulumi.Output[str]:
        """
        The connection string associated with the secondary location.
        """
        return pulumi.get(self, "secondary_connection_string")

    @property
    @pulumi.getter(name="secondaryDfsEndpoint")
    def secondary_dfs_endpoint(self) -> pulumi.Output[str]:
        """
        The endpoint URL for DFS storage in the secondary location.
        """
        return pulumi.get(self, "secondary_dfs_endpoint")

    @property
    @pulumi.getter(name="secondaryDfsHost")
    def secondary_dfs_host(self) -> pulumi.Output[str]:
        """
        The hostname with port if applicable for DFS storage in the secondary location.
        """
        return pulumi.get(self, "secondary_dfs_host")

    @property
    @pulumi.getter(name="secondaryFileEndpoint")
    def secondary_file_endpoint(self) -> pulumi.Output[str]:
        """
        The endpoint URL for file storage in the secondary location.
        """
        return pulumi.get(self, "secondary_file_endpoint")

    @property
    @pulumi.getter(name="secondaryFileHost")
    def secondary_file_host(self) -> pulumi.Output[str]:
        """
        The hostname with port if applicable for file storage in the secondary location.
        """
        return pulumi.get(self, "secondary_file_host")

    @property
    @pulumi.getter(name="secondaryLocation")
    def secondary_location(self) -> pulumi.Output[str]:
        """
        The secondary location of the storage account.
        """
        return pulumi.get(self, "secondary_location")

    @property
    @pulumi.getter(name="secondaryQueueEndpoint")
    def secondary_queue_endpoint(self) -> pulumi.Output[str]:
        """
        The endpoint URL for queue storage in the secondary location.
        """
        return pulumi.get(self, "secondary_queue_endpoint")

    @property
    @pulumi.getter(name="secondaryQueueHost")
    def secondary_queue_host(self) -> pulumi.Output[str]:
        """
        The hostname with port if applicable for queue storage in the secondary location.
        """
        return pulumi.get(self, "secondary_queue_host")

    @property
    @pulumi.getter(name="secondaryTableEndpoint")
    def secondary_table_endpoint(self) -> pulumi.Output[str]:
        """
        The endpoint URL for table storage in the secondary location.
        """
        return pulumi.get(self, "secondary_table_endpoint")

    @property
    @pulumi.getter(name="secondaryTableHost")
    def secondary_table_host(self) -> pulumi.Output[str]:
        """
        The hostname with port if applicable for table storage in the secondary location.
        """
        return pulumi.get(self, "secondary_table_host")

    @property
    @pulumi.getter(name="secondaryWebEndpoint")
    def secondary_web_endpoint(self) -> pulumi.Output[str]:
        """
        The endpoint URL for web storage in the secondary location.
        """
        return pulumi.get(self, "secondary_web_endpoint")

    @property
    @pulumi.getter(name="secondaryWebHost")
    def secondary_web_host(self) -> pulumi.Output[str]:
        """
        The hostname with port if applicable for web storage in the secondary location.
        """
        return pulumi.get(self, "secondary_web_host")

    @property
    @pulumi.getter(name="shareProperties")
    def share_properties(self) -> pulumi.Output['outputs.AccountShareProperties']:
        """
        A `share_properties` block as defined below.
        """
        return pulumi.get(self, "share_properties")

    @property
    @pulumi.getter(name="sharedAccessKeyEnabled")
    def shared_access_key_enabled(self) -> pulumi.Output[Optional[bool]]:
        """
        Indicates whether the storage account permits requests to be authorized with the account access key via Shared Key. If false, then all requests, including shared access signatures, must be authorized with Azure Active Directory (Azure AD). The default value is `true`.
        """
        return pulumi.get(self, "shared_access_key_enabled")

    @property
    @pulumi.getter(name="staticWebsite")
    def static_website(self) -> pulumi.Output[Optional['outputs.AccountStaticWebsite']]:
        """
        A `static_website` block as defined below.
        """
        return pulumi.get(self, "static_website")

    @property
    @pulumi.getter(name="tableEncryptionKeyType")
    def table_encryption_key_type(self) -> pulumi.Output[Optional[str]]:
        """
        The encryption type of the table service. Possible values are `Service` and `Account`. Changing this forces a new resource to be created. Default value is `Service`.
        """
        return pulumi.get(self, "table_encryption_key_type")

    @property
    @pulumi.getter
    def tags(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
        """
        A mapping of tags to assign to the resource.
        """
        return pulumi.get(self, "tags")

