C# のLambda関数でログの出力先をTest FunctionのLog outputエリアに出力する方法


地味に引っかかりそうなので、メモに残しておきます。

C# のLambda関数は Test Function で動作確認すると思いますが、ログの出力先をTest FunctionのLog outputエリア(下図)に出力したい場合は、Console.WriteLineでは出力できません。

f:id:fnyablog:20181101172219p:plain

Test FunctionのLog outputエリアに出力するには、以下のコードのように、コンテキストから Logger を取得してログを出力する必要があります。

    public class Function
    {
        public void FunctionHandler(object input, ILambdaContext context)
        {
            // Log output エリア/Cloud Watch Log に出力
            context.Logger.LogLine("Output Log output area.");

            // Cloud Watch Log に出力
            Console.WriteLine("Output Cloud Watch Log.");            
        }
    }

この関数を Test Function で実行すると、以下のように Log output エリアにログが出力されます。

f:id:fnyablog:20181101173107p:plain

なお、Cloud Watch Log には以下のように両方のログが出力されます。

2018-11-01 17:27:48: START RequestId: 03aea60a-ddb0-11e8-af4f-b3bfe7a78db1 Version: $LATEST
2018-11-01 17:27:49: Output Log output area.
2018-11-01 17:27:49: Output Cloud Watch Log.
2018-11-01 17:27:49: END RequestId: 03aea60a-ddb0-11e8-af4f-b3bfe7a78db1
2018-11-01 17:27:49: REPORT RequestId: 03aea60a-ddb0-11e8-af4f-b3bfe7a78db1 Duration: 905.66 ms Billed Duration: 1000 ms    Memory Size: 256 MB Max Memory Used: 20 MB