AWS lambdaとAPI GatewayでLine Botを使う
今年のAWS summitではAWS lambdaを使ってマイクロサービスを実現する。という発表が多かった。
そういうこともあり、lambdaをちょっと触ってみた。
lambdaを使う時のネタとして、Linebotがちょうどよかったので、Linebotを使ってみた。
あとは、ちょうど身内でミニ四駆をやるときに作るミニ四駆のシャーシおみくじを作ってくれとのことで、
AWS lambda + API Gateway + Line Botでシャーシおみくじを作った。
この記事ではLine Botの使い方 というよりは、
# Line developersに登録
Line botを作成するためにはLine developersに登録が必要なので登録しておく。
登録して、Channel ID等をメモっておく。
# Lambdaの準備
AWSのコンソールにはいってLambda Management Consoleを開く
Create a Lambda functionからSelect Blue Printの画面に行く。
他になにか作るときはここから雛形を使えるっぽい。
今回は空で作りたいのでSkipを選択
Step2:Configure functionで各種設定をする。
とりあえず、 NameとRuntimeを適当に設定する。
RoleはAWSconfig roleあたりで作っておく。
そしてNextをクリック
CodeにCodeを作っておく。
今回はgithubにあげといた。
# API endpointを当てる
Add API endpointからAPI Gatewayを選択してAPI endpointを作る。
ここで注意したいのは、LineBotでは MethodがPOSTでくるので、
API GatewayでもMethodをPostにしておく。
API Endpointを作成したらLineDevelopersのCallback URLにそのURLを登録しておく。
注意点としては、LineBotでは443ポートを作るようなので443を指定しておくこと。
https://{awsapi.execute-api}.us-west-2.amazonaws.com:443 こんなかんじで
# テスト
API EndpointがVeryifyしたら、LinedevelopersにあるQRコードを読むと友達にbotを追加できるので追加する。
上のコードのサンプルでは、
1行目におみくじとして引くシャーシを,区切りで。
2行目にユーザを,区切りで入力する。
すると、ユーザに対してそのユーザが使うシャーシが選択される。
テストの際は、CloudWatchのログを見るといい。
今回はLineからの送信データをダンプしてるので、誰がどんなテキストで送ってきたかがわかる。
IFTTT+SlackでECで買ったものをごちうさのシャロに通知してもらう
Amazonやヨドバシ.comなどを使ってよく買い物をするがわざわざGmailを開かなくても、Slackに通知がされれば便利だなと思いIFTTTで構築したメモ。
なお、EC=お買い物=シャロという勝手なイメージからシャロが通知してくれるようにしている。
前提条件
GmailとSlackとIFTTTに登録済み。
Gmailの設定
ECに登録しているメールアドレスを一つのGmailに集約しておく。 その後ECというラベルを作りフィルタをかけておく。
フィルタは設定->フィルタとブロック中のアドレスの新しいフィルタを作成から
使うのがAmazonとヨドバシとビックカメラとimaginewebぐらいなので以下のような条件でフィルタ。 使うECが多ければよしなにここでフィルタをかけるといい。 ここで作ったフィルタに引っかかったものがSlackに送られるので通知が多いなと思ったらフィルタ条件も変えておくと吉。
IFTTT設定
すでにあるレシピから作ってもいいけど、今回は一から作成してみる。 Create Recipeから
thisをgmailで検索してgmailを指定 Connect the Gmail ChannelでGmailにつなげる必要があるのでConnect
Triggerに New email in inbox labeledを指定
Labelをさっき作ったLabelを指定。今回はEC でCreate Trigger
thatの方はslackを指定 slackもconnectしておく
ActionはPost to Channelしかないのでそれを指定
次にActionを指定する
Which channel? は投稿したいchannelを選択
Messageは表示したいmessageを選択する。
Gmailから受け取ったものも表示できる。 例えば{{BodyPlain}}でメール本文が表示できるし、 {{Subject}}でメールタイトルが表示できる。 また、好きなメッセージも入れるのでここをシャロっぽくするととてもいい。
同じようにTitleやTitle URLを選択しておく
最後にThumbnail URLを指定する。 ここは画像が表示されるのでシャロのアイコンとかにしておくといい。 私は公式で配布していたtwitter用のアイコン
をS3において指定している。
そうすれば出来上がり。 あとはECからのメールが来るのを待つ。
完成イメージ
こんな感じにシャロが注文したものを通知してくれる。
まとめ
いまは各サービスの繋ぎこみを自動でやってくれるのが多くなった。 自分でプログラムを組むのもいいけど目的を達成する。というのだけならば こういうサービス使ってしまうのも楽でいい。
そして私はリゼ派だ。
2016年の目標(技術以外)
・ちゃんと部屋の掃除をする。
机の上とか汚くて作業が捗らなかったりするからきれいにしておく。
使ったものはちゃんともどす。
・無駄なものを買わない。
洗剤とか調味料とかストック品あるかどうかちゃんと確かめてから買う
本はできるだけ電子書籍に移行する。
書籍で買っていい本はこれまでシリーズ買ってきたものか、捨てて問題ないものかのどちらかで。
プライズとかも本当に必要か吟味して金突っ込む
・収支をちゃんとつける
お前昼飯高杉じゃね?って言われたのもあるけど、ざっくりとした収支のみだったからもっと細かくつける
・投資
これはできたらといいな。という感じ。投資はともかくふるさと納税とか減税できそうなものは使っていく
・ブログ書く
月1でいいから書く。アウトプットは大事
コードレビューに関して
超同意したので超久しぶりにブログを書いてみる。
お酒飲んでるテンションで。
>■コードレビューを最優先に! ※
※ 障害やお客様対応は除く
ほんとすべてこれにつきると思うんですよね。
レビューする方は、さっさと見て指摘すればいいし、レビューされる側はそれを即直しすればいい。
元記事にある通り、何も一回で完璧なレビューをする必要はなくて気がついたところをちょっと指摘してやればいい。
雑談している暇があれば、1ファイルぐらいは見れるしそもそも雑談しながらでもソースは見れるしね。
元記事にある通り、最悪ソース見てよくわからんけど動作確認上はOKでも問題ないと思うし。
レビューをされる側としては、
・何を目的としているか
・なるべく機能ごとに分割してレビューを出す
ということが大事だよね。
この辺も同意できる。というか元記事はもうすべて同意されてバイブルにしたいレベル。
期間は長期間与えているのにレビュー間に合いませんというのは甘えだし、どこかタスクの処理の優先順位付けがおかしいよね。
一人暮らしでインフルは死ねる。
一週間インフルで死んでました。
日曜の昼に気分悪くなる。38度だし寝れば大丈夫だろうと仮眠とる。
→39度
とりあえず飯食って寝て起きても下がらなければ病院行こうと
→月曜病院行く
→インフル
→その足で買い出ししてそのまま死んでた
そんなわけで一人暮らしでインフルになっても生きていける様に常備しておくと捗るものを
■レトルトのおかゆ
とりあえず1-2食分は確保しておきたい。
腹減ったときの夜食とか朝食にもよし。
インフルの診断出る前の日のよる飯だった。
■うどん
あのアルミに入ってるうどん。
若干調理は必要だけど、お湯わかしてにるだけで簡単にできるし、
生タイプだから油っぽくない。
卵とか加えるのもあり。
(正直ずっとこれ食ってた)
夏場ならともかく冬場にスポーツドリンクをストックしておくのは邪魔なのでパウダータイプで
適当な水筒に溶かして枕元において水分補給していた。
できればカロリーオフじゃないタイプがいい。
熱で食べれなかったりするんで、ドリンクから少しでもエネルギーを。
■ゼリー
どっちのゼリーでもいいけど、熱あるときは冷たいもの食べたくなるから
ゼリーとかストックしておくといい。
■熱さましシート
あるとないではつらさが違う
virtual box 上で仮想環境とmacでファイル共有する
・とりあえず前の通りvargrant upで仮想環境作る
・virtual box の設定 共有フォルダーで共有フォルダーを設定する
・Linux側で
mount -t vboxsf src share
(src:virtual box側で作成したフォルダ,share:共有先)
vi /etc/rc.local
で起動時にマウントするディレクトリを書いておくと起動時にマウントされるらしい