前回の記事で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に記録する
コメント