LoginSignup
0
0

More than 3 years have passed since last update.

AWS Lambda を使ってFizzBuzzしたった

Last updated at Posted at 2020-11-17

Backgroud

AWS Lambdaを使ったサーバレスアプリケーションについての話を聞く機会が増えたので試しに作ってみた。

Preparetion





Development (lambdaのみ)

import json

def lambda_handler(event, context):

    request = "[inner_test]"
    num = 30

    doc = {
        "message":'Hello from Lambda!',
        "request":process(num)
    }

    # TODO implement
    return {
        'statusCode': 200,
        'body': json.dumps(doc)
    }


def process(src):

    if src % 15 == 0:
        return "FizzBuzz"
    elif src % 5 == 0:
        return "Buzz"
    elif src % 3 == 0:
        return "Fizz"
    else :
        return src

と書いたのちに、「Deploy」 -> 「テスト」 を押す。

そうすると、、、
実行結果がログで出力される。

Development (with API Gateway)

先ほどの構成はlambdaのみだったが、ここではAPI Gatewayを使って外部からリクエストをかけてみる。

まず、トリガーからAPI Gatewayを選ぶ。
セキュリティはお好みで。

「ステージ」→「POST」を選び、URLを取得する。
URL自体の構成はhttps://{restapi_id}.execute-api.{region}.amazonaws.com/{stage_name}/

それで、lambdaにてリクエストされた値を取得し、FizzBuzzする。コードベースで話すとevent["body"]をjsonでパースして入力値を取得する。

import json

def lambda_handler(event, context):

    request = "[inner_test]"
    num = 30

    #API Gatewayに対応
    #ここでリクエストの値を取得
    if "body" in event.keys():
        request = json.loads(event["body"])
        num = request["num"]

    doc = {
        "message":'Hello from Lambda!',
        "request":process(num)
    }

    # TODO implement
    return {
        'statusCode': 200,
        'body': json.dumps(doc)
    }


def process(src):

    if src % 15 == 0:
        return "FizzBuzz"
    elif src % 5 == 0:
        return "Buzz"
    elif src % 3 == 0:
        return "Fizz"
    else :
        return src

実際にfizzbuzzの値が返ってくるか、Postmanを使ってAPIを叩いてみてみる。
num の値を変えると、FizzBuzzFizzBuzz、数字のいずれかが返ってきます。

これでできた。

Future

サーバレス言わずに最小のVPS使って必要なパッケージ落とせばいいと思っていたのですが時間かけずにできた。
lambda処理後にS3とリンクすればデータは残せそうです。

Reference

Amazon API Gateway で REST API を呼び出す

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0