Вы должны base64 кодировать ваш .zip-файл и затем передать его в качестве параметра code
.Я написал сценарий оболочки (bash) для кодирования, а также создал действие под названием « action ».Сохраните сценарий как create.sh
и выполните сценарий ./create.sh
#!/bin/sh
ACTION=action
ZIP=$ACTION.zip
base64 $ZIP | echo "\"$(cat)\"" | jq "{namespace:\"_\", name:\"$ACTION\", exec:{kind:\"nodejs:10\", code:., binary:true, main:\"main\"}}" | curl -X PUT -H "Content-Type:application/json" -d @- https://USERNAME:PASSWORD@openwhisk.ng.bluemix.net/api/v1/namespaces/_/actions/$ACTION?overwrite=true
Полный код
app.js или index.js код
function myAction(args) {
const leftPad = require("left-pad")
const lines = args.lines || [];
return { padded: lines.map(l => leftPad(l, 30, ".")) }
}
exports.main = myAction;
package.json
{
"name": "node",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"left-pad" : "1.1.3"
}
}
Запустите npm install
и заархивируйте файл zip -r action.zip *
.
Чтобы проверить действие
ibmcloud fn action invoke --result action --param lines "[\"and now\", \"for something completely\", \"different\" ]"