CloudWatch Logs

Lambda関数のCloudWatchログを表示する

まず最初に行うことは、AWS Lambda関数であるHitCounterのログを確認することです。

SAM CLIawslogsなど、これを行うのに役立つ多くのツールがあります。このワークショップでは、AWSコンソールからログを見つける方法を紹介します。

  1. AWS Lambdaコンソールを開きます(正しいリージョンに接続されていることを確認してください)。

  2. HitCounter Lambda関数をクリックします(名前にはHelloHitCounterHitCountHandlerという文字列が含まれている必要があります)

  3. モニタリング をクリックします。

  4. CloudWatchのログを表示 をクリックします。これにより、AWS CloudWatchコンソールが開きます。

  5. 最新のロググループを選択します。

  6. 文字列「errorMessage」を含む最新のメッセージを探します。次のようなものが表示されるでしょう:

    {
       "errorMessage": "User: arn:aws:sts::585695036304:assumed-role/hello-cdk-1-HelloHitCounterHitCounterHandlerS-TU5M09L1UBID/hello-cdk-1-HelloHitCounterHitCounterHandlerD-144HVUNEWRWEO is not authorized to perform: dynamodb:UpdateItem on resource: arn:aws:dynamodb:us-east-1:585695036304:table/hello-cdk-1-HelloHitCounterHits7AAEBF80-1DZVT3W84LJKB",
       "errorType": "AccessDeniedException",
       "stackTrace": [
           "Request.extractError (/var/runtime/node_modules/aws-sdk/lib/protocol/json.js:48:27)",
           "Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:105:20)",
           "Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:77:10)",
           "Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:683:14)",
           "Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)",
           "AcceptorStateMachine.runTo (/var/runtime/node_modules/aws-sdk/lib/state_machine.js:14:12)",
           "/var/runtime/node_modules/aws-sdk/lib/state_machine.js:26:10",
           "Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:38:9)",
           "Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:685:12)",
           "Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:115:18)"
       ]
    }

Lambda関数がDynamoDBテーブルに書き込めないようです。これは実際に挙動は正しいです。 なぜならこれらの許可を付与していないからです! 次のセクションに移りましょう。