病みつきエンジニアブログ

機械学習、Python、Scala、JavaScript、などなど

Lambda 用にネットワーク通信を楽にするための Python ライブラリ作ったら捗った

Python で通信するとき、公式の urllib の使い方を覚えられないので requests を使いたい。

だけど、AWS Lambda みたいな環境だと、外部のライブラリを pip install して使うのが面倒くさい。zipで固めてアップロードしないといけなくて、Lambda関数を管理画面で簡単にいじれる感じではなくなってくる。

そこで、requests とだいたい同じような使用感の通信ライブラリを、120行ぐらいの1ファイルで書いた。

github.com

だいたい同じようなAPI

# 本家
import requests
requests.get('http://example.com')

# 1ファイル版
import req
req.get('http://example.com')

1ファイルなので、pip install はする必要がなくて、適当なファイル名でコピペすれば良い。

f:id:yamitzky:20180518000321p:plain

requests 風に使えるので、Slack への投稿とかも簡単にできて捗る。

import req
import time

def lambda_handler(event, context):
    req.post('https://hooks.slack.com/services/xxxxx/xxxxx/xxxxx', json={
        'text': 'ああああああああ'
    })

あくまで 120 行ぐらいの簡易版なので、UTF-8にしか対応してなかったり色々あるが、簡単な使い方であればこれでいけそう。

「1ファイル」の設計思想的としては bottle を参考にしてて、bottle も 1ファイルで作られていたりする、すごい。