2017-09-15 9 views
3

でラムダのためにAWSの電荷を行います。は、例えば、スリープ状態

count = 0 
     while True: 
      try: 
       if count == 5: 
        break 
       snap = ec.create_snapshot(
        VolumeId=vol_id, 
        Description=instance['InstanceId'] 
       ) 
       break 
      except Exception as e: 
       print(e) 
       sleep(180) 
       count = count + 1 

をだから私はインスタンスやエラーの多くを持っている場合、それはラムダを実行するのに長い時間である可能性があります。ラムダを寝たきりにする代替手段は何でしょうか?

+0

以下の回答に加えて、ボリュームのスナップショットを撮るにはかなりの時間がかかります。そしてあなたはあなたが多くのインスタンスを持っていることを示しています。おそらくあなたがしようとしていることの詳細を記述することはできますか?ラムダは最良の解決策ではないかもしれません。 – stdunbar

+1

なぜあなたはスレッドをスリープ状態にする必要がありますか? cloudwatchトリガを5回連続して使用して180秒後にラムダを再実行してください。データを再利用するには、dynamodbまたはredisキャッシュに保存してください。これはあなたの時間とお金を節約します。 –

+0

@stdunbar PS私は新しい質問を作成します。私はその点を理解し始める。 –

答えて

5

はい、まだ請求があります。 sleep()を呼び出しても、実行環境は停止しません。関数が呼び出されてから関数の実行が完了するまで(または設定されたタイムアウトに達するまで)、実行環境の持続時間分の支払いを行います。

+0

ありがとうございます。 "sleep()を呼び出しても実行環境は停止しません。"それは私が見る必要があるもの。 –

1

私はそう仮定しています。あなたは期間がcalculatedであるかの定義を見た場合、メモリが死刑執行

  • 計算期間
  • 番号を機能に割り当てられた三つの要因

    1. に基づいてAWSラムダ料。

      継続時間は、コードが実行を開始してから が返されるか、そうでなければ終了するまで、最も近い100msに切り上げられます。 価格は、 機能に割り当てるメモリ容量によって異なります。使用されるGB秒ごとに$ 0.00001667が請求されます。

      AWSは、コードの実行が開始されてから返される/終了するまでの料金を計算します。

  • +0

    ありがとうございます。非常に明確な説明。 –