在亚马逊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
广告
将在 10 秒后关闭
bannerAds