2017-02-24 88 views
1

我寫了一個簡單的Alexa技能。它使用「alexa-app」作爲依賴項。將Alexa技能部署到具有「alexa-app」依賴性的AWS Lambda

var alexa = require('alexa-app');

當我保存和測試我的技術,我得到如下回應

{ 
    "errorMessage": "Cannot find module 'alexa-app'", 
    "errorType": "Error", 
    "stackTrace": [ 
    "Function.Module._load (module.js:276:25)", 
    "Module.require (module.js:353:17)", 
    "require (internal/module.js:12:17)", 
    "Object.<anonymous> (/var/task/index.js:4:13)", 
    "Module._compile (module.js:409:26)", 
    "Object.Module._extensions..js (module.js:416:10)", 
    "Module.load (module.js:343:32)", 
    "Function.Module._load (module.js:300:12)", 
    "Module.require (module.js:353:17)" 
    ] 
} 

是否有可能利用這個「alexa的應用程序內的」依賴沒有烘烤成一個zip文件。爲了加快開發速度,我寧願使用在線Lambda代碼編輯器中的一個文件。這可能嗎?

+1

不,烘烤它。 –

回答

3

不,您將需要將其包含在任何其他文件的zip中。然而,這確實不難。您可以使用AWS CLI來簡化此操作。

這裏是我在我的Mac上使用了這樣一個bash腳本:

# Create archive if it doesn't already exist 
# Generally not needed, and just a refresh is performed 
if [ ! -f ./Archive.zip ]; 
then 
    echo "Creating Lambda.zip" 
else 
    echo "Updating existing Lambda.zip" 
fi 

# Update and upload new archive 
zip -u -r Lambda.zip index.js src node_modules 
echo "Uploading Lambda.zip to AWS Lambda"; 
aws lambda update-function-code --function-name ronsSkill --zip-file fileb://Lambda.zip 

在上面的腳本,它與在./src所有文件,並一起打包了一個index.js文件./node_modules目錄。它將它們上傳到我的'ronsSkill'Lambda函數中。 我也使用alexa-app,它通過npm包含在node_modules目錄中。

+0

此回覆是在亞馬遜宣佈ASK CLI之前做出的。它仍然有效,但問題cli值得檢查,並可以在沒有上述腳本的情況下執行相同的操作。請參閱https://developer.amazon.com/docs/smapi/quick-start-alexa-skills-kit-command-line-interface.html –