web-dev-qa-db-ja.com

CloudWatchでLambda関数に値を渡す方法は?

CloudWatchタイマーからのpingを処理する方法で関数をラップする最良の方法は何ですか?たとえば、以下のラムダ関数を考えます。

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))
}

関数をpingすると、CloudWatchリクエストにqueryStringParametersがないためエラーになります。技術的には、これでもLambda関数を暖かく保つことができます(これが私の目標です)が、不必要に長いエラーのリストを用意したくありません。

CloudWatchでは、(おそらく)Lambda関数に渡される入力を含めることができることに気付きました。

configure input

上記の関数をラップしてpingを受け入れることができる最も賢い方法は何ですか?理想的には次のようになります。

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))
}

次のように、イベントを変更できるようにするJSONを渡します。

{ "ping": true }

入力のドキュメントを読みましたが、さまざまな入力タイプの意味や使用方法がまったくわかりません...

15
samcorcos

入力オプション[定数(JSONテキスト)]を選択すると、入力ボックスがすぐ下に表示されます。 json {"ping": true}を入力する必要があります。関数はjsonをeventオブジェクトとして取得し、コードと同じようにevent.pingにアクセスできます。

サーバーレスフレームワークを使用している場合は、AWSコンソールでこれを行う代わりに、関数のスケジュールイベントを追加できます。これは、既存のhttpイベントに追加されます。次のように、スケジュールされたイベントの入力セクションの下にping: trueパラメータを追加できます。

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

これにより、指定されたスケジュールでcloudwatchログイベントが作成および有効化され、pingオブジェクトで入力パラメーターeventが送信されます。

22
user818510