2017-08-09 17 views
0

私は現在、IoT製品の通信を処理するためのAmazon EC2インスタンスを使用しています(開発段階)。私は、将来的にデバイスの増加を克服するために、インスタンスの仕様を拡張する経験はあまりありません。ですから、私はAWS Lambdaを使用し、EC2インスタンスのすべてのビジネスロジックをラムダに移すことを考えています。しかし今、理解できないことがいくつかあります。AWS Lambda for IoT

  1. ラムダ関数の事前設定の下で、ラムダ関数のメモリ割り当てを設定できます。 512MBのメモリを設定した場合、私の機能が512MB以上のメモリを必要とする場合、これは自動的に拡大されますか?

  2. 実行ごとにラムダ関数のために設定したメモリはありますか?たとえば、30件のリクエストが同時に処理される必要があります。ラムダ関数を30回実行すると、30回の実行で最大512MBのメモリしか使えないということでしょうか?または、実行ごとに512MBのメモリを使用できますか?

  3. マニュアルには、Amazonが関数のインスタンスを再利用する可能性があることが記載されています。したがって、同時に2つの要求があり、Amazonが機能の既存のコピーを再利用すると、一度に2つの要求を処理する可能性がありますか?

  4. リクエストが行われるたびにデータベースに接続されます。この接続は保持されますか?それが保持されている場合、関数インスタンスが終了したときに接続は終了しますか?

答えて

2
  1. あなたは512メガバイトに設定したメモリを設定すると、それぞれの呼び出しは、それが利用可能な512MBのメモリを持つことになります。この設定は、関数の各呼び出しで使用できる最大値を定義します。

  2. はい実行(呼び出し)ごとです。

  3. 後続の呼び出しで同じ機能を再利用します。同時呼び出しでは関数を再利用しません。 2つの同時実行関数がある場合、それらはラムダ関数の2つの別々のインスタンスによって実行されます。

  4. ラムダ関数を初期化するときにデータベース接続を作成すると、ハンドラが呼び出されるまで待つのではなく、そのデータベース接続を関数の単一インスタンスの複数の呼び出しにわたって保持できます。ただし、関数インスタンスが終了すると、データベース接続を正常に終了することはできません。私は、永続的なデータベース接続の問題を回避するために、可能な限りAWS Lambda関数を持つDynamoDBのようなREST APIを備えたデータベースを使用することをお勧めします。

+0

こんにちは、ありがとうございました!それは私のためにそれをはるかに明確にします。フォローアップの質問。問題番号4の場合、クエリまたは更新を実行するたびにdb接続を閉じるとどうなりますか?長期的なデータベース接続を避けるための素晴らしい解決策でしょうか? –

+0

接続を開いたり閉じたりするたびにいくつかの問題は修正できますが、通常は遅いラムダ関数のような他の問題が発生する可能性があります。その多くは、正確にどのデータベースを使用しているかによって異なります。 –