2.0.327 • Published 10 months ago

cdk-lambda-bash v2.0.327

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

10 months ago

2.0.317

1 year ago

2.0.316

1 year ago

2.0.315

1 year ago

2.0.314

1 year ago

2.0.313

1 year ago

2.0.312

1 year ago

2.0.311

1 year ago

2.0.319

1 year ago

2.0.318

1 year ago

2.0.326

1 year ago

2.0.325

1 year ago

2.0.324

1 year ago

2.0.323

1 year ago

2.0.322

1 year ago

2.0.321

1 year ago

2.0.320

1 year ago

2.0.310

1 year ago

2.0.306

1 year ago

2.0.305

1 year ago

2.0.309

1 year ago

2.0.308

1 year ago

2.0.307

1 year ago

2.0.304

1 year ago

2.0.303

1 year ago

2.0.302

1 year ago

2.0.301

1 year ago

2.0.300

1 year ago

2.0.299

1 year ago

2.0.298

1 year ago

2.0.297

1 year ago

2.0.296

1 year ago

2.0.295

1 year ago

2.0.294

1 year ago

2.0.293

1 year ago

2.0.292

1 year ago

2.0.291

1 year ago

2.0.290

1 year ago

2.0.289

1 year ago

2.0.288

1 year ago

2.0.287

1 year ago

2.0.286

1 year ago

2.0.285

1 year ago

2.0.284

1 year ago

2.0.283

1 year ago

2.0.279

1 year ago

2.0.278

1 year ago

2.0.277

1 year ago

2.0.276

1 year ago

2.0.275

1 year ago

2.0.274

1 year ago

2.0.273

1 year ago

2.0.272

1 year ago

2.0.271

1 year ago

2.0.270

1 year ago

2.0.282

1 year ago

2.0.281

1 year ago

2.0.280

1 year ago

2.0.259

1 year ago

2.0.258

1 year ago

2.0.257

1 year ago

2.0.256

1 year ago

2.0.255

1 year ago

2.0.254

1 year ago

2.0.253

1 year ago

2.0.252

1 year ago

2.0.251

1 year ago

2.0.250

1 year ago

2.0.269

1 year ago

2.0.268

1 year ago

2.0.267

1 year ago

2.0.266

1 year ago

2.0.265

1 year ago

2.0.264

1 year ago

2.0.263

1 year ago

2.0.262

1 year ago

2.0.261

1 year ago

2.0.260

1 year ago

2.0.239

1 year ago

2.0.238

1 year ago

2.0.237

1 year ago

2.0.236

1 year ago

2.0.235

1 year ago

2.0.234

1 year ago

2.0.233

1 year ago

2.0.232

1 year ago

2.0.231

1 year ago

2.0.230

1 year ago

2.0.249

1 year ago

2.0.247

1 year ago

2.0.246

1 year ago

2.0.245

1 year ago

2.0.244

1 year ago

2.0.243

1 year ago

2.0.242

1 year ago

2.0.241

1 year ago

2.0.240

1 year ago

2.0.229

1 year ago

2.0.228

1 year ago

2.0.227

1 year ago

2.0.226

1 year ago

2.0.225

1 year ago

2.0.191

2 years ago

2.0.190

2 years ago

2.0.199

2 years ago

2.0.198

2 years ago

2.0.197

2 years ago

2.0.196

2 years ago

2.0.195

2 years ago

2.0.194

2 years ago

2.0.193

2 years ago

2.0.192

2 years ago

2.0.179

2 years ago

2.0.178

2 years ago

2.0.177

2 years ago

2.0.176

2 years ago

2.0.175

2 years ago

2.0.174

2 years ago

2.0.173

2 years ago

2.0.172

2 years ago

2.0.171

2 years ago

2.0.170

2 years ago

2.0.180

2 years ago

2.0.189

2 years ago

2.0.188

2 years ago

2.0.187

2 years ago

2.0.186

2 years ago

2.0.185

2 years ago

2.0.184

2 years ago

2.0.183

2 years ago

2.0.182

2 years ago

2.0.181

2 years ago

2.0.169

2 years ago

2.0.168

2 years ago

2.0.167

2 years ago

2.0.166

2 years ago

2.0.165

2 years ago

2.0.164

2 years ago

2.0.163

2 years ago

2.0.209

1 year ago

2.0.208

1 year ago

2.0.218

1 year ago

2.0.217

1 year ago

2.0.216

1 year ago

2.0.215

1 year ago

2.0.214

1 year ago

2.0.213

1 year ago

2.0.212

1 year ago

2.0.211

1 year ago

2.0.210

1 year ago

2.0.219

1 year ago

2.0.224

1 year ago

2.0.223

1 year ago

2.0.222

1 year ago

2.0.221

1 year ago

2.0.220

1 year ago

2.0.207

1 year ago

2.0.206

1 year ago

2.0.205

1 year ago

2.0.204

1 year ago

2.0.203

1 year ago

2.0.202

2 years ago

2.0.201

2 years ago

2.0.200

2 years ago

2.0.159

2 years ago

2.0.158

2 years ago

2.0.157

2 years ago

2.0.156

2 years ago

2.0.155

2 years ago

2.0.154

2 years ago

2.0.153

2 years ago

2.0.152

2 years ago

2.0.151

2 years ago

2.0.150

2 years ago

2.0.162

2 years ago

2.0.161

2 years ago

2.0.160

2 years ago

2.0.149

2 years ago

2.0.148

2 years ago

2.0.147

2 years ago

2.0.146

2 years ago

2.0.145

2 years ago

2.0.144

2 years ago

2.0.143

2 years ago

2.0.142

2 years ago

2.0.141

2 years ago

2.0.140

2 years ago

2.0.139

2 years ago

2.0.138

2 years ago

2.0.137

2 years ago

2.0.136

2 years ago

2.0.135

2 years ago

2.0.134

2 years ago

2.0.133

2 years ago

2.0.132

2 years ago

2.0.131

2 years ago

2.0.130

2 years ago

2.0.109

2 years ago

2.0.119

2 years ago

2.0.118

2 years ago

2.0.117

2 years ago

2.0.116

2 years ago

2.0.115

2 years ago

2.0.114

2 years ago

2.0.113

2 years ago

2.0.112

2 years ago

2.0.111

2 years ago

2.0.110

2 years ago

2.0.129

2 years ago

2.0.128

2 years ago

2.0.68

2 years ago

2.0.127

2 years ago

2.0.69

2 years ago

2.0.126

2 years ago

2.0.66

2 years ago

2.0.125

2 years ago

2.0.67

2 years ago

2.0.124

2 years ago

2.0.64

2 years ago

2.0.123

2 years ago

2.0.65

2 years ago

2.0.122

2 years ago

2.0.121

2 years ago

2.0.63

2 years ago

2.0.120

2 years ago

2.0.79

2 years ago

2.0.77

2 years ago

2.0.78

2 years ago

2.0.75

2 years ago

2.0.76

2 years ago

2.0.73

2 years ago

2.0.74

2 years ago

2.0.71

2 years ago

2.0.72

2 years ago

2.0.70

2 years ago

2.0.108

2 years ago

2.0.107

2 years ago

2.0.106

2 years ago

2.0.105

2 years ago

2.0.104

2 years ago

2.0.88

2 years ago

2.0.103

2 years ago

2.0.89

2 years ago

2.0.102

2 years ago

2.0.86

2 years ago

2.0.101

2 years ago

2.0.87

2 years ago

2.0.100

2 years ago

2.0.84

2 years ago

2.0.85

2 years ago

2.0.82

2 years ago

2.0.83

2 years ago

2.0.80

2 years ago

2.0.81

2 years ago

2.0.99

2 years ago

2.0.97

2 years ago

2.0.98

2 years ago

2.0.95

2 years ago

2.0.96

2 years ago

2.0.93

2 years ago

2.0.94

2 years ago

2.0.91

2 years ago

2.0.92

2 years ago

2.0.90

2 years ago

2.0.48

2 years ago

2.0.49

2 years ago

2.0.47

2 years ago

2.0.59

2 years ago

2.0.57

2 years ago

2.0.58

2 years ago

2.0.55

2 years ago

2.0.56

2 years ago

2.0.53

2 years ago

2.0.54

2 years ago

2.0.51

2 years ago

2.0.52

2 years ago

2.0.50

2 years ago

2.0.62

2 years ago

2.0.60

2 years ago

2.0.61

2 years ago

2.0.29

2 years ago

2.0.37

2 years ago

2.0.38

2 years ago

2.0.35

2 years ago

2.0.36

2 years ago

2.0.33

2 years ago

2.0.34

2 years ago

2.0.31

2 years ago

2.0.32

2 years ago

2.0.30

2 years ago

2.0.39

2 years ago

2.0.46

2 years ago

2.0.44

2 years ago

2.0.45

2 years ago

2.0.42

2 years ago

2.0.43

2 years ago

2.0.40

2 years ago

2.0.41

2 years ago

2.0.19

2 years ago

2.0.17

2 years ago

2.0.18

2 years ago

2.0.26

2 years ago

2.0.27

2 years ago

2.0.24

2 years ago

2.0.25

2 years ago

2.0.22

2 years ago

2.0.23

2 years ago

2.0.20

2 years ago

2.0.21

2 years ago

2.0.28

2 years ago

0.5.179

2 years ago

0.5.176

2 years ago

0.5.175

2 years ago

0.5.178

2 years ago

0.5.177

2 years ago

2.0.3

2 years ago

2.0.2

2 years ago

2.0.5

2 years ago

2.0.4

2 years ago

2.0.7

2 years ago

2.0.6

2 years ago

2.0.9

2 years ago

2.0.8

2 years ago

2.0.1

2 years ago

2.0.0

2 years ago

0.5.183

2 years ago

0.5.182

2 years ago

0.5.181

2 years ago

0.5.180

2 years ago

2.0.13

2 years ago

2.0.11

2 years ago

2.0.12

2 years ago

2.0.10

2 years ago

0.5.172

2 years ago

0.5.171

2 years ago

0.5.174

2 years ago

0.5.173

2 years ago

0.5.170

2 years ago

0.5.150

3 years ago

0.5.152

3 years ago

0.5.151

3 years ago

0.5.158

2 years ago

0.5.157

3 years ago

0.5.159

2 years ago

0.5.154

3 years ago

0.5.153

3 years ago

0.5.156

3 years ago

0.5.155

3 years ago

0.5.161

2 years ago

0.5.160

2 years ago

0.5.163

2 years ago

0.5.162

2 years ago

0.5.169

2 years ago

0.5.168

2 years ago

0.5.165

2 years ago

0.5.164

2 years ago

0.5.167

2 years ago

0.5.166

2 years ago

0.5.149

3 years ago

0.5.148

3 years ago

0.5.138

3 years ago

0.5.141

3 years ago

0.5.140

3 years ago

0.5.147

3 years ago

0.5.146

3 years ago

0.5.143

3 years ago

0.5.142

3 years ago

0.5.145

3 years ago

0.5.144

3 years ago

0.5.139

3 years ago

0.5.130

3 years ago

0.5.136

3 years ago

0.5.135

3 years ago

0.5.137

3 years ago

0.5.132

3 years ago

0.5.131

3 years ago

0.5.134

3 years ago

0.5.133

3 years ago

0.5.129

3 years ago

0.5.128

3 years ago

0.5.125

3 years ago

0.5.124

3 years ago

0.5.127

3 years ago

0.5.126

3 years ago

0.5.121

3 years ago

0.5.120

3 years ago

0.5.123

3 years ago

0.5.122

3 years ago

0.5.119

3 years ago

0.5.118

3 years ago

0.5.117

3 years ago

0.5.116

3 years ago

0.5.115

3 years ago

0.5.114

3 years ago

0.5.113

3 years ago

0.5.110

3 years ago

0.5.112

3 years ago

0.5.111

3 years ago

0.5.109

3 years ago

0.5.108

3 years ago

0.5.107

3 years ago

0.5.106

3 years ago

0.5.105

3 years ago

0.5.104

3 years ago

0.5.103

3 years ago

0.5.102

3 years ago

0.5.101

3 years ago

0.5.100

3 years ago

0.5.98

3 years ago

0.5.99

3 years ago

0.5.97

3 years ago

0.5.96

3 years ago

0.5.95

3 years ago

0.5.94

3 years ago

0.5.93

3 years ago

0.5.92

3 years ago

0.5.90

3 years ago

0.5.91

3 years ago

0.5.89

3 years ago

0.5.87

3 years ago

0.5.88

3 years ago

0.5.86

3 years ago

0.5.85

3 years ago

0.5.83

3 years ago

0.5.84

3 years ago

0.5.82

3 years ago

0.5.81

3 years ago

0.5.80

3 years ago

0.5.78

3 years ago

0.5.79

3 years ago

0.5.76

3 years ago

0.5.77

3 years ago

0.5.75

3 years ago

0.5.74

3 years ago

0.5.73

3 years ago

0.5.72

3 years ago

0.5.71

3 years ago

0.5.70

3 years ago

0.5.69

3 years ago

0.5.67

3 years ago

0.5.68

3 years ago

0.5.65

3 years ago

0.5.66

3 years ago

0.5.64

3 years ago

0.5.63

3 years ago

0.5.62

3 years ago

0.5.61

3 years ago

0.5.60

3 years ago

0.5.58

3 years ago

0.5.59

3 years ago

0.5.57

3 years ago

0.5.56

3 years ago

0.5.55

3 years ago

0.5.54

3 years ago

0.5.53

3 years ago

0.5.52

3 years ago

0.5.51

3 years ago

0.5.50

3 years ago

0.5.49

3 years ago

0.5.47

3 years ago

0.5.48

3 years ago

0.5.46

3 years ago

0.5.45

3 years ago

0.5.44

3 years ago

0.5.43

3 years ago

0.5.42

3 years ago

0.5.41

3 years ago

0.5.39

3 years ago

0.5.40

3 years ago

0.5.38

3 years ago

0.5.37

3 years ago

0.5.36

3 years ago

0.5.35

3 years ago

0.5.33

3 years ago

0.5.34

3 years ago

0.5.32

3 years ago

0.5.31

3 years ago

0.5.30

3 years ago

0.5.29

3 years ago

0.5.6

3 years ago

0.5.5

3 years ago

0.5.4

3 years ago

0.5.3

3 years ago

0.5.2

3 years ago

0.5.1

3 years ago

0.4.1

3 years ago

0.4.2

3 years ago

0.4.0

3 years ago

0.3.2

3 years ago

0.3.1

3 years ago

0.2.2

3 years ago

0.2.1

3 years ago

0.2.0

3 years ago

0.1.2

3 years ago

0.1.1

3 years ago

0.1.0

3 years ago

0.0.4

3 years ago

0.0.3

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago