Skip to content

Dependency Injection for CDKTF(Cloud Development Kit for Terraform) powered by projen.

License

Notifications You must be signed in to change notification settings

ApexCaptain/cdktf-injector

Repository files navigation

npm version Release License

Dependency Injection for CDKTF

cdktf-injector is a dependency injection library for CDKTF (AWS Cloud Development Kit for Terraform).

If you are not familiar with cdktf and terraform yet or haven't heard of them before, this library may not be that so useful. That's totally cool, but I recommend you to have a look what they (cdktf and terraform) are or at least what's the concept of IaC. Those are really amazing.

There are two prerequisites for cdktf-injector

  • Terraform - You need to install terraform on your dev env and it should be accessible on cli path. If you're using devcontainer you may paste following commands to your Dockerfile.

    ...
    
    # Pass terraform version as an argument
    ARG TERRAFORM_VERSION=1.1.7
    
    # Install Terraform
    RUN wget https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip && \
        unzip ./terraform_${TERRAFORM_VERSION}_linux_amd64.zip -d /usr/local/bin/ && \
        rm terraform_${TERRAFORM_VERSION}_linux_amd64.zip
    
    ...
    
  • cdktf - A library for defining Terraform resources using programming constructs. Click here to get started. Or, simply type following lines.

    mkdir your-project-name
    cd your-project-name
    npx cdktf-cli init --template="typescript" --local

Features

  • No decorator
  • No need to declare custom classes
  • No need to explicitly write dependencies

Installation

Using npm

npm install cdktf-injector --save

Using yarn

yarn add cdktf-injector

Note : cdktf supports multiple languages, such as TypeScript, Python, Java, C# and Go. Howerver according to Typescript restriction of jsii, which is I originally wanted to use to power my lib and what cdktf depends on, it does not allow using Parameterized Types(aka: Generics). And as far as I know, there is no other decent way to implement dependency injection without using generic or decorator. In brief, cdktf-injector is currently availiable only in Node.js env. I'm looking forward to making this lib supports multiple languages soon.


Documentation