エンジニアブログ株式会社イノベーションのエンジニアたちの技術系ブログです。Lambda編〜どうも、中村です。Gatewayを使ってAPI化していきたいと思います。Gateway編は次回書きます。Lambdaに設定していくのですが、デプロイするためにファイルを圧縮したものを作成しましょう。上記ディレクトリへ移動した後に以下コマンドを実行すれば、全てのファイルを圧縮したものが作成されます。いうファイルをLambda関数の作成時に使用していきます。Lambda関数の作成では早速Lambda関数を作成していきましょう。関数の作成をクリック。「一から作成」を選びます。(デフォルトで選択済み)名前は分かりやすいものでOK。3.6」を選択します。今回新規のロールを作成するので、「テンプレートから新しいロールを作成」を選択。ロール名も分かりやすいものであれば適当でOKです。Lambda関数が無事作成されました。コードをアップロードするそれでは前回作成したコードをアップロードしていきます。関数コードというパネルのコードエントリタイプから「.ZIPファイルをアップロード」を選択し、先ほど作成した「get_recommend.zip」を選択します。右上の「保存」ボタンをクリックするとアップロードされた内容が表示され、コンソール上で編集が可能になります。コードを修正する前回作成したプログラムはコンソール上から実行させるものでしたので、修正する必要があります。大まかに説明すると、以下の2点になります。メイン部分をハンドラーへ変更それぞれ修正していきましょう。メイン部分も変更していきます。コマンドライン引数にて渡していた「対象製品ID」は、handlerのeventから取得するようにします。最後に関数コードパネルの上部にあるハンドラ部分を、今回のプログラムに合うように変更します。get_recommend.pyのlambda_handlerを実行させたいので、get_recommend.lambda_handlerとします。修正したコードをデバッグしていきたいので、テストイベントを設定していきましょう。画面上部にある「テスト」ボタンをクリックします。(デフォルトで選択済み)イベント名は何でも良いです。(個人的には渡す値などが判別できる名称にしたかったのですが、英数字のみに限定されているため上手く表現できませんでした)最下部の編集エリアには、テスト時に渡したい値などを記入しておきます。上記のように記述しておくと、Lambda関数側で以下のように値を渡すことができます。←"111,222"作成したテストイベントが選択されているはずなので、テストボタンをクリックしてみましょう。エラーがでますね(笑)ライブラリをアップロードする前回プログラムを作成した際には、pipにてライブラリをインストールしました。Lambdaではpipを使ってインストールすることは出来ないため以下の手順でライブラリをアップロードしていきます。Lambdaにてファイルをアップロード今回エラーが発生したライブラリは「nltk」というライブラリだったので、以下のようなコマンドになります。再度AWSのコンソールからZIPファイルをアップロードしてみましょう。ライブラリがアップロードされました。これで実行できるはずです。できませんでした(汗)_sqlite3なんて使ってないけど?ログとして出力しているものの、先ほどとは違い心当たりがない。調べてみると、以下のサイトを見つけました。https://stackoverflow.com/questions/44058239/sqlite3-error-on-aws-lambda-with-python-3なるほど、例のnltkライブラリの依存関係でエラーが発生しているようです。こちらの回答にあるように、sqlite3を使っていない場合の対応を行えば上手くいけそうです。結果ようやく完成しました!最終的なコードはこんな感じ。前回作成したプログラムをそのままLambda関数として使用することはできず、結構修正が必要でした。最終的にAPI化するのであれば、最初からLambda関数として作成した方が断然早いなーと思いました。