Metadata-Version: 2.1
Name: aws-ci-cd-lambda
Version: 3.4.0
Summary: AWS CDK package that helps deploying a lambda function.
Home-page: https://github.com/idenfy/AwsCiCdLambda.git
Author: Deividas Tamkus
Author-email: dtamkus@gmail.com
License: GNU GENERAL PUBLIC LICENSE Version 3
Keywords: AWS CDK Ci/Cd Lambda Pipeline
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
Requires-Dist: aws-cdk.core (<2.0.0,>=1.60.0)
Requires-Dist: aws-cdk.aws-iam (<2.0.0,>=1.60.0)
Requires-Dist: aws-cdk.custom-resources (<2.0.0,>=1.60.0)
Requires-Dist: aws-cdk.aws-lambda (<2.0.0,>=1.60.0)
Requires-Dist: aws-cdk.aws-codecommit (<2.0.0,>=1.60.0)
Requires-Dist: aws-cdk.aws-codebuild (<2.0.0,>=1.60.0)
Requires-Dist: aws-cdk.aws-codepipeline (<2.0.0,>=1.60.0)
Requires-Dist: aws-cdk.aws-codepipeline-actions (<2.0.0,>=1.60.0)
Requires-Dist: aws-cdk.aws-ec2 (<2.0.0,>=1.60.0)
Requires-Dist: aws-empty-bucket (<3.0.0,>=2.0.0)

## AWS Lambda Pipeline

A library that creates a full out-of-the-box solution for AWS Lambda with CI/CD pipeline.

#### Remarks

The project is written by [Deividas Tamkus](https://github.com/deitam), supervised by 
[Laimonas Sutkus](https://github.com/laimonassutkus) and is owned by 
[iDenfy](https://github.com/idenfy). This is an open source
library intended to be used by anyone. [iDenfy](https://github.com/idenfy) aims
to share its knowledge and educate market for better and more secure IT infrastructure.

#### Related technology

This project utilizes the following technology:

- *AWS* (Amazon Web Services).
- *AWS CDK* (Amazon Web Services Cloud Development Kit).
- *AWS CloudFormation*.
- *AWS Lambda*.
- *AWS CodePipeline*.

#### Assumptions

This library project assumes the following:

- You have knowledge in AWS (Amazon Web Services).
- You have knowledge in AWS CloudFormation.
- You are managing your infrastructure with AWS CDK.
- You are writing AWS CDK templates with a python language.

#### Install

The project is built and uploaded to PyPi. Install it by using pip.

```bash
pip install aws-lambda-pipeline
```

Or directly install it through source.

```bash
./build.sh -ic
```

### Description

This package creates a Lambda function and a pipeline 
for a complete out-of-the-box hosting infrastructure.

The pipeline takes your source code from CodeCommit and deploys it to Lambda.

### Tutorial

- Create a full infrastructure around AWS Lambda by using the following code below in your stack.

```python
from aws_ci_cd_lambda.parameters.pipeline_parameters import PipelineParameters
from aws_ci_cd_lambda.parameters.ssh_parameters import SshParameters
from aws_ci_cd_lambda.parameters.lambda_parameters import LambdaParameters
from aws_ci_cd_lambda.parameters.vpc_parameters import VpcParameters
from aws_ci_cd_lambda.ci_cd_lambda import CiCdLambda
from aws_cdk import core, aws_ec2, aws_iam
from aws_cdk.aws_lambda import Runtime

class MainStack(core.Stack):
    def __init__(self, scope: core.App) -> None:
        super().__init__(
            scope=scope,
            id='MyCoolStack'
        )

        # Create your own vpc or use an existing one.
        vpc = aws_ec2.Vpc(...)

        # Create an execution role for your function.
        role = aws_iam.Role(...)

        # Create a security group for your function.
        sg = aws_ec2.SecurityGroup(...)

        vpc_params = VpcParameters(
            vpc=vpc,
            subnets=vpc.isolated_subnets,
            security_groups=[sg],
        )

        lambda_params = LambdaParameters(
            execution_role=role,
            lambda_memory=1024,
            lambda_timeout=60,
            lambda_runtime=Runtime.PYTHON_3_6,
            lambda_handler='manage.runner',
        )

        pipeline_params = PipelineParameters(
            ssh_params=SshParameters(
                aws_secret=(
                    'MyCoolSecret',
                    'arn:aws:secretsmanager:region:account_id:secret:MyCoolSecret-rAnDomStrinG',
                    None
                )
            )
        )   

        self.ci_cd_lambda = CiCdLambda(
            scope=self,
            prefix='MyCool',
            vpc_params=vpc_params,
            lambda_params=lambda_params,
            pipeline_params=pipeline_params
        )
```

- Provision you infrastructure with `CloudFormation` by calling `cdk deploy`.

- After you provision your infrastructure, go to `AWS CodeCommit` in your AWS Console.

- Find a newly created git repository.

- Commit any code you want to the newly created repository to trigger a pipeline.

(A tutorial on pushing code to remote repositories: [AWS Tutorial](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-create-commit.html)).

(A tutorial on setting up git ssh with aws git repositories: [AWS Tutorial](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-ssh-unixes.html))


# Release history

#### 3.4.0
Add md files.

#### 3.3.0
Dependency update 1.60.0 - 2.0.0.

#### 3.2.0
Force update AWS CDK dependency version to 1.44.0.

#### 3.1.0
Added the ability to add custom commands to buildspec.

#### 3.0.1
Bug fix.

#### 3.0.0
Moved SSH parameters to a separate class.

#### 2.3.0
Add ability to specify KMS key for secret decryption.

#### 2.2.0
Add ability to specify arguments for install and test scripts.

#### 2.1.0
Add error and throttles alarms. Add ability to specify lambda environment.
Add reserved concurrent executions.

#### 2.0.1
Bug fix.

#### 2.0.0
Refactor. Increase clarity.

#### 1.1.0
Major refactoring and minor updates and fixes.

#### 1.0.1
Made use CDK version 1.27.0

#### 1.0.0
Initial commit.


