sorta kinda...

主にAWS関連ですが、これに限らずいろいろ勉強したことや思ったことを書いていきます。

AWS LambdaでのインポートモジュールごとのDurationの比較

AWS Lambdaで毎日1回、EBSスナップショットを取るようにしています。
この2週間くらいで、importしているものをbotoからboto3(client)、boto3(resource)と変えてきましたが、Durationはどうなってるんだろうと気になったので調べてみました。

インポートモジュールと期間

  • 1/11まではboto、uploadしたzip内にboto含む
  • 1/12~1/17はboto3.client
  • 1/17~はboto3.resource

下の画像はCloudWatchのメトリックスの画像です。

f:id:nasrinjp1:20160119191934p:plain

boto、boto3.client、boto3.resourceの順にDurationが大きくなっていました。 botoが一番短くてboto3に比べて半分のDurationで済んでいるのは、uploadしたzip内にbotoモジュールを含めてLocal実行しているから?なのかもしれません。boto3だと、AWS Lambdaで標準で使えるとはいえ、どこか別の場所に置いてあってそれを取りに行くから遅いのかな?

AWS Lambdaの料金はかなり安いので、ちょっとしたタスクなら気にしなくてもいいかもしれませんが、頻度が高くて長時間実行するようなコードだと、試行錯誤してDurationを小さくしないと費用が結構かかりそうです。
(といってもEC2インスタンスを使うよりは安いですけど)