概要
この記事では、Windows環境でゼロからRubyの開発環境を作って、ローカルで作成したコードをLambdaにアップし、API Gatewayを通して公開するまでの手順を記載します。
対象
・細かいことは良いから、とりあえずRubyでAPI作ってWeb公開したい人
・Lambdaとやらを使ってとりあえず何か動くものを作りたいが、何から初めて良いか分からない人
環境
- windows10
- Ruby 2.7
目次
- 開発環境を作る
- Lambda関数を作る
- ローカルのコードをLambdaにデプロイする
- API GatewayでWeb公開する
開発環境を作る
まずはRubyの開発環境を作ります。
Rubyのインストール
以下からRubyをインストールします。
■Ruby
https://rubyinstaller.org/downloads/
RubyはRuby+Devkitのver 2.7をDLして下さい
ver 2.7なのは、Lambda上で動くRubyが2.7なので環境を合わせるためです。
+Devkit版なのは、VSCodeでRubyのデバッグをするために、Devkitが必要になるためです。
インストール後、コマンドプロンプトを開き
ruby -v
と入力してrubyのバージョンが表示されれば成功です。
VSCodeのインストール
以下からVSCodeをインストールします。
■VSCode
https://code.visualstudio.com/download
VSCodeの拡張機能をインストール
VSCodeの拡張機能から、RubyとVSCode Rubyを入れます。
これを入れることでRubyの入力サポートをしてくれます。
■Ruby & VSCode Ruby
https://marketplace.visualstudio.com/items?itemName=rebornix.Ruby
VSCodeの設定
拡張機能をインストールしたら最低限の設定として
・language serverの有効化
・デバッグ機能の有効化
を行います。
language serverの有効化
language serverとは、マイクロソフトが提唱している言語入力サポートのプロトコルだそうです。
https://github.com/rubyide/vscode-ruby/blob/main/docs/language-server.md
色々とリッチな入力サポートをしてくれるので、有効化しておきましょう
拡張機能Rubyのドキュメントでも有効化が推奨されています。
- VSCodeを開いて
Cmd + Shift + X
を押し、コマンドパレットを開く - settings jsonと入力し、表示された「基本設定: 設定(JSON)を開く」を選択する
- settings.jsonが開くので
"ruby.useLanguageServer": true
を追加
デバッグ機能の有効化
VSCode上でRubyのデバッグができるようにします。
こちらは先人の記事を参照
https://qiita.com/momoandbanana22/items/60682935ea8b01b30aec
lambda関数を作る
AWSコンソール上でLambda関数を作ります。
実際のコードは後でローカルからデプロイするので、デプロイ先の箱だけ作っておくイメージです。
- Lambdaのコンソールを開き、「関数の作成」を押します。
- 作成する関数の設定画面に移るので関数名とランタイムを入力して、それ以外は変更せずに「関数の作成」を押します。
- 以下ような画面が出れば関数作成は成功です。
ローカルのコードをLambdaにデプロイする
Lambdaにデプロイするコードの作成
VSCodeで以下コードを記述し、lambda_function.rbとして保存して下さい
※ Lambda関数作成時のデフォルトコードのレスポンス文字列を修正しただけのコードです。
require 'json'
def lambda_handler(event:, context:)
{ statusCode: 200, body: JSON.generate('Deploy Success!') }
end
AWS CLIを使ってLambdaにデプロイする
公式ドキュメントの通りに、AWS CLIを使って作成したコードを先程作ったLambdaにデプロイします。
- 以下からAWS CLIをインストールして下さい
https://aws.amazon.com/jp/cli/ - インストールができたら、以下に従ってCLIのセットアップを行います。
https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html - セットアップができたら、以下コマンドで先程作ったlambda_function.rbがlambdaにデプロイできます。
# lambda_function.rbのzipを作成します。(zipにできれば手法は何でも良いです)
zip lambda_function.zip lambda_function.rb
# update-function-codeを使ってzipをlambdaにデプロイします。
# test_functionの部分は自身が作成したLambda関数名に置き換えてください
aws lambda update-function-code --function-name test_function --zip-file fileb://lambda_function.zip
API GatewayでWeb公開する
作成したコードをAPI Gatewayを使ってWeb公開します。
- API Gatewayのコンソールを開き、作成するAPIタイプに「REST API」を選択し「構築」を押す
- 以下設定でAPIを作成する
- リソースの設定画面に移るので"アクション"プルダウンから「メソッドの作成 > ANY」を選択
- APIのバックエンドに何を設定するか聞かれるので、”Lambda 関数”に作成したLambda関数名(今回はtest_function)を入力し、保存する
- "アクションプル"ダウンから「APIのデプロイ」を選択する
- デプロイされるステージを聞かれるので以下設定でデプロイする
- 作成したステージの画面に遷移するので「URLの呼び出し」に記載されているURLにアクセスする
- lambda_function.rbに記載していたレスポンスが返ってきていれば、web公開成功です。
補足
ちゃんとしたlambdaの開発環境を作りたい場合、VScodeではAWS Toolkitという開発ツールが提供されているので
そちらを使うとローカルでlambdaの環境を再現したデバッグを行うことができます。
ただしrubyは対応していません