CloudFormationのpackage&deployをgulpで実行してLambdaデプロイする

CloudFormationのpackage&deployをgulpで実行してLambdaデプロイする

gulpでpackage&deployしてlambdaをデプロイします。

npm init -y
npm i gulp
touch gulpfile.js
touch index.yml

CloudFormationのymlファイルです。

index.yml

AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::Serverless-2016-10-31
Description: This CloudFormation template to create Lambda function

Resources:
  MyLambdaFunction:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: sample-lambda
      CodeUri: ../zip/indexLambda.zip ★圧縮ファイルある前提
      Handler: index.handler
      Runtime: nodejs16.x
      MemorySize: 128
      Timeout: 15

gulpfile.jsの中身です。

gulpfile.js

const gulp = require('gulp')
const util = require('util')
const exec = util.promisify(require('child_process').exec)

async function indexLambdaPackageDeploy() {
  await exec('aws cloudformation package --template-file index.yml --s3-bucket <バケット名> --output-template-file tmp.yml')
  await exec('aws cloudformation deploy --template-file tmp.yml --stack-name <スタック名> --capabilities CAPABILITY_IAM')
}
exports.indexLambdaPackageDeploy = indexLambdaPackageDeploy

タスク実行します。

npx gulp indexLambdaPackageDeploy

stackとlambdaができます。

補足

aws cloudformation packageとaws cloudformation deployだと変更がなくてもlambdaデプロイされてしまう為、回避するにはsam package&sam deployにしたほうが良いかもしれません。

参考サイト

aws cloudformation packageコマンド

AWS CloudFormationでLambdaをデプロイする方法

コメント

タイトルとURLをコピーしました