Security News
38% of CISOs Fear They’re Not Moving Fast Enough on AI
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
@ibm-functions/composer
Advanced tools
Composer is an IBM Cloud Functions programming model for composing individual functions into larger applications.
Composer is a new programming model from IBM Research for composing IBM Cloud Functions, built on Apache OpenWhisk. With Composer, developers can build even more serverless applications including using it for IoT, with workflow orchestration, conversation services, and devops automation, to name a few examples.
Programming compositions for IBM Cloud Functions is supported by a new developer tool called IBM Cloud Shell, or just Shell. Shell offers a CLI and graphical interface for fast, incremental, iterative, and local development of serverless applications. While we recommend using Shell, Shell is not required to work with compositions. Compositions may be managed using a combination of the Composer compose shell script (for deployment) and the OpenWhisk CLI (for configuration, invocation, and life-cycle management).
In contrast to earlier releases of Composer, a REDIS server is not required to run compositions. Composer now synthesizes OpenWhisk conductor actions to implement compositions. Compositions have all the attributes and capabilities of an action (e.g., default parameters, limits, blocking invocation, web export).
This repository includes:
Composer and Shell are currently available as IBM Research previews. As Composer and Shell continue to evolve, it may be necessary to redeploy existing compositions to take advantage of new capabilities. However existing compositions should continue to run fine without redeployment.
To install the composer
module use the Node Package Manager:
npm -g install @ibm-functions/composer
We recommend to install the module globally (with -g
option) so the compose
command is added to the path. Otherwise, it can be found in the bin
folder of
the module installation.
A composition is typically defined by means of a Javascript file as illustrated in samples/demo.js:
composer.if(
composer.action('authenticate', { action: function main({ password }) { return { value: password === 'abc123' } } }),
composer.action('success', { action: function main() { return { message: 'success' } } }),
composer.action('failure', { action: function main() { return { message: 'failure' } } }))
Composer offers traditional control-flow concepts as methods. These methods
are called combinators. This example composition composes three actions named
authenticate
, success
, and failure
using the composer.if
combinator,
which implements the usual conditional construct. It take three actions (or
compositions) as parameters. It invokes the first one and, depending on the
result of this invocation, invokes either the second or third action.
This composition includes the definitions of the three composed actions. If the actions are defined and deployed elsewhere, the composition code can be shorten to:
composer.if('authenticate', 'success', 'failure')
To deploy this composition use the compose
command:
compose demo.js --deploy demo
The compose
command synthesizes and deploy an action named demo
that
implements the composition. It also deploys the composed actions if definitions
are provided for them.
The demo
composition may be invoked like any action, for instance using the
OpenWhisk CLI:
wsk action invoke demo -r -p password passw0rd
{
"message": "failure"
}
We are looking forward to your feedback and criticism. We encourage you to join us on slack. File bugs and we will squash them.
We welcome contributions to Composer and Shell. See CONTRIBUTING.md.
FAQs
Composer is a new programming model for composing cloud functions built on Apache OpenWhisk.
The npm package @ibm-functions/composer receives a total of 19 weekly downloads. As such, @ibm-functions/composer popularity was classified as not popular.
We found that @ibm-functions/composer demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 7 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.
Security News
Company News
Socket is joining TC54 to help develop standards for software supply chain security, contributing to the evolution of SBOMs, CycloneDX, and Package URL specifications.