概要
MacのローカルにServerless FrameworkをいれてAWSのlambdaに反映してみる。
前提
今回のServerless FrameworkはNode.js 20.Xでlambda関数を作成する。
MacのローカルにはNode.jsが入っており、そのNode.jsはvoltaにより管理されている。
下記コマンドを実行して、command not foundにならないこと。またNode.jsのバージョンが20.Xになっていること。
npm -v
node -v
volta -v
MacのローカルにはAWS CLIがはいっており、下記コマンドを実行して、command not foundにならないこと。
aws -h
AWSのアカウントを保持しており、下記を実行した結果がそのアカウント情報と一致していること(アクセスキーとシークレットキーはAWSのマネジメントコンソールログイン後、IAMに移動し、当該ユーザーの詳細に移動し、「アクセスキー」の部分で確認する事ができる。シークレットキーはあとから確認できないため、わからなかったら「アクセスキー」を作り直してしまう方が早い。作り直すときは「AWSの外部のサービスから使用・・・」的なものを選んでアクセスキーを作成する)
aws configure
方法
-
下記を実行してServerless Frameworkのグローバルインストール
npm install -g serverless
-
下記を実行してserverless.ymlファイルを作成して展開
touch serverless.yml vi serverless.yml
-
serverless.ymlを下記のように記載
serverless.ymlservice: test-serverless provider: name: aws runtime: nodejs20.x functions: hello: handler: handler.hello events: - http: path: hello method: get
-
下記を実行してServerless Frameworkの新規プロジェクトを作成
serverless
-
下記のようにでたら「Login/Register」を選択してEnterを押下(押下後、ブラウザが開く。)
? Serverless Framework V4 CLI is free for developers and organizations making less than $2 million annually, but requires an account or a license key. Please login/register or enter your license key: … ❯ Login/Register Get A License Enter A License Key Explain Licensing Basics
-
アカウントを持っていない場合作成、持っている場合ログイン(筆者は持ってなかったので作成)
-
下記の様にきかれた「AWS / Node.js / HTTP API」を選択してEnterを押下
? Select A Template: … ❯ AWS / Node.js / HTTP API AWS / Node.js / Express API AWS / Node.js / Express API with DynamoDB AWS / Node.js / Scheduled Task AWS / Node.js / Simple Function AWS / Python / HTTP API AWS / Python / Flask API AWS / Python / Flask API with DynamoDB AWS / Python / Scheduled Task AWS / Python / Simple Function
-
下記のように聞かれたら「test-serverless-project」と入力してEnterを押下
? Name Your Project: › test-project
-
下記のように聞かれたら「Create A New App」を選択してEnterを押下
? Create Or Select An Existing App: … ❯ Create A New App Skip Adding An App
-
下記のように聞かれたら「test-serverless」と入力してEnterを押下
? Name Your New App: ›
-
ディレクトリを作成し移動(ディレクトリ名は先に指定したプロジェクト名)
cd test-project
-
下記を実行してnpmパッケージをインストール
npm init -y npm install
-
handler.jsを開き、内容を確認
-
このタイミングで後述する記事の内容を参考にデプロイ対象リージョンの設定を行っておいてください。筆者は設定せず進めたのでバージニア北部にlambdaが作られました。 参考になる 記事はこちら → Serverless Framework 特に設定せずデプロイしたらバージニア北部のlambdaにデプロイされた
誤って別リージョンにリソースを作ってしまった場合の削除方法はこちら → Serverless Framework デプロイで作成したリソース群を削除する -
下記を実行してAWSのlambdaにデプロイを実施
serverless deploy
-
下記のように出たらおそらくデプロイは完了している(設定ミスでバージニア北部のlambdaに追加されてしまった模様、、、)
Deploying "test-project" to stage "dev" (us-east-1) ✔ Service deployed to stack test-project-dev (85s)
-
バージニア北部のリージョンにデプロイされてしまう問題は別で解決するとして、AWSにログインしlambdaを確認
-
たしかにlambdaが作成されている(コードの内容も先に確認したローカルのhandler.jsと一致している)
-
さらにAPI Gatewayなんかも自動で作成されている
ここまでできたら一旦作業は完了