はじめに
サーバレスは完全に未経験ですが、勉強がてら備忘録として残しておこうと思います。
表現等が正しく無い場合はご指摘いただければ、幸いです。
サーバレスってなぁに?
簡単に言ってしまうと、ユーザーがサーバー領域を意識せず、直接利用出来るサービスを活用した構成のことです。
「Lambda」は設定されているプログラムを起動させる実行環境となります。起動条件が整った際に、プログラムをLambda環境に呼び出し、実行されます。この為、Lambdaでは、実行した時間とその回数のみの課金となります。
向いているサービス
・待機時間の長いシステム
・CPUの負荷が時間帯によって差のあるシステム
不向きなサービス
・常にシステムの動いている必要のあるサービス
・高負荷な状態が長時間続くシステム
もう少し詳しいことを知りたい場合はこちらのサイトをご覧ください。
サーバーレス アーキテクチャ
Lambda関数の作成
・AWS Lambdaページ>関数の作成>一から作成
・関数名を入力、ランタイムの選択(必要であれば)
・その他はデフォルト値のままで作成ボタン
API Gatewayのトリガーを追加と設定
・「トリガーを追加」ボタンを押し、API Gatewayを選択
・APIを「新規のAPI」を選択
・その他はデフォルト値のままで追加ボタン
ソース
'use strict'
let fs = require('fs')
let path = require('path')
exports.handler = (event, context, callback) => {
let filePath = path.join(__dirname, 'page.html')
let html = fs.readFileSync(filePath).toString()
sendHtmlResponse(context, 200, html)
}
function sendHtmlResponse(context, statusCode, html) {
let response = {
'statusCode': statusCode,
'headers': {
'Content-Type': 'text/html'
},
'body': html
}
context.succeed(response)
}
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>サーバレス</title>
</head>
<body>
<h1>やっちゃおう!サーバレスで</h1>
</body>
</html>
ページにアクセス
API Gatewayの設置したトリガーをクリックし、表示されてるURLをクリックすれば、アクセスできるはずです。
遷移先のページでこのように表示されれば、成功です。
終わりに
次はLambdaとdynamodbやS3と組み合わせて投稿しようかと思います。