AWS Lambda的node-canvas构建

时间:2015-11-26 02:57:29

标签: fabricjs aws-lambda node-canvas

我是Linux&节点noob。我正在尝试在AWS Lambda中运行FabricJS(需要node-canvas)。我已经能够按照说明在AWS Linux EC2上启动和运行,但是,Lambda让我在我的智慧结束。任何人都有关于如何为AW Lambda编译的任何提示或指示?

2 个答案:

答案 0 :(得分:1)

我在Node Canvas GitHub site中发现了这个问题。提问者也试图在Lambda中运行FabricJS。以下是相关部分的答案:

  
      
  1. 确保您在lambda当前使用的同一AMI上进行编译:   http://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html

  2.   
  3. Lambda运行在/ var / task(这是解压缩时的路径),所以zip文件根目录下的something.so将位于/var/task/something.so。

    < / LI>         

    然后我们想使用“rpath”构建我们的库:

       export LDFLAGS=-Wl,-rpath=/var/task/
    
         
        
    1. 根据以下内容编译库:https://github.com/Automattic/node-canvas/wiki/Installation---Amazon-Linux-AMI-%28EC2%29
    2.         

      您可能需要设置prefix =〜/ canvas以将所有文件放在一个位置。

           
          
      1. 使用npm

      2. 安装node-canvas   
      3. cd node_modules / canvas; node-gyp rebuild

      4.   
      5. mkdir~ / pkg和cp .so文件(〜/ canvas / lib / *。so),使用-L取消引用符号链接。

      6.   
      7. 将pkg目录scp到本地lambda文件夹,可能会将文件放在正确的位置。 (.so在root中,node_modules / canvas与其他libs)。你可能想要重新排列它。

      8.   

答案 1 :(得分:-1)

这是一个gulp插件,它可以上传你的文件以及为aws lambda专门构建的node-canvas及其依赖项二进制文件。

NPM Package

'use strict';
//This is a sample gulp file that can be used. 
//npm install --save gulp gulp-zip gulp-awslambda 
const gulp   = require('gulp');
const zip    = require('gulp-zip');
const path   = require('path');
const lambda = require('gulp-awslambda');
const aws_lambda_node_canvas = require('./');

let runtime = 'nodejs4.3' // nodejs or nodejs4.3 

const lambda_params  = {
    FunctionName: 'NodeCanvas', /* Lambda function name */
    Description: 'Node canvas function in aws lambda', //Description for your lambda function 
    Handler: 'main.lambda_handler', //Assuming you will provide main.py file with a function called handler. 
    MemorySize: 128,
    Runtime: runtime,
    Role : 'ROLE_STRING',//eg:'arn:aws:iam::[Account]:role/lambda_basic_execution' 
    Timeout: 50
};

var opts = {
    region : 'ap-southeast-2'
}

gulp.task('default', () => {
    return gulp.src(['main.js', '!node_modules/**/*','!dist/**/*','!node_modules/aws-lambda-node-canvas/**/*']) //Your src files to bundle into aws lambda 
        .pipe(aws_lambda_node_canvas({runtime : runtime})) //Adds all the required files needed to run node-canvas in aws lambda 
        .pipe(zip('archive.zip'))
        .pipe(lambda(lambda_params, opts))
        .pipe(gulp.dest('dist')); //Also place the uploaded file 
});