gulp,gulp-zip,node-aws-lambdaを使用してzip圧縮ファイルでLambdaをデプロイする方法

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

view raw
gistfile1.txt
hosted with ❤ by GitHub

以下のようなディレクトリ構成とします。

Gulp,node-aws-lambdaを使用してzip圧縮ファイルでLambdaをデプロイする方法

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);
});

view raw
gistfile1.txt
hosted with ❤ by GitHub

これで、npx gulp zipコマンドで圧縮します。その次にnpx gulp uploadでデプロイが完了します。とりあえずのデプロイが出来ることを確認しましたが、ちゃんとデプロイするにはrun-sequenceやgulp-installモジュールなどでnpm i --productionをする必要があります。

Lambdaデプロイするとき

Lambdaデプロイするときは、srcのbaseオプションに以下を指定する必要があります。

でないと、zipファイルをデプロイしても正常に動作しません。

{
        nodir: true,
        dot: true
}

gulpの基本的な使い方

スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA