Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 3 years have passed since last update.

AWS LambdaでAPI簡単実装

Posted at

AWSlambda の基本的使い方

アドベントカレンダー2020年 23日目の記事です。

この記事は、偏見と偏った知識で構成されています。
AWSlambdaとか使うと自分のReactなどで作成したものがどこでも動く!
データベースもクラウドなので、データを持ってくる時使える

※しっかり学びたい人は、AWS のドキュメント見てください!!

アドベントカレンダー2020
アドベントカレンダー2019

前日
翌日  機械学習でデータ分析!

AWSlambda って何?

AWSlambda は、簡単に言うとクラウドファンクションです。
サーバにプログラミングした関数を AWS に設定しておいて任意のタイミングで実行できるもの
と捉えていただいていいと思います。

  • IotCore
  • API
    などで使用できます。

料金

AWSlambda のいいところは、使用する時だけサーバのリソースを使用していない
なので、ランニングコストは、非常に良いです。

うん十万かかるような構成にしなければ、基本的にお財布に優しいです。

使用するもの

  • aws のアカウント
  • ブラウザ
  • プログラミング知識

上記3つが揃っていれば誰でもできます。プログラミング知識も IF 文 FOR 文 がわかっていればできます。

実装環境作成

今回、紹介するのは、API として使用できるLambda です。
また言語は、Pythonを使用します。

なんで、pythonなのか!
 研究室でデータ解析とかやるのでみんなある程度読める(と思う)

cloud 9

AWS には、便利なエディターがあります。
今回は、それを使用しましょう。

cloud 9作成手順

EC2(仮想サーバ)を作成する必要があります。

  1. create environment を押す
  2. Name を設定
  3. 環境を設定(今回は、直接アクセス)、メモリと CPU の選択
  4. 環境作成
    上記の手順でやれば作成できます。
    ネットワークの選択は、お好みで

コーディング環境作成

Lambda の関数を作成しましょう。
lamd.png

  1. lambda のボタンを押します
  2. funcion name を設定します
  3. Next を押す
  4. empty-python を選択
  5. トリガーを選択(APIGATE しかない)
  6. 適当にパスを設定(今回は  /  )
  7. セキュリティ設定
  8. メモリ設定
  9. finish

これでできました

実装

今回は、簡単な API の実装です。
URL にアクセスしたら決まった文字が帰ってくるようにしましょう。

### コーディング

lambda_funcion
def lambda_handler(event, context):
    data={"test":"omoti moti moti"}
    return data

試しにこれで動かしましょう
コーディング環境作成 手順1のボタンの下に作成した Lambda があるのでそこから run -> run loacl で実行してみましょう

{
    "test": "omoti moti moti"
}

返ってきたのが上記の内容です
では、続いて APIgateway local で試しましょう

{
    "message": "Internal server error"
}

エラーです!頭をかかえたいです。
単純なエラーです。レスポンスの形式が間違ってるからです。
ドキュメントを読むと簡単に解決します。
ここよんで

リンク先を参考に下記のように改変しました。

import json

def lambda_handler(event, context):
  # TODO implement
    data={"test":"omoti moti moti"}
    return {
        "statusCode": 200,
        "headers": {
        "Content-type": "application/json"
        },
        "body": json.dumps(data)

    }

エラーが消えます。

デプロイ

run の時は、関数名から実行という流れでクリックしました。
デプロイは、作成したものをサーバで実際に動かす際、行うものです。
緑色のフォルダーみたいなものを右クリックすると deploy とあるのでデプロイします。

確認

デプロイするとURLが発行されるのでそのURLに行きます。
結果が以下です。
result.png

あとがき

非常に簡単にAPIなど作成できます。とても簡単でいいです。
今回Pythonでしたが他の言語でも実装できます。
レスポンスの形式が決まっているのは、初心者が落入りやすいミスだと思ったので紹介しました。
もっと簡単に実装するのであれば、NodeJsだともっと簡単に実装できる物があ用意されています。

モジュールインストール

pythonですと、いろいろモジュールをインストールしてDBとかを扱う機会があると思います。
私が触り始めた際は、pythonでのモジュールインストールは、インストール先が違うとか、2系のだのといろいろありました。なので、設定を少し変える必要があります。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?