# AWS CloudWatch ログ監視で Lambda 処理

AWS Lambda(ラムダ) は、サーバーレスでイベント駆動型のコンピューティングサービスです。OS 管理が不要なため、プログラム準備するだけで実行できます。
AWS Lambda、Azure Functions、Google Cloud Functions この 3 つのサービスは同じ内容です。

Lambda サポート言語

  • Node.js
  • Python
  • Ruby
  • Go
  • Java
  • PowerShell
  • C#

これ以外の言語を使用する場合は、カスタムランタイムという機能を使用して実装可能

# Lambda のメリット デメリット

メリット

  • OS やプラットフォームの管理が不要
  • セキュリティ対応のコストが少ない
  • コードが実行される時間 1 ミリ秒ごとに課金
  • 複数の処理を受けると自動的にインスタンス立ち上げ対応
  • SQS や SNS、Cloudwath など AWS のサービスと連携できる

デメリット

  • フレームワークが使えない
  • Lambda のライフサイクル自体が最大で 15 分のみ

AWS Lambda のライフサイクル自体は15 分で 15 分過ぎると強制的にシャットダウンします。
Lambda は 非同期で一時的に本サーバーと別の処理 cloudwatch 定期処理、ファイル定期的に処理などのバッチ処理や webhook 系の処理に適している感じがします。

# Lambda から Cloudwatch ログ監視

CloudWatch Logs は、ログデータが含まれたイベントを使用して、関数を非同期的に呼び出します。データフィールドの値は Base64 でエンコードされた .gzip ファイルアーカイブです。

AWS Lambda 関数がイベントの処理を終了すると、Lambda は呼び出しに関するメトリクスを Amazon CloudWatch に送信します。これらのメトリクスについては料金は発生しません。

SNS 経由でやることもできますが、Lambda でトリガーを Cloudwatch を選択することができるので、ひと手間省けます。

nodejs









 
 


























const https = require("https");
const querystring = require("querystring");
const zlib = require("zlib");
const host = "localhost.com";
const path = "/api/post_data";

exports.handler = function (event, context) {
  console.log("Event.awslogs: ", event.awslogs);
  const payload = Buffer.from(event.awslogs.data, "base64");
  const parsed = JSON.parse(zlib.gunzipSync(payload).toString("utf8"));

  var postMessage = JSON.stringify(parsed);
  var post_data = querystring.stringify({ body: postMessage });
  let options = {
    host: host,
    path: path,
    headers: {
      "Content-Type": "application/json",
    },
    method: "POST",
  };
  var post_req = https.request(options, function (res) {
    res.setEncoding("utf8");
    res.on("data", function (chunk) {
      console.log("Response: " + chunk);
      context.succeed();
    });
    res.on("error", function (e) {
      console.log("Error: " + e.message);
      context.done(null, "FAILURE");
    });
  });
  post_req.write(post_data);
  post_req.end();
};
2022-08-13
  • server
  • aws

同じタグを持つ記事をピックアップしました。