2.0.327 • Published 2 years ago

cdk-lambda-bash v2.0.327

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
2 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

2 years ago

2.0.317

2 years ago

2.0.316

2 years ago

2.0.315

2 years ago

2.0.314

2 years ago

2.0.313

2 years ago

2.0.312

2 years ago

2.0.311

2 years ago

2.0.319

2 years ago

2.0.318

2 years ago

2.0.326

2 years ago

2.0.325

2 years ago

2.0.324

2 years ago

2.0.323

2 years ago

2.0.322

2 years ago

2.0.321

2 years ago

2.0.320

2 years ago

2.0.310

2 years ago

2.0.306

2 years ago

2.0.305

2 years ago

2.0.309

2 years ago

2.0.308

2 years ago

2.0.307

2 years ago

2.0.304

2 years ago

2.0.303

2 years ago

2.0.302

2 years ago

2.0.301

2 years ago

2.0.300

2 years ago

2.0.299

2 years ago

2.0.298

2 years ago

2.0.297

2 years ago

2.0.296

2 years ago

2.0.295

2 years ago

2.0.294

2 years ago

2.0.293

2 years ago

2.0.292

2 years ago

2.0.291

2 years ago

2.0.290

2 years ago

2.0.289

2 years ago

2.0.288

2 years ago

2.0.287

2 years ago

2.0.286

2 years ago

2.0.285

2 years ago

2.0.284

2 years ago

2.0.283

2 years ago

2.0.279

2 years ago

2.0.278

2 years ago

2.0.277

2 years ago

2.0.276

2 years ago

2.0.275

2 years ago

2.0.274

2 years ago

2.0.273

2 years ago

2.0.272

2 years ago

2.0.271

2 years ago

2.0.270

2 years ago

2.0.282

2 years ago

2.0.281

2 years ago

2.0.280

2 years ago

2.0.259

2 years ago

2.0.258

2 years ago

2.0.257

2 years ago

2.0.256

2 years ago

2.0.255

2 years ago

2.0.254

2 years ago

2.0.253

2 years ago

2.0.252

2 years ago

2.0.251

2 years ago

2.0.250

2 years ago

2.0.269

2 years ago

2.0.268

2 years ago

2.0.267

2 years ago

2.0.266

2 years ago

2.0.265

2 years ago

2.0.264

2 years ago

2.0.263

2 years ago

2.0.262

2 years ago

2.0.261

2 years ago

2.0.260

2 years ago

2.0.239

2 years ago

2.0.238

2 years ago

2.0.237

2 years ago

2.0.236

2 years ago

2.0.235

2 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

2 years ago

2.0.247

2 years ago

2.0.246

2 years ago

2.0.245

2 years ago

2.0.244

2 years ago

2.0.243

2 years ago

2.0.242

2 years ago

2.0.241

2 years ago

2.0.240

2 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

3 years ago

2.0.190

3 years ago

2.0.199

3 years ago

2.0.198

3 years ago

2.0.197

3 years ago

2.0.196

3 years ago

2.0.195

3 years ago

2.0.194

3 years ago

2.0.193

3 years ago

2.0.192

3 years ago

2.0.179

3 years ago

2.0.178

3 years ago

2.0.177

3 years ago

2.0.176

3 years ago

2.0.175

3 years ago

2.0.174

3 years ago

2.0.173

3 years ago

2.0.172

3 years ago

2.0.171

3 years ago

2.0.170

3 years ago

2.0.180

3 years ago

2.0.189

3 years ago

2.0.188

3 years ago

2.0.187

3 years ago

2.0.186

3 years ago

2.0.185

3 years ago

2.0.184

3 years ago

2.0.183

3 years ago

2.0.182

3 years ago

2.0.181

3 years ago

2.0.169

3 years ago

2.0.168

3 years ago

2.0.167

3 years ago

2.0.166

3 years ago

2.0.165

3 years ago

2.0.164

3 years ago

2.0.163

3 years ago

2.0.209

3 years ago

2.0.208

3 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

3 years ago

2.0.210

3 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

3 years ago

2.0.206

3 years ago

2.0.205

3 years ago

2.0.204

3 years ago

2.0.203

3 years ago

2.0.202

3 years ago

2.0.201

3 years ago

2.0.200

3 years ago

2.0.159

3 years ago

2.0.158

3 years ago

2.0.157

3 years ago

2.0.156

3 years ago

2.0.155

3 years ago

2.0.154

3 years ago

2.0.153

3 years ago

2.0.152

3 years ago

2.0.151

3 years ago

2.0.150

3 years ago

2.0.162

3 years ago

2.0.161

3 years ago

2.0.160

3 years ago

2.0.149

3 years ago

2.0.148

3 years ago

2.0.147

3 years ago

2.0.146

3 years ago

2.0.145

3 years ago

2.0.144

3 years ago

2.0.143

3 years ago

2.0.142

3 years ago

2.0.141

3 years ago

2.0.140

3 years ago

2.0.139

3 years ago

2.0.138

3 years ago

2.0.137

3 years ago

2.0.136

3 years ago

2.0.135

3 years ago

2.0.134

3 years ago

2.0.133

3 years ago

2.0.132

3 years ago

2.0.131

3 years ago

2.0.130

3 years ago

2.0.109

3 years ago

2.0.119

3 years ago

2.0.118

3 years ago

2.0.117

3 years ago

2.0.116

3 years ago

2.0.115

3 years ago

2.0.114

3 years ago

2.0.113

3 years ago

2.0.112

3 years ago

2.0.111

3 years ago

2.0.110

3 years ago

2.0.129

3 years ago

2.0.128

3 years ago

2.0.68

3 years ago

2.0.127

3 years ago

2.0.69

3 years ago

2.0.126

3 years ago

2.0.66

3 years ago

2.0.125

3 years ago

2.0.67

3 years ago

2.0.124

3 years ago

2.0.64

3 years ago

2.0.123

3 years ago

2.0.65

3 years ago

2.0.122

3 years ago

2.0.121

3 years ago

2.0.63

3 years ago

2.0.120

3 years ago

2.0.79

3 years ago

2.0.77

3 years ago

2.0.78

3 years ago

2.0.75

3 years ago

2.0.76

3 years ago

2.0.73

3 years ago

2.0.74

3 years ago

2.0.71

3 years ago

2.0.72

3 years ago

2.0.70

3 years ago

2.0.108

3 years ago

2.0.107

3 years ago

2.0.106

3 years ago

2.0.105

3 years ago

2.0.104

3 years ago

2.0.88

3 years ago

2.0.103

3 years ago

2.0.89

3 years ago

2.0.102

3 years ago

2.0.86

3 years ago

2.0.101

3 years ago

2.0.87

3 years ago

2.0.100

3 years ago

2.0.84

3 years ago

2.0.85

3 years ago

2.0.82

3 years ago

2.0.83

3 years ago

2.0.80

3 years ago

2.0.81

3 years ago

2.0.99

3 years ago

2.0.97

3 years ago

2.0.98

3 years ago

2.0.95

3 years ago

2.0.96

3 years ago

2.0.93

3 years ago

2.0.94

3 years ago

2.0.91

3 years ago

2.0.92

3 years ago

2.0.90

3 years ago

2.0.48

3 years ago

2.0.49

3 years ago

2.0.47

3 years ago

2.0.59

3 years ago

2.0.57

3 years ago

2.0.58

3 years ago

2.0.55

3 years ago

2.0.56

3 years ago

2.0.53

3 years ago

2.0.54

3 years ago

2.0.51

3 years ago

2.0.52

3 years ago

2.0.50

3 years ago

2.0.62

3 years ago

2.0.60

3 years ago

2.0.61

3 years ago

2.0.29

3 years ago

2.0.37

3 years ago

2.0.38

3 years ago

2.0.35

3 years ago

2.0.36

3 years ago

2.0.33

3 years ago

2.0.34

3 years ago

2.0.31

3 years ago

2.0.32

3 years ago

2.0.30

3 years ago

2.0.39

3 years ago

2.0.46

3 years ago

2.0.44

3 years ago

2.0.45

3 years ago

2.0.42

3 years ago

2.0.43

3 years ago

2.0.40

3 years ago

2.0.41

3 years ago

2.0.19

3 years ago

2.0.17

3 years ago

2.0.18

3 years ago

2.0.26

3 years ago

2.0.27

3 years ago

2.0.24

3 years ago

2.0.25

3 years ago

2.0.22

3 years ago

2.0.23

3 years ago

2.0.20

3 years ago

2.0.21

3 years ago

2.0.28

3 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

3 years ago

2.0.2

3 years ago

2.0.5

3 years ago

2.0.4

3 years ago

2.0.7

3 years ago

2.0.6

3 years ago

2.0.9

3 years ago

2.0.8

3 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

3 years ago

2.0.11

3 years ago

2.0.12

3 years ago

2.0.10

3 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

4 years ago

0.5.152

4 years ago

0.5.151

4 years ago

0.5.158

4 years ago

0.5.157

4 years ago

0.5.159

4 years ago

0.5.154

4 years ago

0.5.153

4 years ago

0.5.156

4 years ago

0.5.155

4 years ago

0.5.161

4 years ago

0.5.160

4 years ago

0.5.163

4 years ago

0.5.162

4 years ago

0.5.169

4 years ago

0.5.168

4 years ago

0.5.165

4 years ago

0.5.164

4 years ago

0.5.167

4 years ago

0.5.166

4 years ago

0.5.149

4 years ago

0.5.148

4 years ago

0.5.138

4 years ago

0.5.141

4 years ago

0.5.140

4 years ago

0.5.147

4 years ago

0.5.146

4 years ago

0.5.143

4 years ago

0.5.142

4 years ago

0.5.145

4 years ago

0.5.144

4 years ago

0.5.139

4 years ago

0.5.130

4 years ago

0.5.136

4 years ago

0.5.135

4 years ago

0.5.137

4 years ago

0.5.132

4 years ago

0.5.131

4 years ago

0.5.134

4 years ago

0.5.133

4 years ago

0.5.129

4 years ago

0.5.128

4 years ago

0.5.125

4 years ago

0.5.124

4 years ago

0.5.127

4 years ago

0.5.126

4 years ago

0.5.121

4 years ago

0.5.120

4 years ago

0.5.123

4 years ago

0.5.122

4 years ago

0.5.119

4 years ago

0.5.118

4 years ago

0.5.117

4 years ago

0.5.116

4 years ago

0.5.115

4 years ago

0.5.114

4 years ago

0.5.113

4 years ago

0.5.110

4 years ago

0.5.112

4 years ago

0.5.111

4 years ago

0.5.109

4 years ago

0.5.108

4 years ago

0.5.107

4 years ago

0.5.106

4 years ago

0.5.105

4 years ago

0.5.104

4 years ago

0.5.103

4 years ago

0.5.102

4 years ago

0.5.101

4 years ago

0.5.100

4 years ago

0.5.98

4 years ago

0.5.99

4 years ago

0.5.97

4 years ago

0.5.96

4 years ago

0.5.95

4 years ago

0.5.94

4 years ago

0.5.93

4 years ago

0.5.92

4 years ago

0.5.90

4 years ago

0.5.91

4 years ago

0.5.89

4 years ago

0.5.87

4 years ago

0.5.88

4 years ago

0.5.86

4 years ago

0.5.85

4 years ago

0.5.83

4 years ago

0.5.84

4 years ago

0.5.82

4 years ago

0.5.81

4 years ago

0.5.80

4 years ago

0.5.78

4 years ago

0.5.79

4 years ago

0.5.76

4 years ago

0.5.77

4 years ago

0.5.75

4 years ago

0.5.74

4 years ago

0.5.73

4 years ago

0.5.72

4 years ago

0.5.71

4 years ago

0.5.70

4 years ago

0.5.69

4 years ago

0.5.67

4 years ago

0.5.68

4 years ago

0.5.65

4 years ago

0.5.66

4 years ago

0.5.64

4 years ago

0.5.63

4 years ago

0.5.62

4 years ago

0.5.61

4 years ago

0.5.60

4 years ago

0.5.58

4 years ago

0.5.59

4 years ago

0.5.57

4 years ago

0.5.56

4 years ago

0.5.55

4 years ago

0.5.54

4 years ago

0.5.53

4 years ago

0.5.52

4 years ago

0.5.51

4 years ago

0.5.50

4 years ago

0.5.49

4 years ago

0.5.47

4 years ago

0.5.48

4 years ago

0.5.46

4 years ago

0.5.45

4 years ago

0.5.44

4 years ago

0.5.43

4 years ago

0.5.42

4 years ago

0.5.41

4 years ago

0.5.39

4 years ago

0.5.40

4 years ago

0.5.38

4 years ago

0.5.37

4 years ago

0.5.36

4 years ago

0.5.35

4 years ago

0.5.33

4 years ago

0.5.34

4 years ago

0.5.32

4 years ago

0.5.31

4 years ago

0.5.30

4 years ago

0.5.29

4 years ago

0.5.6

4 years ago

0.5.5

4 years ago

0.5.4

4 years ago

0.5.3

4 years ago

0.5.2

4 years ago

0.5.1

4 years ago

0.4.1

4 years ago

0.4.2

4 years ago

0.4.0

4 years ago

0.3.2

4 years ago

0.3.1

4 years ago

0.2.2

4 years ago

0.2.1

4 years ago

0.2.0

4 years ago

0.1.2

4 years ago

0.1.1

4 years ago

0.1.0

4 years ago

0.0.4

4 years ago

0.0.3

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago