Skip to content

file-system resource

Source: internal/service/efs/file_system_rsrc.go:102

Example usage:

imports: {
  aws-efs: 'github.com/cloudboss/unobin-library-aws//service/efs'
}

resources: {
  example: aws-efs.file-system {
    # Set input fields here.
  }
}

Inputs

availability-zone-name

optional(string)

encrypted

optional(boolean)

kms-key-id

optional(string)

performance-mode

optional(string)

throughput-mode

optional(string)

provisioned-throughput-in-mibps

optional(number)

lifecycle-policies

optional(list(object))
optional(
  list(
    object({
      transition-to-ia: optional(string)
      transition-to-archive: optional(string)
      transition-to-primary-storage-class: optional(string)
    })
  )
)

backup-policy

optional(object)
optional(
  object({
    status: string
  })
)

file-system-policy

optional(string)

file-system-protection

optional(object)
optional(
  object({
    replication-overwrite-protection: string
  })
)

bypass-policy-lockout-safety-check

optional(boolean)

replication-configuration

optional(object)
optional(
  object({
    destinations: list(
      object({
        region: optional(string)
        availability-zone-name: optional(string)
        kms-key-id: optional(string)
        file-system-id: optional(string)
        role-arn: optional(string)
      })
    )
  })
)

tags

optional(map(string))

Input Constraints

Kms key id rules

kms-key-id requires encrypted to be true.

Rule logic
When
input.kms-key-id != null
Require
input.encrypted == true

Performance mode rules

performance-mode must be generalPurpose or maxIO.

Rule logic
When
input.performance-mode != null
Require
input.performance-mode == 'generalPurpose'
|| input.performance-mode == 'maxIO'

Throughput mode rules

throughput-mode must be bursting, provisioned, or elastic.

Rule logic
When
input.throughput-mode != null
Require
input.throughput-mode == 'bursting'
|| input.throughput-mode == 'provisioned'
|| input.throughput-mode == 'elastic'

provisioned throughput requires provisioned-throughput-in-mibps.

Rule logic
When
input.throughput-mode == 'provisioned'
Require
input.provisioned-throughput-in-mibps != null

Provisioned throughput in mibps rules

provisioned-throughput-in-mibps requires provisioned throughput-mode.

Rule logic
When
input.provisioned-throughput-in-mibps != null
Require
input.throughput-mode == 'provisioned'

Lifecycle policies rules

lifecycle-policies holds at most 3 entries.

Rule logic
Require
@core.length(input.lifecycle-policies ?? []) <= 3

Exactly one of lifecycle-policies[*].transition-to-ia, lifecycle-policies[*].transition-to-archive, or lifecycle-policies[*].transition-to-primary-storage-class.

Backup policy rules

backup-policy status must be ENABLED or DISABLED.

Rule logic
When
input.backup-policy != null
Require
input.backup-policy.status == 'ENABLED'
|| input.backup-policy.status == 'DISABLED'

File system protection rules

file-system-protection must be ENABLED or DISABLED.

Rule logic
When
input.file-system-protection != null
Require
input.file-system-protection.replication-overwrite-protection == 'ENABLED'
|| input.file-system-protection.replication-overwrite-protection == 'DISABLED'

Replication configuration rules

replication-configuration must have exactly one destination.

Rule logic
When
input.replication-configuration != null
Require
(input.replication-configuration.destinations == null || @core.length(input.replication-configuration.destinations) >= 1)
&& @core.length(input.replication-configuration.destinations ?? []) <= 1

At least one of replication-configuration.destinations[*].region or replication-configuration.destinations[*].availability-zone-name.

Outputs

file-system-id

string

arn

string

availability-zone-id

string

availability-zone-name

string

dns-name

string

owner-id

string

name

string

number-of-mount-targets

integer

size-in-bytes

object
object({
  value: integer
  timestamp: string
  value-in-archive: integer
  value-in-ia: integer
  value-in-standard: integer
})

encrypted

boolean

kms-key-id

string

performance-mode

string

provisioned-throughput-in-mibps

number

throughput-mode

string

lifecycle-policies

list(object)
list(
  object({
    transition-to-ia: optional(string)
    transition-to-archive: optional(string)
    transition-to-primary-storage-class: optional(string)
  })
)

backup-policy

optional(object)
optional(
  object({
    status: string
  })
)

file-system-policy

optional(string)

file-system-protection

optional(object)
optional(
  object({
    replication-overwrite-protection: string
  })
)

replication-configuration

optional(object)
optional(
  object({
    destinations: list(
      object({
        file-system-id: string
        region: string
        owner-id: string
        role-arn: string
        status: string
        status-message: string
      })
    )
  })
)

tags

map(string)