AWS Lambda(ラムダ)は、サーバーの構築や保守、負荷対策などの管理をすることなく、プログラムコードを実行することができるサービスです。サーバーの管理が一切不要になるので「サーバーレスコンピューティング」と呼ばれることもあります。そこで今回は、AWS Lambda(Python 3.7)の簡単な使い方をまとめてみました。
関数の作成
AWSマネジメントコンソールで、サービス > Lambda >「関数の作成」をクリックします
「一から作成」をクリックします。
適当な関数名を入力し、お好みのランタイム(プログラム言語)を選択します。また、関数を実行するためのロールが必要になりますので、今回はロール名を入力して新しいロールを作成します。入力が終わったら「関数の作成」をクリックします。
1〜2分で関数が作成されます。
トリガーの設定
続いて、関数を実行するためのトリガーを設定します。
トリガーは色々選べますが、今回は基本的な「API Gateway」を選択します。
新規の API を作成し、セキュリティは「APIキー使用でのオープン」を選択して(このあたりは用途にあわせて選択してください)「追加」をクリックします。
最後に画面右上の「保存」をクリックします。
保存が終わると API が作成され、エンドポイントの URL と APIキーを確認できます。
関数を API Gateway 経由で実行してみましょう。APIキーを「x-api-key」ヘッダーに指定してリクエストを実行します。「Hello from Lambda!」と表示されればOKです。
--header 'x-api-key: <AIPキー>'
"Hello from Lambda!"
オリジナルの関数の作成
今回はサンプルとして、素数(1と自分自身以外に約数を持たない数)を判定する関数「is_prime」を作ってみます。クエリストリング「number」で指定した数が素数であれば True、素数でなければ False を返す関数です。
def main(event, context): number = event['queryStringParameters']['number'] result = is_prime(int(number)) return { 'statusCode': 200, 'body': result } def is_prime(number): if number == 1: return False for p in range(2, number): if number % p == 0: return False return True
関数名をクリックして関数コードを表示させます。
初期状態では「lambda_function.py」ファイルの「lambda_handler」関数が実行されるように設定されています。(これが先ほど実行された関数です)
API Gateway 経由で Lambda を使う場合は、レスポンスの設定は上のような作法に従いましょう。たぶんハマりどころです(^^;)
参考資料:API Gateway で統合レスポンスを設定する | AWS ドキュメント
「File」>「New File」を選択して新しいファイルを作成します。
オリジナルの関数「is_prime」のコードを入力します。
「File」>「Save」を選択します。
適当なファイル名を入力して「Save」をクリックします。
ファイルが保存されたことが確認できたら、ハンドラに「<拡張子を除いたファイル名>.<実行する関数名>」を入力し、「保存」をクリックします。
テストイベントの作成
続いて関数をテストするためのテストイベントを作成します。
ページ上部の「テスト」をクリックします。
イベントテンプレート「Amazon API Gateway AWS Proxy」を選択して、適当なイベント名を入力します。「queryStringParameters」に、キー「number」を追加し素数判定する数字を指定したらページ右下の「作成」をクリックします。
作成したテストイベントを選択し、「テスト」をクリックすればテストが実行されます。
プログラムにエラーがある場合は、下のようなエラーログが表示されますのでデバッグすることができます。
関数の実行
API の URLにクエリストリング「number」を追加して実行すれば is_prime 関数が実行されます。
--header 'x-api-key: <AIPキー>'
true
おわりに
AWS Lambda は、AWS IoT ボタンや スマートスピーカー Alexa からの音声リクエストもトリガーにできるようです、アイデア次第で面白サービスが簡単に作れそうですね。
コメント