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
npm install cdktf-injector --save
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