function-hcl

Get Started GitHub

A Crossplane composition function that uses an opinionated HCL-based DSL to model desired resources — with a familiar feel for anyone coming from Terraform.

locals {
  comp     = req.composite
  compName = comp.metadata.name
  params   = comp.spec.parameters
}

resource my-bucket {
  locals {
    region = params.region
  }

  body = {
    apiVersion = "s3.aws.upbound.io/v1beta1"
    kind       = "Bucket"
    metadata = {
      name = "${compName}-bucket"
    }
    spec = {
      forProvider = {
        region = region
      }
    }
  }

  composite status {
    body = {
      bucketArn = self.resource.status.atProvider.arn
    }
  }
}