Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8691

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

$
0
0

概要

タイトルの通り、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
確認したらリソースは削除してください。


Viewing all articles
Browse latest Browse all 8691

Trending Articles