AWS LambdaでPythonを使う時、気をつける5つの事
中小企業診断士(登録予定)のヨシダです。GWはいかがお過ごしですか。
私は下の写真のように家族で野球を見に行ったりしながら、空き時間でAWS LambdaとAWS CloudWatchをを使って、openWeatherMapから気象情報を取得するアプリを作っていました。
(問題です。このドームはどのドームでしょう?)
その際、Pythonのお作法や、AWS Lambdaのクセに苦労したのでご紹介します。
私は経営戦略が得意で、特にマーケティングや販売促進、SEO対策に知見を持ちますが、開発者としては並、黄昏開発者です。
1.[AWS Lambda]ファイルはプログラム実行ディレクトリに作れない
AWSさん「S3があるんだから勝手な場所に、一時ファイル作るのは禁止」
まあ理解出来ますが、お作法わかりにくいんですよねAWSのマニュアル。
2.[AWS Lambda]LambdaUpLoaderが作るZIPファイルは激重
AWS Lambdaで標準準備されているライブラリを使いこなせればベストなのですが、黄昏開発者のヨシダにとって、初体験のpythonではWeb記事のパズルプログラミングが限界です。記事が少ないAWS Lambdaのライブラリ利用は敷居が高いです。
故にLambda UpLoaderを使って開発環境のライブラリもまとめてUPするのですが、「あれ?28Mbyte??」と激重。ダイエットどうにかならないでしょうか?
誰かAWS標準ライブラリの使い方ご教示いただけないでしょうか...
3.[AWS CloudWatch]cronはUTC基準
AWSさん「無料枠でcron実行させてやるから黙ってろ」
いやいや、1ドル払っているはずですが...という反論は野暮ですので辞めましょう。
cronはUTC基準です。JST基準の時間で設定できないもんでしょうか。
4.[Python]datetimeの使い方が面倒
datatime関数から現在時刻を取得する時に現在日付を取得するとき、なぜdatetime.datetime.now()とネストしてnow()を指定しないと駄目なんですか?聞いた100人全員「面倒」って言いますよコレ!Way Python!!
5.[AWS Lambda]boto3でCSVファイルに追記ができない
これは困りました。s3の特定バケットにCSVファイルを作り、1時間おきにファイルにAPI取得データを追記する、というプログラムを簡単に書こうを思い立つも、boto3ライブラリのadd関数は完全上書き。Delete-Insert、OH MY GOD!
以上です。ブログ機能の見たまま編集モードを使っていた為、ソースコードのハイライトが面倒です。サンプルをご覧いただきたい方はQiitaにも同じ記事をソースコード付きで載せましたのでご確認願います。