2017-09-15 1 views
3

Zum Beispiel:Ist AWS Gebühr für Lambda im Schlafzustand

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 

Wenn ich also viele Instanzen und Fehler haben dann könnte es lange Zeit des Laufens Lambda sein. Was könnte eine Alternative sein, um Lambda einzuschlafen?

+0

Zusätzlich zu den Antworten unten kann das Erstellen eines Snapshots eines Volumes einige Zeit in Anspruch nehmen. Und Sie geben an, dass Sie viele Instanzen haben. Kannst du vielleicht mehr von dem beschreiben, was du zu tun versuchst? Lambda ist vielleicht nicht die beste Lösung. – stdunbar

+1

Warum musst du den Thread schlafen? Führen Sie einfach das Lambda nach 180 Sekunden erneut aus, indem Sie den cloudwatch-Trigger 5 Mal hintereinander verwenden. Wenn Sie möchten, dass Daten wiederverwendet werden, speichern Sie sie einfach in dynamodb oder redis cache. Dies spart Ihnen Zeit und Geld. –

+0

@stdunbar PS Ich werde dann eine neue Frage erstellen. Ich beginne den Punkt zu verstehen. –

Antwort

5

Ja, Sie sind immer noch aufgeladen. Der Aufruf von sleep() stoppt die Ausführungsumgebung nicht. Sie zahlen für die Dauer der Ausführungsumgebung vom Zeitpunkt des Aufrufs der Funktion bis zum Ende der Ausführung der Funktion (oder bis zum Erreichen des konfigurierten Timeouts).

+0

Vielen Dank. "Der Aufruf von sleep() stoppt die Ausführungsumgebung nicht." Das, was ich sehen muss. –

1

Meine Annahme ist ja, sie tun. AWS Lambda Kosten basiert auf drei Faktoren

  1. Zugeordnete Speicher
  2. Anzahl der Exekutionen funktionieren
  3. Compute Dauer

Wenn Sie bei der Definition von aussehen wie Dauer ist calculated.

Die Dauer wird vom Zeitpunkt der Ausführung Ihres Codes bis berechnet, der zurückgegeben oder auf andere Weise beendet wird, aufgerundet auf die nächsten 100ms. Der Preis hängt von der Speichermenge ab, die Sie Ihrer -Funktion zuweisen. Für jede verwendete GB-Sekunde werden 0,00001667 $ berechnet.

AWS berechnet Gebühren von der Zeit, zu der der Code ausgeführt wird, bis zu dem Punkt, an dem er zurückgegeben/beendet wird.

+0

Danke. Sehr klare Erklärung. –