Python

AWS Lambda 上での Python API サービスをローカルでも検証するために serverless-wsgi を利用する

serverless framework を使って Web API を作りたいと思っていて色々調べていたのだけれど、以下のような場合にどうしようかなあと思っていた。 AWS S3 Bucket上に展開したWeb Hosting上からAPI Gateway経由でサービスを叩くアーキテクチャ つまり別途フロン…

ファイル操作をmock化する

open とか codecs.open でファイルを開く場合は基本 with句で使っているので単純にopenをモックに書き換えようとすると相当面倒くさい。そのために mock_open という関数が用意されている。 open() をコンテキストマネージャーとして使う方法は、ファイルが…

Github上のPythonプロジェクトに必要なテストツールとCIツールのセットアップを行った話

Githubに公開するなら、普通のPython関連の周辺ツールのインストールや設定をしてみようと、色々と試行錯誤したところでハマったところとかポイントとか工夫とかのメモ。今回はプロジェクトの構造は boto3 のものをまねることにした。対象プロジェクト - htt…

nosetestsをWindows Subsystem for Linuxで使う場合の注意点

Pythonのunittest実行ライブラリの nose ですが、ファイル名に test がついているテストファイルを nosetests コマンドで自動検索しようとしても全然引っかからない事象に遭遇。 一応、直接ファイルを指定すれば実行はしてくれる。で、色々なところを見て回…

ボードゲームカード自作補助のためのツール testplay-card-generator のα版を公開しました

別の名義を使ってはいますが、個人的な趣味でボードゲームの自作などをやっています。 そういったゲームを作る中でも汎用性が高く、印刷しやすいコンポーネントにカードがあります。で、実際にルールを考えてテストプレイをするタイミングで実際に考えた内容…

複数の画像から印刷用のpdfファイルを作成する(Python, ImageMagick)

複数の画像をまとめて1回の印刷で対応できるような PDF ファイルを作りたい場合にどうするか。 Python上でプログラムによって pdf ファイルを生成する AWS Lambda Python で PDF 作りたくてどうしようかと思って調べていたけど、Pillow(PIL) と reportlab …

MFAによって認証された有効期限付きのAWS Access Keyをできるだけ楽に使いたい

AWSのIAMユーザーを作って権限を与えて管理している場合、やっぱりふとしたミスが怖い。例えば、AccessKeyとSecretAccessKeyをプログラムの中に埋め込んでしまっていることを忘れて public repository にコミットしてしまったりなど。 そもそも、profileをち…

Amazon Cognito User Pools をPythonから利用しようとして挫折した

先週のAWS Summit in シカゴで発表された AWS Cognito User Pools ですが、モバイルやウェブ画面からだけではなくて、サーバー側の認証機構として使えないかをPythonとAWSCLIで色々試行錯誤して失敗したので記録しておきます。原理的にはできなくもないんで…

AWS LambdaでVPC内のPrivateインスタンスにSSH接続する

http://aws.typepad.com/aws_japan/2016/02/access-resources-in-a-vpc-from-your-lambda-functions.html昨年のAWS re:Inventで対応が発表されていましたが、とうとうAWS LambdaからVPC内リソースにアクセスが出来るようになったので何が出来るのか眺めてい…

AWS LambdaのPython版をいまさらながら使ってみた

ので、導入の時に迷った点を残しておく。 pythonで用意するエントリポイントのファイル名や関数名は自由 (ただし、Configuration#Handlerで"ファイル名.エントリポイント関数名" で指定する必要がある) エントリポイントの関数の第一引数は基本dict形式でイ…

matplotlibで円グラフを書く

タイトル通りだが、実際にやってみると幾つかうまく行かないところがあったのでメモ。 そもそも円グラフを書くには plot.pie あるいは axes.pie関数を利用する。http://matplotlib.org/examples/pie_and_polar_charts/pie_demo_features.html

DynamoDBのテーブル存在チェック

DynamoDBのテーブルの存在チェックをする方法。 ListTableを利用する 一番簡単なのはListTableを実施して、その中にお目当てのテーブルがあるかどうかを見ればよい。 def exists_table(table_name, connection): return table_name in connection.list_table…

SQSでメッセージ受信回数による処理切り分けをしたい

SQSのVisibility Timeoutを使って再実行をするのはいいんだけれども、無効な命令が投げられてたりした場合には有限で終了して欲しいので、それを実現するにはどうすればいいのかというお話。幾つか方法はあるけれども、主に考えられるのは2つ。 MessageのAtt…

FirefoxをverupするとSeleniumが動作しなくなった

Windows7/Firefox36/Python2.7/Selenium2.39で発生。昨日まで動いていたプログラムがFirefoxのバージョンを上げた結果、以下のようなエラーメッセージを発して失敗するように。 ... File "C:\lib\Python27\lib\site-packages\selenium-2.39.0-py2.7.egg\sele…