This is a JavaScript SDK that help DevOps easier by integrating deployment process inline to your code. You will never want to be locked into any vendor for a tool. In FaaS architecture, a function can be very small but a project needs some (3-100) functions to orchestrate a workload. One CI/CD tool for all of them is quite vague to deploy your project when you just need to update one line of a function.
By using this SDK, you can breakdown your CI/CD tool as a function. Once again, FaaS concept now being applied for DevOps process. When you are micro focused into a function, a micro CI/CD function is beside of you. You're always feel safe and be efficiency. Simplify CodeGen generates a first code for you. It works well enough until you need to customize for your best fit. Happy OpenSource ₩
To start, choose one of two serverless models: OpenAPI or GraphQL
npm install simplify-sdk
{
"Profile": "${DEPLOYMENT_PROFILE}",
"Region": "${DEPLOYMENT_REGION}",
"Bucket": {
"Name": "${DEPLOYMENT_BUCKET}",
"Key": "builds/${DATE_TODAY}"
},
"Function": {
"FunctionName": "${FUNCTION_NAME}",
"Handler": "index.handler",
"MemorySize": 256,
"Publish": true,
"Role": "${FUNCTION_ROLE}",
"Runtime": "nodejs12.x",
"Tags": {
"Group": "Simplify"
},
"Timeout": 15,
"TracingConfig": {
"Mode": "PassThrough"
},
"Environment": {
"Variables": {
"ENV": "development"
}
}
}
}'use strict';constpath=require('path')constfs=require('fs')constsimplify=require('simplify-sdk')constprovider=require('simplify-sdk/provider')constYOUR_DEPLOYMENT_REGION="eu-west-1"constYOUR_DEPLOYMENT_BUCKET="your-deployment-bucket-2873821"constYOUR_FUNCTION_NAME="YourLambdaFunction-1WDRZ5J5OUN5H"constYOUR_FUNCTION_ROLE="arn:aws:iam::01234567890:role/YourLambdaExecutionRole"varYOUR_FUNCTION_SHA256="LOAD_FROM_OUTPUT_FILE__data.YOUR_FUNCTION_SHA256"varconfig=simplify.getInputConfig(path.join(__dirname,'config.json'),{DEPLOYMENT_BUCKET: YOUR_DEPLOYMENT_BUCKET,DEPLOYMENT_REGION: YOUR_DEPLOYMENT_REGION,FUNCTION_NAME: YOUR_FUNCTION_NAME,FUNCTION_ROLE: YOUR_FUNCTION_ROLE})provider.setConfig(config).then(sessionCreds=>{simplify.uploadDirectoryAsZip({adaptor: provider.getStorage(), ...{bucketKey: config.Bucket.Key,inputDirectory: 'src',outputFilePath: 'dist',hashInfo: {FileSha256: YOUR_FUNCTION_SHA256}}}).then(uploadInfor=>{simplify.createOrUpdateFunction({adaptor: provider.getFunction(),
...{functionConfig: config.Function,bucketName: config.Bucket.Name,bucketKey: uploadInfor.Key}}).then(function(data){// Handle data response: save output to file...data.YOUR_FUNCTION_SHA256=uploadInfor.FileSha256console.log(`Update-Function: ${data}`)},function(err){console.error(`Update-ERROR: ${err}`);})}).catch(err=>{console.error(`UploadZip-ERROR: ${err}`);})})Thí library curently support for AWS Lambda only.