@m_seki の

I like ruby tooから引っ越し

lambdaのノート、Ruby編

AWSのlambdaのこと

AWS lambdaでRubyが使えるようになったそうなので、いつまでもlambdaを避けて通れなくなってきました。(自分に言い訳しづらくなてきた) 仕事でもそれ以外でも使ってないし、AWSしぐさが全然わからんのです。ぐぬぬ

最終的にやりたいこと

CGIで済むようなものを作れるようになっておきたい。(池澤さんのための素振り)

準備

はじめてのAlexaスキル開発 [音声認識アプリ開発の基礎知識を身に付ける! ]

はじめてのAlexaスキル開発 [音声認識アプリ開発の基礎知識を身に付ける! ]

アレクサの本を読んでAWSアカウントの作成やら、lambdaの簡単なサンプルは実験してありました。 この本、サンプルアプリは少ないんだけど、アカウントの作成が詳しくて重宝しましたよ!

今日やったこと

gemとかアーカイブしてアップロードして...みたいな記事を見てやってたけどうまくいかなくて(今は原因わかったけど)、基本に戻ろうと思って次の関数書きました。 ハンドラに渡される引数をppして確認するだけのlambdaです。

lambdaの設定画面から新規の関数を作って埋めただけ。

require 'pp'

def lambda_handler(event:, context:)
    body = { 'event' => event, 'context' => context }.pretty_inspect
    
    {
        'statusCode' => 200, 
        'headers' => { 'Content-Type' => 'text/plain'},
        'body' => body
    }
end

トリガーの左のペインからAPI Getewayっていうのを選んでいろいろ適当にやった結果動くようになりました。

https://8zmwlgdxf9.execute-api.ap-northeast-1.amazonaws.com/default/pp_inspect

実行すると引数のオブジェクトを観察できます。URLの末尾にパスを連結したり、クエリを追加したりしてHashがどう変わるか調べることができました。 WEBrick::CGIやTofuにこのインターフェイスを吸収するレイヤーを用意するのがかっこいいんだろうけど、どうせ誰かやるだろうから待ってよう。

ところで、URLから「default/」(ステージ?)っていうのを消したいんだけど...(よくわからないのでそのまま...)。

最後にリクエストの表現がわかってきたので、EAN(JAN)コードを与えると、その商品のamazonのページに飛ぶ関数を書いてみました。 クエリに「ean=値」をつけると該当商品のページが表示されます。(追記: 移動先のURLを以前は自分で組み立てていましたが、リクエストの結果から転記するようにしました。 2018-12-23)

https://qtmf64s8p8.execute-api.ap-northeast-1.amazonaws.com/default/myFirstRuby?ean=9784756142818

合わせて読みたい

ラムダノートのラインナップより。

RubyでつくるRuby ゼロから学びなおすプログラミング言語入門

RubyでつくるRuby ゼロから学びなおすプログラミング言語入門