Serverless frameworkでAWS Lambda構築から配布まで


はじめに

プロジェクトでAWS Lambdaを使用することになりましたが、簡単に配布できる方法を探して共有したいと思います。

Serverless FrameworkでAWS Lambdaを簡単に配布する方法を開始します。

Serverless Framework

サーバレスを構成することになれば、それぞれの関数を作成するのはもちろん、それに合った環境設定を毎回変えることも仕事です。

この時、Serverless Frameworkを使用すれば、簡単に配布することができます。

Serverless Frameworkは、AWS、Google Cloud Platform、Microsoft Azureなどのクラウドサービスで、手軽にアプリケーションを作成·配布できるツールです。

手順概要

  1. serverless のインストール
  2. IAMユーザの作成
  3. serverlessテンプレートを活用してアプリケーションを作成
  4. 配布前にテスト
  5. serverless.yml設定
  6. 配布

1) serverlessのインストール

npm install -g serverless

2) IAMユーザの作成

serverlessを通じてコードを配布するためにAWSの権限を持っていなければならない。

AWS IAMにアクセスし、ユーザ追加をクリックします。

  • ユーザー名を入力します。
  • ServerlessがAWSにアクセスするために"プログラムによるアクセス"を選択します。

  • スピーディな進行のため、"AdministratorAccess" を選択します。
  • 実際のサービスには、すべてのアクセス権限を持つポリシーの使用は推奨されません。

IAMユーザーが追加されました。

  • アクセスキーID、シークレットアクセスキーをコピーするか.csvファイルをダウンロードします。
  • AWS にアクセスできるキーですので、管理を心がけましょう。

Serverless Frameworkの権限設定

serverless config credentials --provider aws --key {アクセスキーID} --secret {シークレットアクセスキー}

3) serverlessテンプレートを活用してアプリケーションを作成

  • Serverlessでサポートしているテンプレートを確認
sls create -t
  • 希望するテンプレートでserverlessプロジェクト作成
serverless create -t {テンプレート} -p {プロジェクト名}
$ serverless create -t aws-nodejs -p test
Serverless: Generating boilerplate...
Serverless: Generating boilerplate in "C:\Users\mhkim\node.js\test"
 _______                             __
|   _   .-----.----.--.--.-----.----|  .-----.-----.-----.
|   |___|  -__|   _|  |  |  -__|   _|  |  -__|__ --|__ --|
|____   |_____|__|  \___/|_____|__| |__|_____|_____|_____|
|   |   |             The Serverless Application Framework
|       |                           serverless.com, v2.28.7
 -------'

Serverless: Successfully generated boilerplate for template: "aws-nodejs"

作成されたディレクトリー確認

  • .gitignore
    • Gitバージョン管理から除外するファイルリストを指定するファイル
  • handler.js
    • Lambda実行関数ファイル
  • serverless.yml
    • Lambda関数およびAPi GatewayなどServerlessFrameworkの設定ファイル

4) 配布前にテスト

serverless invoke local --function hello

5) serverless.yml 設定

provider:
  name: aws
  runtime: nodejs12.x
  stage: dev
  region: ap-northeast-1
functions:
  hello:
    handler: handler.hello
    events:
      - http:
          path: hello
          method: get
  • 地域を東京(ap-northeast-1)に設定し、devステージに配布
  • helloという関数はhandler.helloとつながっており、httpGETを通じて実行可能

つまり、私たちがAWS Consoleで一つ一つ設定していたものをたった数行に設定することができます。

詳しい説明はReferenceでご確認ください。
https://www.serverless.com/framework/docs/providers/aws/guide/serverless.yml

6) 配布

serverless deploy
  • 配布に要する時間は、関数に使用したパッケージ容量によって異なります。
  • 配布が終了すると、AWS Lambda コンソールにアクセスすると、関数が生成されたことを確認することができます。

結論

次はAWS LambdaでS3にファイルアップロード方法を出力します。
フィードバックはコメントでお願いします!