2.0.327 • Published 3 years ago

cdk-lambda-bash v2.0.327

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
3 years ago

NPM version PyPI version Release

cdk-lambda-bash

Deploy Bash Lambda Functions with AWS CDK

Why

AWS Lambda has the docker container image support since AWS re:Invent 2020 which allows you to run your Lambda code in a custom container image. Inspired by nikovirtala/cdk-eks-experiment, cdk-lambda-bash allows you to specify a local shell script and bundle it up as a custom resource in your cdk stack. On cdk deployment, your shell script will be executed in a Lambda container environment.

BashExecFunction

At this moment, we are offering BashExecFunction construct class which is a high-level abstraction of lambda.Function. By defining the script property which poins to your local shell script, on cdk deploy, this script will be bundled into a custom docker image and published as a lambda.DockerImageFunction.

If you fn.run(), a custom resource will be created and the lambda.DockerImageFunction will be executed on deployment.

Install

Use the npm dist tag to opt in CDKv1 or CDKv2:

// for CDKv2
npm install cdk-lambda-bash
or
npm install cdk-lambda-bash@latest

// for CDKv1
npm install cdk-lambda-bash@cdkv1 

Sample

const app = new cdk.App();

const stack = new cdk.Stack(app, 'my-stack');

// bundle your Lambda function to execute the local demo.sh in container
const fn = new BashExecFunction(stack, 'Demo', {
  script: path.join(__dirname, '../demo.sh'),
})

// run it as custom resource on deployment
fn.run();

Re-execution on assets update

By default, if you update your shell script or Dockerfile and re-deploy your CDK application, the BashExecFunction will not be re-executed. Use runOnUpdate to enable the re-execution on update.

fn.run({ runOnUpdate: true });

Custom Dockerfile

In some cases, you may customize your own Dockerfile, for instances:

  1. You need extra tools or utilities such as kubectl or helm
  2. You need build from your own base image

In these cases, create a custom Dockerfile as below and add extra utilities i.e. kubectl:

FROM public.ecr.aws/lambda/provided:al2

RUN yum install -y unzip jq

# install aws-cli v2
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && \
  unzip awscliv2.zip && \
  ./aws/install

# install kubectl
RUN curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.19.6/2021-01-05/bin/linux/amd64/kubectl && \
  chmod +x kubectl && \
  mv kubectl /usr/local/bin/kubectl

COPY bootstrap /var/runtime/bootstrap
COPY function.sh /var/task/function.sh
COPY main.sh /var/task/main.sh
RUN chmod +x /var/runtime/bootstrap /var/task/function.sh /var/task/main.sh

WORKDIR /var/task
CMD [ "function.sh.handler" ]

Specify your own Dockerfile with the dockerfile property.

new BashExecFunction(stack, 'Demo', {
  script: path.join(__dirname, '../demo.sh'),
  dockerfile: path.join(__dirname, '../Dockerfile'),
});

Conditional Execution

In the user script(e.g. demo.sh), you are allowed to determine the event type and act accordingly.

For example

const installArgoCD = new BashExecFunction(...)

installArgoCD.run({runOnUpdate: true});

When you run this sample, demo.sh will receive onCreate event and you can run your custom logic to "install ArgoCD" like kubectl apply -f URL. However, if you comment it off and deploy again:

const installArgoCD = new BashExecFunction(...)

//installArgoCD.run({runOnUpdate: true});

Under the hood, demo.sh will receive onDelete event and you can run your custom logic to "uninstall ArgoCD" like kubectl delete -f URL.

Check the full sample code below:

#!/bin/bash

# implement your business logic below
function onCreate() {
  echo "running kubectl apply -f ..."
}

function onUpdate() { 
  echo "do nothing on update"
}

function onDelete() { 
  echo "running kubectl delete -f ..."
}

function getRequestType() {
  echo $1 | jq -r .RequestType
}

function conditionalExec() {
  requestType=$(getRequestType $EVENT_DATA)

  # determine the original request type
  case $requestType in
    'Create') onCreate $1 ;;
    'Update') onUpdate $1 ;;
    'Delete') onDelete $1 ;;
  esac
}

echo "Hello cdk lambda bash!!"

conditionalExec

exit 0

In Action

See this tweet

npm.io

npm.io

2.0.327

3 years ago

2.0.317

3 years ago

2.0.316

3 years ago

2.0.315

3 years ago

2.0.314

3 years ago

2.0.313

3 years ago

2.0.312

3 years ago

2.0.311

3 years ago

2.0.319

3 years ago

2.0.318

3 years ago

2.0.326

3 years ago

2.0.325

3 years ago

2.0.324

3 years ago

2.0.323

3 years ago

2.0.322

3 years ago

2.0.321

3 years ago

2.0.320

3 years ago

2.0.310

3 years ago

2.0.306

3 years ago

2.0.305

3 years ago

2.0.309

3 years ago

2.0.308

3 years ago

2.0.307

3 years ago

2.0.304

3 years ago

2.0.303

3 years ago

2.0.302

3 years ago

2.0.301

3 years ago

2.0.300

3 years ago

2.0.299

3 years ago

2.0.298

3 years ago

2.0.297

3 years ago

2.0.296

3 years ago

2.0.295

3 years ago

2.0.294

3 years ago

2.0.293

3 years ago

2.0.292

3 years ago

2.0.291

3 years ago

2.0.290

3 years ago

2.0.289

3 years ago

2.0.288

3 years ago

2.0.287

3 years ago

2.0.286

3 years ago

2.0.285

3 years ago

2.0.284

3 years ago

2.0.283

3 years ago

2.0.279

3 years ago

2.0.278

3 years ago

2.0.277

3 years ago

2.0.276

3 years ago

2.0.275

3 years ago

2.0.274

3 years ago

2.0.273

3 years ago

2.0.272

3 years ago

2.0.271

3 years ago

2.0.270

3 years ago

2.0.282

3 years ago

2.0.281

3 years ago

2.0.280

3 years ago

2.0.259

3 years ago

2.0.258

3 years ago

2.0.257

3 years ago

2.0.256

3 years ago

2.0.255

3 years ago

2.0.254

3 years ago

2.0.253

3 years ago

2.0.252

3 years ago

2.0.251

3 years ago

2.0.250

3 years ago

2.0.269

3 years ago

2.0.268

3 years ago

2.0.267

3 years ago

2.0.266

3 years ago

2.0.265

3 years ago

2.0.264

3 years ago

2.0.263

3 years ago

2.0.262

3 years ago

2.0.261

3 years ago

2.0.260

3 years ago

2.0.239

3 years ago

2.0.238

3 years ago

2.0.237

3 years ago

2.0.236

3 years ago

2.0.235

3 years ago

2.0.234

3 years ago

2.0.233

3 years ago

2.0.232

3 years ago

2.0.231

3 years ago

2.0.230

3 years ago

2.0.249

3 years ago

2.0.247

3 years ago

2.0.246

3 years ago

2.0.245

3 years ago

2.0.244

3 years ago

2.0.243

3 years ago

2.0.242

3 years ago

2.0.241

3 years ago

2.0.240

3 years ago

2.0.229

3 years ago

2.0.228

3 years ago

2.0.227

3 years ago

2.0.226

3 years ago

2.0.225

3 years ago

2.0.191

4 years ago

2.0.190

4 years ago

2.0.199

4 years ago

2.0.198

4 years ago

2.0.197

4 years ago

2.0.196

4 years ago

2.0.195

4 years ago

2.0.194

4 years ago

2.0.193

4 years ago

2.0.192

4 years ago

2.0.179

4 years ago

2.0.178

4 years ago

2.0.177

4 years ago

2.0.176

4 years ago

2.0.175

4 years ago

2.0.174

4 years ago

2.0.173

4 years ago

2.0.172

4 years ago

2.0.171

4 years ago

2.0.170

4 years ago

2.0.180

4 years ago

2.0.189

4 years ago

2.0.188

4 years ago

2.0.187

4 years ago

2.0.186

4 years ago

2.0.185

4 years ago

2.0.184

4 years ago

2.0.183

4 years ago

2.0.182

4 years ago

2.0.181

4 years ago

2.0.169

4 years ago

2.0.168

4 years ago

2.0.167

4 years ago

2.0.166

4 years ago

2.0.165

4 years ago

2.0.164

4 years ago

2.0.163

4 years ago

2.0.209

4 years ago

2.0.208

4 years ago

2.0.218

3 years ago

2.0.217

3 years ago

2.0.216

3 years ago

2.0.215

3 years ago

2.0.214

3 years ago

2.0.213

3 years ago

2.0.212

3 years ago

2.0.211

4 years ago

2.0.210

4 years ago

2.0.219

3 years ago

2.0.224

3 years ago

2.0.223

3 years ago

2.0.222

3 years ago

2.0.221

3 years ago

2.0.220

3 years ago

2.0.207

4 years ago

2.0.206

4 years ago

2.0.205

4 years ago

2.0.204

4 years ago

2.0.203

4 years ago

2.0.202

4 years ago

2.0.201

4 years ago

2.0.200

4 years ago

2.0.159

4 years ago

2.0.158

4 years ago

2.0.157

4 years ago

2.0.156

4 years ago

2.0.155

4 years ago

2.0.154

4 years ago

2.0.153

4 years ago

2.0.152

4 years ago

2.0.151

4 years ago

2.0.150

4 years ago

2.0.162

4 years ago

2.0.161

4 years ago

2.0.160

4 years ago

2.0.149

4 years ago

2.0.148

4 years ago

2.0.147

4 years ago

2.0.146

4 years ago

2.0.145

4 years ago

2.0.144

4 years ago

2.0.143

4 years ago

2.0.142

4 years ago

2.0.141

4 years ago

2.0.140

4 years ago

2.0.139

4 years ago

2.0.138

4 years ago

2.0.137

4 years ago

2.0.136

4 years ago

2.0.135

4 years ago

2.0.134

4 years ago

2.0.133

4 years ago

2.0.132

4 years ago

2.0.131

4 years ago

2.0.130

4 years ago

2.0.109

4 years ago

2.0.119

4 years ago

2.0.118

4 years ago

2.0.117

4 years ago

2.0.116

4 years ago

2.0.115

4 years ago

2.0.114

4 years ago

2.0.113

4 years ago

2.0.112

4 years ago

2.0.111

4 years ago

2.0.110

4 years ago

2.0.129

4 years ago

2.0.128

4 years ago

2.0.68

4 years ago

2.0.127

4 years ago

2.0.69

4 years ago

2.0.126

4 years ago

2.0.66

4 years ago

2.0.125

4 years ago

2.0.67

4 years ago

2.0.124

4 years ago

2.0.64

4 years ago

2.0.123

4 years ago

2.0.65

4 years ago

2.0.122

4 years ago

2.0.121

4 years ago

2.0.63

4 years ago

2.0.120

4 years ago

2.0.79

4 years ago

2.0.77

4 years ago

2.0.78

4 years ago

2.0.75

4 years ago

2.0.76

4 years ago

2.0.73

4 years ago

2.0.74

4 years ago

2.0.71

4 years ago

2.0.72

4 years ago

2.0.70

4 years ago

2.0.108

4 years ago

2.0.107

4 years ago

2.0.106

4 years ago

2.0.105

4 years ago

2.0.104

4 years ago

2.0.88

4 years ago

2.0.103

4 years ago

2.0.89

4 years ago

2.0.102

4 years ago

2.0.86

4 years ago

2.0.101

4 years ago

2.0.87

4 years ago

2.0.100

4 years ago

2.0.84

4 years ago

2.0.85

4 years ago

2.0.82

4 years ago

2.0.83

4 years ago

2.0.80

4 years ago

2.0.81

4 years ago

2.0.99

4 years ago

2.0.97

4 years ago

2.0.98

4 years ago

2.0.95

4 years ago

2.0.96

4 years ago

2.0.93

4 years ago

2.0.94

4 years ago

2.0.91

4 years ago

2.0.92

4 years ago

2.0.90

4 years ago

2.0.48

4 years ago

2.0.49

4 years ago

2.0.47

4 years ago

2.0.59

4 years ago

2.0.57

4 years ago

2.0.58

4 years ago

2.0.55

4 years ago

2.0.56

4 years ago

2.0.53

4 years ago

2.0.54

4 years ago

2.0.51

4 years ago

2.0.52

4 years ago

2.0.50

4 years ago

2.0.62

4 years ago

2.0.60

4 years ago

2.0.61

4 years ago

2.0.29

4 years ago

2.0.37

4 years ago

2.0.38

4 years ago

2.0.35

4 years ago

2.0.36

4 years ago

2.0.33

4 years ago

2.0.34

4 years ago

2.0.31

4 years ago

2.0.32

4 years ago

2.0.30

4 years ago

2.0.39

4 years ago

2.0.46

4 years ago

2.0.44

4 years ago

2.0.45

4 years ago

2.0.42

4 years ago

2.0.43

4 years ago

2.0.40

4 years ago

2.0.41

4 years ago

2.0.19

4 years ago

2.0.17

4 years ago

2.0.18

4 years ago

2.0.26

4 years ago

2.0.27

4 years ago

2.0.24

4 years ago

2.0.25

4 years ago

2.0.22

4 years ago

2.0.23

4 years ago

2.0.20

4 years ago

2.0.21

4 years ago

2.0.28

4 years ago

0.5.179

4 years ago

0.5.176

4 years ago

0.5.175

4 years ago

0.5.178

4 years ago

0.5.177

4 years ago

2.0.3

4 years ago

2.0.2

4 years ago

2.0.5

4 years ago

2.0.4

4 years ago

2.0.7

4 years ago

2.0.6

4 years ago

2.0.9

4 years ago

2.0.8

4 years ago

2.0.1

4 years ago

2.0.0

4 years ago

0.5.183

4 years ago

0.5.182

4 years ago

0.5.181

4 years ago

0.5.180

4 years ago

2.0.13

4 years ago

2.0.11

4 years ago

2.0.12

4 years ago

2.0.10

4 years ago

0.5.172

4 years ago

0.5.171

4 years ago

0.5.174

4 years ago

0.5.173

4 years ago

0.5.170

4 years ago

0.5.150

5 years ago

0.5.152

5 years ago

0.5.151

5 years ago

0.5.158

5 years ago

0.5.157

5 years ago

0.5.159

5 years ago

0.5.154

5 years ago

0.5.153

5 years ago

0.5.156

5 years ago

0.5.155

5 years ago

0.5.161

5 years ago

0.5.160

5 years ago

0.5.163

5 years ago

0.5.162

5 years ago

0.5.169

4 years ago

0.5.168

4 years ago

0.5.165

5 years ago

0.5.164

5 years ago

0.5.167

5 years ago

0.5.166

5 years ago

0.5.149

5 years ago

0.5.148

5 years ago

0.5.138

5 years ago

0.5.141

5 years ago

0.5.140

5 years ago

0.5.147

5 years ago

0.5.146

5 years ago

0.5.143

5 years ago

0.5.142

5 years ago

0.5.145

5 years ago

0.5.144

5 years ago

0.5.139

5 years ago

0.5.130

5 years ago

0.5.136

5 years ago

0.5.135

5 years ago

0.5.137

5 years ago

0.5.132

5 years ago

0.5.131

5 years ago

0.5.134

5 years ago

0.5.133

5 years ago

0.5.129

5 years ago

0.5.128

5 years ago

0.5.125

5 years ago

0.5.124

5 years ago

0.5.127

5 years ago

0.5.126

5 years ago

0.5.121

5 years ago

0.5.120

5 years ago

0.5.123

5 years ago

0.5.122

5 years ago

0.5.119

5 years ago

0.5.118

5 years ago

0.5.117

5 years ago

0.5.116

5 years ago

0.5.115

5 years ago

0.5.114

5 years ago

0.5.113

5 years ago

0.5.110

5 years ago

0.5.112

5 years ago

0.5.111

5 years ago

0.5.109

5 years ago

0.5.108

5 years ago

0.5.107

5 years ago

0.5.106

5 years ago

0.5.105

5 years ago

0.5.104

5 years ago

0.5.103

5 years ago

0.5.102

5 years ago

0.5.101

5 years ago

0.5.100

5 years ago

0.5.98

5 years ago

0.5.99

5 years ago

0.5.97

5 years ago

0.5.96

5 years ago

0.5.95

5 years ago

0.5.94

5 years ago

0.5.93

5 years ago

0.5.92

5 years ago

0.5.90

5 years ago

0.5.91

5 years ago

0.5.89

5 years ago

0.5.87

5 years ago

0.5.88

5 years ago

0.5.86

5 years ago

0.5.85

5 years ago

0.5.83

5 years ago

0.5.84

5 years ago

0.5.82

5 years ago

0.5.81

5 years ago

0.5.80

5 years ago

0.5.78

5 years ago

0.5.79

5 years ago

0.5.76

5 years ago

0.5.77

5 years ago

0.5.75

5 years ago

0.5.74

5 years ago

0.5.73

5 years ago

0.5.72

5 years ago

0.5.71

5 years ago

0.5.70

5 years ago

0.5.69

5 years ago

0.5.67

5 years ago

0.5.68

5 years ago

0.5.65

5 years ago

0.5.66

5 years ago

0.5.64

5 years ago

0.5.63

5 years ago

0.5.62

5 years ago

0.5.61

5 years ago

0.5.60

5 years ago

0.5.58

5 years ago

0.5.59

5 years ago

0.5.57

5 years ago

0.5.56

5 years ago

0.5.55

5 years ago

0.5.54

5 years ago

0.5.53

5 years ago

0.5.52

5 years ago

0.5.51

5 years ago

0.5.50

5 years ago

0.5.49

5 years ago

0.5.47

5 years ago

0.5.48

5 years ago

0.5.46

5 years ago

0.5.45

5 years ago

0.5.44

5 years ago

0.5.43

5 years ago

0.5.42

5 years ago

0.5.41

5 years ago

0.5.39

5 years ago

0.5.40

5 years ago

0.5.38

5 years ago

0.5.37

5 years ago

0.5.36

5 years ago

0.5.35

5 years ago

0.5.33

5 years ago

0.5.34

5 years ago

0.5.32

5 years ago

0.5.31

5 years ago

0.5.30

5 years ago

0.5.29

5 years ago

0.5.6

5 years ago

0.5.5

5 years ago

0.5.4

5 years ago

0.5.3

5 years ago

0.5.2

5 years ago

0.5.1

5 years ago

0.4.1

5 years ago

0.4.2

5 years ago

0.4.0

5 years ago

0.3.2

5 years ago

0.3.1

5 years ago

0.2.2

5 years ago

0.2.1

5 years ago

0.2.0

5 years ago

0.1.2

5 years ago

0.1.1

5 years ago

0.1.0

5 years ago

0.0.4

5 years ago

0.0.3

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago