gulp,gulp-zip,node-aws-lambdaを使用してzip圧縮ファイルでLambdaをデプロイまたは圧縮するまで
gulp,gulp-zip,node-aws-lambdaモジュールを使用してローカルで作成したLambdaを圧縮してデプロイすることができます。
$ npm install -g npx $ npm install gulp gulp-zip node-aws-lambda --save-dev $ touch gulpfile.js
以下のようなディレクトリ構成とします。
gulpfile.jsにタスクを書きます。
タスク | 内容 |
---|---|
zip | 圧縮する |
upload | アップロードする |
lambdaディレクトリ配下にlambdaがあり、それをzipタスクで圧縮、uploadでデプロイします。
以下、gulpfile.jsです。
const gulp = require('gulp'); const zip = require('gulp-zip'); const lambda = require('node-aws-lambda'); const config = { region: 'ap-northeast-1', handler: 'index.handler', functionName: 'gulp', role: 'arn:aws:iam::xxxxxxxxxxxx:role/service-role/test-gulp-xxxx', // 再デプロイ時は省略可能 runtime: 'nodejs12.x' }; gulp.task('zip', function() { return gulp.src(['lambda/**/*', '!lambda/package.json', '!lambda/package-lock.json']) .pipe(zip('./lambda.zip')) .pipe(gulp.dest('./')); }); gulp.task('upload',function(callback) { config.functionName = 'test-' + config.functionName; // 引数渡してプレフィックスつけたい(test-,prod-,...) lambda.deploy('./lambda.zip', config, callback); });
これで、npx gulp zip
コマンドで圧縮します。その次にnpx gulp upload
でデプロイが完了します。とりあえずのデプロイが出来ることを確認しましたが、ちゃんとデプロイするにはrun-sequenceやgulp-installモジュールなどでnpm i --production
をする必要があります。
Lambda→Zip圧縮まで
デプロイはcloudformationなどでデプロイすることも可能です。ここではLambdaをzip圧縮するまでです。
srcのbaseオプションに以下を指定する必要があります。
でないと、zipファイルをデプロイしても正常に動作しません。./tmp/配下に圧縮したいファイルが存在するとします。
gulpfile.js
const gulp = require('gulp') const zip = require('gulp-zip') const install = require('gulp-install') const target = [ './tmp/*.js', // target './tmp/node_modules/**/*', // target '!package.json', // omit '!package-lock.json' // omit ] const options = { base: 'tmp', nodir: true, dot: true } function lambdaDeploy() { return gulp .src(['./src/lambda/sample/**']) .pipe(gulp.dest('./tmp')) .pipe(install({ production: true })) } exports.lambdaDeploy = lambdaDeploy function lambdaZip() { return gulp .src(target, options) .pipe(zip('lamgda.zip')) .pipe(gulp.dest('./zip')) } exports.lambdaZip = lambdaZip exports.deploy = gulp.series( lambdaDeploy, lambdaZip )
npx gulp deploy
でzipファイルが作成されます。あとはcloudformationでデプロイなどすればよいです。

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント