3
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Serverless Frameworkを試してみる(Line Message API + API Gateway + Lambda + Google Cloud Vision API編)

Last updated at Posted at 2017-01-12

はじめに

前回、Lambda + API GatewayでAPIをサクッと作れることが分かったので、
このままLine Message APIから、API Gatewayを呼び出してみよう!
ついでに、Google Cloud Visionで画像解析の結果を取得して返してみよう!
ってことで、いろいろまとめてみました。

Line Message APIにはSDK、
Google Cloud Vision APIにはClient
が用意されており、意外と簡単に作れちゃいます。

botのソースコードについてはgithub上を参照してください。

試してみる

LINEアカウントの準備

まずLINE Business CenterのDeveloper Trialよりアカウントを作成。

アカウントが作成できると、アカウントリストに「LINE@ Developer」が作成されるので、「LINE@ MANAGER」へアクセス。

「アカウント設定」→「Bot設定」より「APIを利用する」を押下。

下記、Bot設定を行い、保存。

  • Webhook送信:利用する
  • 自動応答メッセージ:利用しない

こんな感じですね。

スクリーンショット 2016-11-08 8.11.57.png

Google Cloud Vision APIの準備

何はともあれGoogleのアカウントが必要です。
Googleアカウントを作成後、Google Cloud Platformにログインします。

なお、Google Cloud Visionは無料枠があるものの、課金を有効にしないと利用できないので、クレジットカードを登録する必要があります。
なので、その辺りの設定を行ってください。

設定が終わったら、新しいプロジェクトを作成します。
スクリーンショット 2016-12-27 8.24.23.png

プロジェクト名は適当な感じで作成。
スクリーンショット 2016-12-27 8.24.55.png
google APIを利用する枠を押下。
スクリーンショット 2016-12-27 8.25.23.png

「APIを有効にする」を押下します。
スクリーンショット 2016-12-27 8.25.42.png

すると、APIを検索する画面に遷移しますので、「Cloud Vision」と入力し、「Google Cloud Vision API」のリンクを押下。
スクリーンショット 2016-12-27 8.26.08.png

「有効にする」を押下します。
スクリーンショット 2016-12-27 8.26.23.png

楽だけど、長い。。。

次に認証情報を作成します。
左メニューの「認証情報」を押下し、「認証情報を作成」ボタンを押下します。
スクリーンショット 2016-12-27 8.36.19.png

すると、何種類か出てくるのですが、今回は「Google Cloud API向け」と書かれてる「サービス アカウント キー」を選択します。
取り急ぎサービスアカウントキーは初めからある「Compute Engine default service account」を選択し、キーのタイプはJSONで作成します。
スクリーンショット 2016-12-27 8.43.35.png

すると、作成されたキーファイルがダウンロードされます。
こちらは、後ほどGoogleのSDKから利用しますので、とっておいてください。

Line Message API用のWebhook URLのendpointの作成

環境

  • Serverless:1.4.0
  • Python:2.7.11
  • pip:9.0.1

手順

今回、新たにプロジェクトを作成します。今回もpythonで作成します。

$ serverless create --template aws-python --path detectImage-linebot-service
$ cd detectImage-linebot-service

line-bot用のSDKとGoogleAPIのクライアントをvendor配下にインストール。

requirements.txt
line-bot-sdk>=1.0.2
google-api-python-client>=1.5.0
$ pip install -r requirements.txt -t vendor

endpointをcallbackという名前で用意.

serverless.yml
provider:
  name: aws
  runtime: python2.7
  region: ap-northeast-1
custom:
  stage: "${opt:stage, self:provider.stage}"

functions:
  callback:
    handler: handler.callback
    events:
      - http:
          path: callback
          method: post
    environment: ${file(env-${self:custom.stage}.yml)}

plugins:
  - serverless-offline

env-**.ymlには各自のキーを環境変数として登録します。1

env-dev.yml
LINE_CHANNEL_SECRET: "XXX"
LINE_CHANNEL_ACCESS_TOKEN: "XXX"
GOOGLE_APPLICATION_CREDENTIALS: "ダウンロードしたサービスアカウントキーのファイルパス"

あとは、Line Message APIからのリクエストを受け、
Google Cloud Vision APIにリクエストして、
そのレスポンスを解析して、
Line Message API経由で返す
ようにプログラミングして、デプロイ。

デプロイ結果のendpoints「https://XXXXXXXXXX.execute-api.XXX.amazonaws.com/dev/callback」を
LINE Developersの「Webhook URL」に設定してあげればOK。

あっという間に、Lineから画像認識してくれるbotの出来上がりです。

所感

LINE BOT API Trialの頃よりも、ドキュメントやSDKが整備されていて、かなりLine botの作成は簡単になっていると感じました。
また、Google Cloud Vision APIもサービスアカウントキーのパスさえ環境変数に設定しておけば、Client側で勝手によしなにやってくれ、手間いらず。

以前よりも簡単にMyBotが作れ、各サービスとの連携もし易くなっていますので、皆さんも是非お試しください。


  1. Using Environment Variables with the Serverless Framework

3
7
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
3
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?