在亚马逊Linux上构建无服务器框架开发环境
在Amazon Linux (AMI)上启动EC2实例,并创建一个serverless framework的开发环境。
只需一个选项,将以下内容用中文表达出来:省略了与EC2实例建立SSH连接的步骤。
引入Node.js
我将通过 NVM 安装 Node.js。
$ yum search nodejs
Loaded plugins: priorities, update-motd, upgrade-helper
Warning: No matches found for: nodejs
No matches found
我要安装nvm。由于amazon的教程中所提供的命令是nvm v0.32.0版本,比较旧,所以我需要执行官方网站上提供的命令。
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
确认并应用在.bashrc文件中追加的处理来设置环境变量和PATH等内容。
source ~/.bash_profile
‘.bashrc’ 中添加了以下处理。
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
由于lambda的nodejs环境是v6.10(截止到2017年6月2日),因此我们将安装v6.10。
如果要部署到lambda@edge环境中,则需要使用v4.3版本。
# v6.10系があることを確認
nvm ls-remote
# v6.10をインストール(v6.10.3が最新)
nvm install v6.10
# v6.10を使用開始
nvm use 6.10
确认已安装。
$ node -e "console.log('Running Node.js ' + process.version)"
Running Node.js v6.10.3
$ node -v
v6.10.3
安装Serverless框架
安装Serverless框架。
https://serverless.com/framework/docs/providers/aws/guide/installation/
npm install -g serverless
确认已经安装了。
$ serverless --version
1.14.0
$ sls --version
1.14.0
我们将使用Serverless框架来创建一个Lambda函数。
在Serverless中,我们将指定可用于Lambda的语言环境作为模板,并逐步创建函数。
执行以下命令。
sls create --template aws-nodejs --path chat
会创建handler.js和serverless.yml这两个文件。
同时还创建了用于定义AWS服务的serverless定义文件。
由于创建了一个回复简单消息的函数hello,我们将在本地尝试运行它。
$ cd chat
$ sls invoke local -f hello
{
"statusCode": 200,
"body": "{\"message\":\"Go Serverless v1.0! Your function executed successfully!\",\"input\":\"\"}"
}
在 handler.js 文件中实现了执行 function 的 hello。
'use strict';
module.exports.hello = (event, context, callback) => {
const response = {
statusCode: 200,
body: JSON.stringify({
message: 'Go Serverless v1.0! Your function executed successfully!',
input: event,
}),
};
callback(null, response);
// Use this code if you don't use the http event with the LAMBDA-PROXY integration
// callback(null, { message: 'Go Serverless v1.0! Your function executed successfully!', event });
};
满足不足
当使用Serverless Framework命令时发生错误,希望了解错误的详细信息。
如果要输出错误详细信息,请设置以下环境变量。
export SLS_DEBUG=true