2017-02-24 85 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 –