Web開発ログ | エンジニアに役立つ情報 | 開発の中での気づきを発信

高卒Devlog

【serverless-aws-alias】Lambda関数にエイリアスをつけて環境別デプロイをしてみる

thumbnail

こんにちは! RYOTAです!

当記事をご覧くださりありがとうございます!

タイトル通りですがLambdaの環境別デプロイをしてみたのでやり方を簡単にまとめています。

はじめに

以前の記事でServerless Frameworkを使ってLambda関数のデプロイを行いましたが今回は開発環境、本番環境といった環境ごとにデプロイ仕分ける方法を解説します。
今回使うライブラリはこちらになります。

  • serverless-aws-alias

Serverless Framework: Plugins The Serverless Framework Plugin Registry. Search thousands of Serverless Framework plugins.

目的とゴール

今回の目的は開発環境(dev)、本番環境(master)ごとにデプロイを仕分けられる状態を目指します。
下記が具体的な流れです。

  1. serverless-aws-aliasの設定
  2. デプロイ
  3. Lambdaテスト

serverless-aws-aliasの設定

まずは本命のライブラリをインストールします。

$ yarn add --dev serverless-aws-alias

plugins:
  - serverless-aws-alias

これだけです。めちゃめちゃ簡単ですね。笑

デプロイ

設定が完了したら実際にデプロイをしてみます。

# 初回はエイリアスに master を指定
$ sls deploy --alias {エイリアス名}

ここで謎のエラーが発生

Serverless Warning --------------------------------------
 
CLI options definitions were upgraded with "type" property (which could be one of "string", "boolean", "multiple"). 
Below listed plugins do not predefine type for introduced options:
   - AwsAlias for "alias", "verbose"
  
  Please report this issue in plugin issue tracker.
 
Serverless: Configuration warning at 'provider': unrecognized property 'alias'
Serverless:  
Serverless: Learn more about configuration validation here: http://slss.io/configuration-validation
Serverless:  
Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: Installing dependencies for custom CloudFormation resources...
 
 Type Error ----------------------------------------------

  Get Support --------------------------------------------
     Docs:          docs.serverless.com
     Bugs:          github.com/serverless/serverless/issues
     Issues:        forum.serverless.com
 
  Your Environment Information ---------------------------
     Operating System:          darwin
     Node Version:              14.4.0
     Framework Version:         2.69.1
     Plugin Version:            5.5.1
     SDK Version:               4.3.0
     Components Version:        3.18.1
 
Serverless: Deprecation warnings:

ふむふむふむ。なるほど。全くわからん。笑
調べてみるとServerless Framewordのバージョンが1.61.3以降だとダメっぽい。
とりあえずServerless Framewordのバージョンを下げてみる。

Serverless Frameworkダウングレード

# グローバルアンインストール
$ npm uninstall -g serverless
# バージョン指定してグローバルインストール
$ npm install -g serverless@1.61.2 --save

# バージョン確認
$ sls --version


バージョンが1.61.2に下がったので再度チャレンジ!

再度デプロイ

$ sls deploy --alias master

これでデプロイが成功しました!
Serverless Frameworkのバージョンを下げないと同様の事象が発生するようですね。
ついでに開発環境のデプロイも実施します。

$ sls deploy --alias dev

こちらも成功!

AWSコンソールから確認

デプロイが完了したら実際に環境が作られているか確認します。
AWSコンソール → Lambda → 関数 → エイリアス
それぞれのエイリアスでテストを実行して問題なければ完了となります!
簡単ですね!

さいごに

今回はserverless-aws-aliasを使って同じ関数を複数環境でデプロイしてみました。
設定も簡単でとても使いやすいですね!
Serverless Frameworkを使いこなせればサーバーを立てなくても簡単に関数の実行環境が作れるので引き続きガンガン使っていこうと思います!