Package: aws-cdk-constructs
Start hereFAO AWS CDK is library to build FAO-compliant AWS infrastructure in near-zero time-to-market.CSI Cloud Team developed a set of highly reusable AWS infrastructural building-blocks in collaboration with the Unix Admin Team and Statistical Working System (SWS) development team.To adopt FAO AWS CDK enhances the projects' robustness over the time as they will inherit the benefits of a centralized infrastructural development, they can keep the focus on application features development.These shared infrastructural building-blocks natively implement FAO AWS best practices and abstract low-level technical details, while enabling AWS developers to focus on code production.As a major positive side effect, the overal sustainability of the FAO AWS cloud environment reaches the stars 🚀.Python package index of FAO AWS CDKSource on Bitbucket of FAO AWS CDKPrerequisitesMake sure your local machine is configured to meet theFAO AWS prerequisitesand you have a general undestanding of what AWS CDK is and how to use it.AWS CDK introuctionAWS CDK - YouTube videoAWS CDK Workshop - PythonDocumentation, reference architectures, tutorials, and moreCSI Cloud Team produced extensive documentation about FAO AWS CDK (and FAO AWS in general).FAO CDK intro.FAO CDK project structure.FAO CDK reference architectures, ready to be copied.Common issues and troubleshooting with FAO CDK.Video tutorials.Getting startedLocal project initializationIf you project is officially started, you can request a new Bitbucket.org repo for you cloud infrastructureCSI Cloud Team created askeleon projectto simplify the onboarding to FAO CDK and what the repository will contains will be identical tothis. The repository will be already configured to implement CD/CI;Browser theapp.pyfile to examples of how to intantiate FAO CDK resources with relative explainationsFollow theFAO Development lifecycleto release your cloud solution in the development environment;Your path towards productiondescribes how to release your solution in the production environment;The FAO AWS automationwebsite describes in depth how the automation is implemented in the FAO AWS environment.Useful commands<ENV>possible values:development,qa,production.Kindly note, that the correspondent.env.<ENV>-iacfile must exist to run a given command. For more information please refer toHow to configure your FAO CDK stackENVIRONMENT=<ENV> cdk lslist all stacks in the appENVIRONMENT=<ENV> cdk synthemits the synthesized CloudFormation templateENVIRONMENT=<ENV> cdk deploydeploy this stack to your default AWS account/regionENVIRONMENT=<ENV> cdk diffcompare deployed stack with current stateENVIRONMENT=<ENV> cdk docsopen CDK documentationENVIRONMENT=<ENV> cdk ls: to list the available stacks in the projectsENVIRONMENT=<ENV> cdk synth MY_STACK --profile my-dev: to synthetize (generate) the cloud formation template of MY_STACK stackENVIRONMENT=<ENV> cdk deploy MY_STACK --profile my-dev: to deploy the MY_STACK stackHow to generate the AWS CDK constructs documentationThe documentation follows Google format.Browse the./docsdirectoryRun themake htmlto generate the static HTML documentation in the/docs/_build/directoryThe documentation release is scripted in the pipeline. So you will simply need to release your code in themasterbranch of the repository to see the FAO CDK documentation published.How to release a new version of AWS CDK constructsThe release of the constructs inpypiis automated in the CD/CI pipeline. So you will simply need to release your code in themasterbranch of the repository to see the FAO CDK documentation published and your constructs available onpypi.
Before to move your code in themasterbranch, remember to upgrade the version of the constructs as following:Commit your changes, each commit in the repository should follow the convention:https://www.conventionalcommits.org/en/v1.0.0/Runnpm run releaseto auto generate theCHANGELOG.mdfile and upgrade the constructs version.Pull request the code to the master branch of the repoIf you try to release a version already published (i.e. you forget to upgrade the package version in the mentioned file) the release will fail.
Check out the CD/CI pipeline for additional information.How can I test my new FAO CDK version before to publish it?Open theIACproject you are working on, and create agitbranch for the feature you are developingInstall the project dependencies usingpip install -r requirements.txtLocally install theFAO CDKconstructs usingpip install -e ../../cdk/aws-cdk-constructs/(NB: the path in your file system may vary). This implies that you cloned theFAO CDKrepository on your local machine, and the repository is configured to use thedevelopbranchModify in the localFAO CDKrepo the code to implement the desired infrastructural resourcesYou can test theFAO CDKdeployment from theIACrepository, using theCDK CLI(e.g.cdk deploy YOUR_STACK --profile YOUR_PROFILE). This will read from your localFAO CDKrepository the new modifications you just developed to include them in the deployementOnce theFAO CDKdevelopment is completed, release the newFAO CDKversion as described above and update therequirements.txtfiles in theIACrepositoryOnce theIACrepository is pushed on Bitbucket, it'll download the newly releaseFAO CDKversion during the CD/CI pipeline execution.How can I automatically lint my code before each commitThere is a check on the pipeline to ensure the code and tests pass the blue linting, to ensure the code is properly formatted you can add the (pre-commit)[./.pre-commit-config.yaml] hook to your local repository.pip install -r requirements-dev.txt
pre-commit installThis will run the linter and lint all the files under aws_cdk_constructs and tests before each commit. If you see that some files failed the tests, blue will automatically fix them for you. You will only have to stage those files back and commit again.