7

Was ist der beste Weg, Funktionen so zu umbrechen, dass ein Ping von einem CloudWatch-Timer verarbeitet wird? Nehmen wir zum Beispiel die Lambda-Funktion unter:Wie übertrage ich Werte in eine Lambda-Funktion in CloudWatch?

export const fn = (event, context, callback) => { 
    const { year, make, model, } = event.queryStringParameters 

    return otherFn({ year, make, model, }) 
    .then(res => response(callback, res)) 
    .catch(err => console.log(err)) 
} 

Wenn ich die Funktion ping, werden Fehler, weil es keine queryStringParameters auf der Cloudwatch Anfrage sind. Technisch gesehen wird dies immer noch die Aufgabe erfüllen, die Lambda-Funktion warm zu halten (was mein Ziel ist), aber ich möchte keine unnötig lange Liste von Fehlern haben.

Ich bemerkte, dass Cloudwatch Sie Eingaben enthalten können, die (vermutlich) auf eine Lambda-Funktion übergeben werden:

configure input

Was ist der klügste Weg, um die Funktion oben zu wickeln, so dass es ein Ping akzeptieren kann? Im Idealfall würde es so aussehen:

export const fn = (event, context, callback) => { 
    if (event.ping) return ping(callback) // the ping function is an import to stay DRY 
    const { year, make, model, } = event.queryStringParameters 

    return otherFn({ year, make, model, }) 
    .then(res => response(callback, res)) 
    .catch(err => console.log(err)) 
} 

Wo ich einige JSON passieren würde, die mich um das Ereignis zu verändern ermöglicht, wie zum Beispiel:

{ "ping": true } 

ich durch die Dokumentation für die Eingänge gelesen haben, aber es ist mir überhaupt nicht klar, was die verschiedenen eingabetypen bedeuten oder wie man sie benutzt ...

Antwort

5

Wenn Sie die Eingabeoption Constant (JSON text) wählen, sollte ein Eingabefeld darunter erscheinen. Sie müssen den JSON {"ping": true} eingeben. Ihre Funktion wird das Json als event Objekt erhalten und Sie können auf event.ping genau wie Ihr Code zugreifen.

Wenn Sie das serverlose Framework verwenden, können Sie in der AWS-Konsole ein Schedule-Ereignis für Ihre Funktion hinzufügen. Dies wäre zusätzlich zu Ihrem bestehenden http-Ereignis. Sie können die ping: true Parameter unter dem Eingabeabschnitt des geplanten Ereignisses wie folgt hinzu:

scheduledFunction: 
    handler: index.handler 
    events: 
    - schedule: 
     rate: rate(1 minute) 
     enabled: true 
     input: 
      ping: true 

Dies wird erstellen und das Cloudwatch Protokollereignis mit dem angegebenen Zeitplan aktivieren und die Eingangsparameter ping im event Objekt.

+0

Dies ist eigentlich eine Antwort auf die Frage. Können Moderatoren das markieren? –

Verwandte Themen