| page_title | duploai_storage_account Resource - duploai |
|---|---|
| subcategory | |
| description | Manages a DuploCloud AI Helpdesk Azure Storage Account, provisioned within an environment and resource group. |
Manages a DuploCloud AI Helpdesk Azure Storage Account, provisioned within an environment and resource group.
# Minimal Azure Storage Account — provisioned in an environment + resource group.
# sku_name, kind, access tier, TLS, and data protection all default.
resource "duploai_storage_account" "basic" {
workspace_id = "<workspace-id>"
name = "prodsa001" # 3-24 chars, lowercase alphanumeric, globally unique
environment_id = "<environment-id>"
resource_group_id = "<resource-group-id>"
}
# Full example — geo-redundant, hardened, Data Lake Gen2 (HNS) with SFTP, custom
# data protection, and tags. sku_name / kind / is_hns_enabled / is_nfs_v3_enabled
# are immutable (changing them replaces the account).
resource "duploai_storage_account" "full" {
workspace_id = "<workspace-id>"
name = "proddatalake01"
environment_id = "<environment-id>"
resource_group_id = "<resource-group-id>"
sku_name = "Standard_GRS"
access_tier = "Hot"
minimum_tls_version = "TLS1_2"
enable_https_traffic_only = true
allow_blob_public_access = false
# Data Lake Gen2 with SFTP (both require hierarchical namespace).
is_hns_enabled = true
is_sftp_enabled = true
data_protection = {
enable_blob_soft_delete = true
blob_soft_delete_retention_days = 14
enable_container_soft_delete = true
enable_versioning = true
enable_point_in_time_restore = true
}
tags = {
team = "platform"
environment = "production"
}
timeouts {
create = "30m"
update = "20m"
delete = "20m"
}
}environment_id(String) ID of the environment in which the storage account is provisioned.name(String) Storage account name. 3-24 characters, lowercase letters and numbers, globally unique across Azure. Immutable after creation.resource_group_id(String) ID of the resource group in which the storage account is provisioned.workspace_id(String) ID of the workspace that owns this storage account.
access_tier(String) Default blob access tier.allow_blob_public_access(Boolean) Allow anonymous public read access to blobs/containers.allow_cross_tenant_replication(Boolean) Allow object replication across Azure AD tenants.data_protection(Attributes) Blob/container/file-share data protection settings (soft delete, versioning, point-in-time restore). Applied on update. (see below for nested schema)enable_https_traffic_only(Boolean) Require HTTPS for all traffic to the storage account.failure_retries(Number) Number of extra polls to tolerate a transient failure status during provisioning before treating it as terminal. Overrides the resource's default; leave unset to use it.is_hns_enabled(Boolean) Enable hierarchical namespace (Azure Data Lake Storage Gen2). Immutable after creation.is_nfs_v3_enabled(Boolean) Enable NFS v3 protocol support (requires is_hns_enabled). Immutable after creation.is_sftp_enabled(Boolean) Enable SFTP support (requires is_hns_enabled).kind(String) Storage account kind. Immutable after creation.minimum_tls_version(String) Minimum TLS version accepted for requests.provisioner_type(String) Provisioner type. Defaults to DirectApiCall for Azure passthrough resources.provisioner_version(String) Optional provisioner version.sku_name(String) Redundancy/performance SKU (e.g. Standard_LRS, Standard_GRS, Premium_LRS). Immutable after creation.tags(Map of String) Tags applied to the storage account. The platform adds its own managedduplocloud-ai-*tags server-side; those are filtered out of state so only your tags are managed by Terraform.timeouts(Block, Optional) (see below for nested schema)
azure_resource_group_name(String) Azure resource group the storage account is created in. Derived from the linked resource group; not user-settable.azure_resource_id(String) Full Azure resource ID (ARM ID) of the provisioned storage account.created_at(String) Timestamp when the storage account was created (RFC 3339).id(String) Composite resource identifier (workspace_id/id).primary_blob_endpoint(String) Primary Blob service endpoint URL.primary_file_endpoint(String) Primary File service endpoint URL.primary_queue_endpoint(String) Primary Queue service endpoint URL.primary_table_endpoint(String) Primary Table service endpoint URL.private_endpoint_infos(Attributes List) Private endpoints connected to the storage account. (see below for nested schema)provisioning_state(String) Azure provisioning state of the storage account (e.g. Succeeded).scope_ids(List of String) Scope IDs linking this storage account to a cloud provider account. Inherited from the resource group; not user-settable.status(String) Current provisioning status of the storage account.storage_account_id(String) ID of this storage account, for reference by dependent resources.updated_at(String) Timestamp when the storage account was last updated (RFC 3339).version(Number) Version counter, incremented on each update.
Optional:
blob_soft_delete_retention_days(Number) Retention period (days) for soft-deleted blobs.container_soft_delete_retention_days(Number) Retention period (days) for soft-deleted containers.enable_blob_soft_delete(Boolean) Enable soft delete for blobs.enable_container_soft_delete(Boolean) Enable soft delete for containers.enable_file_share_soft_delete(Boolean) Enable soft delete for file shares.enable_point_in_time_restore(Boolean) Enable point-in-time restore for block blobs (auto-enables versioning and blob soft delete).enable_versioning(Boolean) Enable blob versioning.file_share_soft_delete_retention_days(Number) Retention period (days) for soft-deleted file shares.point_in_time_restore_retention_days(Number) Point-in-time restore window (days). Must be less than the blob soft-delete retention.
Optional:
create(String) A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).delete(String) A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.update(String) A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
Read-Only:
id(String) Private endpoint resource ID.name(String) Private endpoint name.provisioning_state(String) Provisioning state of the private endpoint.status(String) Connection status of the private endpoint.
Import is supported using the following syntax:
The terraform import command can be used, for example:
# Import an existing Azure storage account.
# - WORKSPACE_ID is the ID of the workspace (e.g. 69b2aa30675718845bfe87a0)
# - STORAGE_ACCOUNT_ID is the ID of the storage account (e.g. 6a2258e94703bc957a1b824e)
terraform import duploai_storage_account.mysa WORKSPACE_ID/STORAGE_ACCOUNT_ID
# Example:
# terraform import duploai_storage_account.mysa 69b2aa30675718845bfe87a0/6a2258e94703bc957a1b824e