AWS Lambda Ruby Runtimeを使ってサーバーレスなSinatraアプリケーションを作る #reinvent
SinatraアプリをLambdaで動かす
Ruby Runtimeが利用可能になったAWS Lambda。以下の記事では、簡単なLambda Functionを作成するところをやってみました。
aws-samples ではSinatraアプリをLambdaで動かすサンプルが公開されているので、試してみました。
インストールまで
Rubyをインストールします。以下はrbenvを使ってインストールする場合です。LambdaのRuby RuntimeのRubyバージョンは 2.5.0
なので、ローカルのRubyバージョンも 2.5.0
に合わせる必要があります。
$ rbenv install 2.5.0 $ rbenv global 2.5.0
リポジトリをcloneして、Gemをインストールします。
$ git clone git@github.com:aws-samples/serverless-sinatra-sample.git $ cd serverless-sinatra-sample
$ bundle install
SAMのデプロイ
S3バケットは事前に用意しておき、以下のコマンドでSAMをパッケージします。
$ aws cloudformation package \ --template-file template.yaml \ --output-template-file serverless-output.yaml \ --s3-bucket <S3バケット>
serverless-sinatra
という名前でデプロイします。
$ aws cloudformation deploy --template-file serverless-output.yaml \ --stack-name serverless-sinatra \ --capabilities CAPABILITY_IAM
使ってみる
APIとWebページが用意されます。
まずはAPIはhello-world
で呼べます。
$ curl -XGET https://xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/Prod/hello-world {"Output":"Hello World!"}
次はWebページ。https://xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/Prod/feedback
でアクセスします。
Webページが起動しました!
Lambdaはサーバーサイドエンジニアにとって、より扱いやすいものに
SinatraアプリがAPI Gateway+Lambda Functionで動かすことができました。Railsも動かしてみたいですね。