The Attini Framework is a deployment framework for Infrastructure as Code (IaC) on AWS, find more information about Attini on our website and in our documentation.
If you just want to use Attini, we recommend using the prebuilt framework and CLI, find more information in the getting started guide.
The Attini CLI, Attini runner, and Attini CDK Constructs are also available on GitHub.
Attini is an AWS SAM Application written in Java and built with Quarkus. The separate Lambda functions are intended to be compiled in to standalone executables, using GraalVM Native image.
To deploy and test the framework, you will need AWS CLI Credentials and AWS SAM CLI.
Before you start, open the Makefile
and configure it appropriately.
make
make build-native
make build-and-deploy
make deploy
If you have built and deployed the framework, you can write changes and deploy individual Lambda functions with the following commands.
cd attini-action # or whatever function you are working with
make build
make deploy
make
Here you will find all Attini CloudFormation.
Java classes that are shared between the Lambda functions.
A Python Lambda function that can automatically update the Attini framework on a schedule that you configure via attini-setup.
This is Lambda is responsible for initiating deployments, on a high level it will:
- Be triggerd by the attini distribution when it's uploaded to the
attini-deployment-origin
S3 bucket. - It will download the distribution, unpack it, and put all the files in the
attini-artifact-store
S3 bucket. - Find the initDeployConfig in attini-config and deploy the deployment plan (init deploy stack).
CloudFormation macro and custom resource Lambda function that will transform the init deployment template so that all Attini resources (Attini::Deploy::DeploymentPlan, Attini::Deploy::Runner) are converted into valid CloudFormation.
Lambda function that reacts to different events in the framework. For example, it will trigger the deployment plan when the init-deploy is ready, or respond to the deployment plan step function when a CloudFormation stack (AttiniCfn or AttiniSam) is finished.
Lambda function that performs all deployment plan actions, for example, deploying CloudFormation stacks, starting Attini Runners (ECS tasks) etc.
This repository does not have its own CI/CD configured. This is because Lambda functions in a SAM Application need to be packaged, signed, and uploaded to S3 buckets in every AWS region that the Attini should work in.
These S3 buckets also need to be made available to the AWS accounts that want to use Attini in.
Because of this, the deployment process requires a lot of AWS Access. Therefore, we keep the CI/CD process for the official Attini releases private.
But what it essentially does is:
- Sign the Lambda zip files with the Attini signing profile.
- Run integration tests
- Upload the CloudFormation templates and the Lambda zip files to public S3 buckets in every AWS Region.