こんにちは、エンジニアの @akase244 です。
先日の記事の続きになるんですが、元々なぜLambdaでPHPを動かしたかったかというと、定期実行させているSlack用のボットをPHPで書いてて、Custom Runtimeの対応によりPHPも動くようになったし、せっかくなのでLambdaに置き換えてみようかな、という流れです。
ということで、LambdaにCloudWatch Eventsのトリガーを追加して平日12時に実行するという設定をしてみたところLambdaがなぜか動かなかったので、手っ取り早くprintデバッグしたいと思い、タイトルのとおりPHPの処理の中でCloudWatch Logsに出力できないか今回試してみました。
やり方
「echo」を使う。これだけ。簡単。
例: echo 'LINE:'.__LINE__.PHP_EOL
bootstrapファイルの作り次第ではありますが、先日の記事で紹介したRackspace社のブログ記事のようなレスポンスの場合はechoでCloudWatch Logsに出力されます。
レスポンスの例
<?php function sendResponse($invocationId, $response) { $client = new \GuzzleHttp\Client(); $client->post( 'http://' . $_ENV['AWS_LAMBDA_RUNTIME_API'] . '/2018-06-01/runtime/invocation/' . $invocationId . '/response', ['body' => $response] ); }
Lambdaではテストを作成して事前に動作検証を行うことができますが、テストの実行結果でもこのとおり。
関数エディタの「Excecution Results」のエリアでもこのとおり。
また、これも前回の記事で紹介しましたが、Stackery社のbootstrapファイルのようにHTTPサーバとして稼働させている場合は「error_log」を利用することでCloudWatch Logsに出力可能です。