1
2

More than 3 years have passed since last update.

Serverless Frameworkを使用して、AWS上のLambdaにデプロイするまで【開発環境構築含む】

Last updated at Posted at 2020-08-25

概要

タイトルの通り、Serverless Frameworkを使用して、AWS上のLambdaにデプロイするまでの開発環境構築手順
最終的には、NestJSのアプリケーションをLambdaにデプロイして「Hello World」を表示させたいと思います。

1. Serverless Frameworkをインストールする前に

事前に開発環境を整えます。本記事の開発端末はMacです。
基本的なインストールが完了している方は、Serverless Frameworkをインストールするところから読んでいただければと思います。

Homebrewのインストール

ホームページにあるスクリプトを実行する

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

nodebrewのインストール

「Homebrew」が使えるようになったので、次に「nodebrew」をインストールします。
nodebrewはNode.jsのインストールから複数のバージョンを管理・切り替えできるツールになります。

$ brew install nodebrew

Node.jsのインストール

必要なバージョンを指定してインストールします。

$ nodebrew install-binary latest

インストール直後はcurrent: noneとなっているため、必要なバージョンを有効化します。

nodebrew use v x.x.x

参考記事:https://qiita.com/kyosuke5_20/items/c5f68fc9d89b84c0df09

AWSCLIのインストール

Macの場合、pipが初めからインストールされているため、pipを使用してAWSCLIをインストールしたいと思います。

sudo pip install awscli

Gitのインストール

GitはHomebrewを使用してインストールします。

参考:https://qiita.com/micheleno13/items/133aee005ae37c28960e

Gitをインストールしてもxcode-selectがインストールされていないと使用できない場合があります。

xcode-select --install

参考:https://qiita.com/royroy/items/338362362de73a94fc0c

必要アカウントの用意(登録)

  1. awsアカウント

    1. アカウントの作成
      https://aws.amazon.com/jp/register-flow/
    2. IAMユーザの作成
      https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_users_create.html
    3. IAM アクセスキーの発行
      作成したIAMユーザを選択し、「認証情報」から「アクセスキーの作成」を選択し、アクセスキーとシークレットキーを取得します。(後ほど使用するのでどこかに保管してください)
  2. GitHub(コード管理する場合のみ)

GitHub(アカウント)登録:https://github.co.jp/
Gitについて参考(全般):https://employment.en-japan.com/engineerhub/entry/2017/01/31/110000

2. Serverless Frameworkのインストール

参考:https://dev.classmethod.jp/cloud/aws/easy-deploy-of-lambda-with-serverless-framework/

npmからServerless Frameworkをインストールします。

$ npm install -g serverless

完了したら動作確認します。(バージョン確認)

$ serverless -v
Framework Core: 1.59.3
Plugin: 3.2.5
SDK: 2.2.1
Components Core: 1.1.2
Components CLI: 1.4.0

AWSアカウントの設定

Serverless FrameworkからLambdaなどAWSのリソースにデプロイする際にアクセス権限が必要なための設定です。
先ほどAWSアカウントを登録した際のIAMアクセスキーの情報をServerless Frameworksに設定します。

sls config credentials --provider aws --key XXXXXXXXXXXXEXAMPLE --secret XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXEXAMPLEKEY

3. NestJS を Lambda にデプロイする

基本的な開発環境が整ったので、実際にServerless Frameworkを使用してデプロイを行いたいと思います。
以下リポジトリをそのまま引用します。
https://github.com/rdlabo/serverless-nestjs

NestJSのインストール

今回はNestJSのアプリケーションを使用するためインストールします。

$ npm install @nestjs/cli serverless -g

ソースをローカルにコピー

Git Cloneでローカルにソースをコピーします。

git clone https://github.com/rdlabo/serverless-nestjs.git

デプロイ時に必要なパッケージをインストール

$ npm install

ローカルで「Hello World」が表示されるか確認

$ npm start

ブラウザで確認します。
http://localhost:3000/
スクリーンショット 2019-12-13 4.03.51.png

Lambdaデプロイ

$ sls deploy
Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: Creating Stack...
~~~~~~~~~~~~~~~~~~~~~~~~~~ 省略 ~~~~~~~~~~~~~~~~~~~~~~~~~~
endpoints:
  ANY - https://jpvi3b5i8a.execute-api.us-east-1.amazonaws.com/dev/
  ANY - https://jpvi3b5i8a.execute-api.us-east-1.amazonaws.com/dev/{proxy+}
functions:
  index: serverless-nestjs-dev-index
layers:
  None
Serverless: Run the "serverless" command to setup monitoring, troubleshooting and testing.

生成されたエンドポイントで確認します。
※デプロイしたサーバによってエンドポイントは異なります。
https://jpvi3b5i8a.execute-api.us-east-1.amazonaws.com/dev/
スクリーンショット 2019-12-13 3.59.58.png
AWSコンソール上でリソースが作成されたことを確認します。
リージョンはバージニア北部(us-east-1)に作成されています。
スクリーンショット 2019-12-13 3.56.46.png
確認したらリソースは削除してください。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2