Skip to content

state-machine resource

Source: internal/service/sfn/state_machine_rsrc.go:53

Example usage:

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

resources: {
  example: aws-sfn.state-machine {
    # Set input fields here.
  }
}

Inputs

name

optional(string)

definition

string

required sensitive

role-arn

string

required

type

string

default STANDARD

encryption-configuration

optional(object)
optional(
  object({
    type: string
    kms-key-id: optional(string)
    kms-data-key-reuse-period-seconds: optional(integer)
  })
)

logging-configuration

optional(object)
optional(
  object({
    include-execution-data: optional(boolean)
    level: optional(string)
    log-destination: optional(string)
  })
)

tracing-configuration

optional(object)
optional(
  object({
    enabled: optional(boolean)
  })
)

tags

optional(map(string))

Input Constraints

Definition rules

definition must not be empty.

Rule logic
Require
@core.length(input.definition) >= 1

Type rules

type must be STANDARD or EXPRESS.

Rule logic
Require
input.type == 'STANDARD'
|| input.type == 'EXPRESS'

Tags rules

tags holds at most 50 entries.

Rule logic
Require
@core.length(input.tags ?? {}) <= 50

Logging configuration rules

logging-configuration level must be ALL, ERROR, FATAL, or OFF.

Rule logic
When
input.logging-configuration.level != null
Require
input.logging-configuration.level == 'ALL'
|| input.logging-configuration.level == 'ERROR'
|| input.logging-configuration.level == 'FATAL'
|| input.logging-configuration.level == 'OFF'

non-OFF logging requires log-destination.

Rule logic
When
input.logging-configuration.level != null
&& input.logging-configuration.level != 'OFF'
Require
input.logging-configuration.log-destination != null

Encryption configuration rules

encryption-configuration type must be AWS_OWNED_KEY or CUSTOMER_MANAGED_KMS_KEY.

Rule logic
When
input.encryption-configuration != null
Require
input.encryption-configuration.type == 'AWS_OWNED_KEY'
|| input.encryption-configuration.type == 'CUSTOMER_MANAGED_KMS_KEY'

customer-managed encryption requires kms-key-id.

Rule logic
When
input.encryption-configuration.type == 'CUSTOMER_MANAGED_KMS_KEY'
Require
input.encryption-configuration.kms-key-id != null

kms-data-key-reuse-period-seconds must be between 60 and 900.

Rule logic
When
input.encryption-configuration.kms-data-key-reuse-period-seconds != null
Require
input.encryption-configuration.kms-data-key-reuse-period-seconds >= 60
&& input.encryption-configuration.kms-data-key-reuse-period-seconds <= 900

Outputs

arn

string

revision-id

string