【AWS】API Gateway のログイベントをCloudWatch コンソールに表示する

前回の記事でAPI GatewayとLambdaで動的Webコンテンツを表示できるようになりました。次に、CloudWatchを使って、API Gatewayのログを出力できるようにします。ログを出力できるようにすると、デバッグ等に役立ちます。

CloudWatchにAPI Gatewayのログを書き込めるようにするため、CloudWatchに書き込み権限を持つIAMロールを作成して、API Gatewayに作成したIAMロールを割り当てます。その後、API GatewayでCloudWatchログ書き込みを有効化します。

API GatewayのAWS IAMロールを作成

AWS IAMのコンソールに移動します。ロールを作成し、API Gatewayを選択します。

デフォルトで、AmazonAPIGatewayPushToCloudWatchLogs というAWS管理ポリシーがアタッチされています。何もせず、[次のステップ:タグ]をクリックします。

ロール名を入力します。

ロールを作成できました。作成したロールをクリックします。

ARNをメモしておきます。

API GatewayにCloudWatch書き込み権限のあるIAMロールを設定

API Gatewayのコンソールに移動し、[設定]から先ほど作成したIAMロールのARNを入力します。

API GatewayでCloudWatchログ書き込みを有効化

CloudWatchのARNを調べるために、CloudWatchのコンソールにアクセスします。https://console.aws.amazon.com/cloudwatch/

赤枠内の語尾の :* を除いて、コピーします。
例)arn:aws:logs:ap-northeast-1:623598XXXXXX:log-group:/aws/lambda/japanesecalendar

  • [CloudWatchログを有効化]にチェックを入れます。
  • ログレベルは、今回ERROR以外のログを見たいので、INFOレベルにします。
  • [アクセスログの有効化]にチェックを入れます。[Access Log Destination ARN]には、さきほどコピーしたCloudWatchのARNを入力します。
  • [ログの形式]は今回はJSONを選択します。

保存ボタンを押しても、「保存できました」などのメッセージが出ませんが、保存できています。

CloudWatchコンソールで API Gateway のログイベントを表示

API Gatewayのコンソールにアクセスし、呼び出しURLをコピーします。末尾にパラメータを追加して、ブラウザでアクセスしてみます。
https://XXXX.execute-api.ap-northeast-1.amazonaws.com/dev/japanese?input_text=reiwa2

CloudWatchのコンソールにアクセスして、該当のロググループをクリックします。
https://console.aws.amazon.com/cloudwatch/

ログが表示されました!

参考資料

API Gateway での CloudWatch による REST API のログの設定
AWS公式 CloudWatch コンソールで API Gateway のログイベントを表示する
API GatewayのアクセスログをCloudWatchに記録する

コメント

タイトルとURLをコピーしました