はじめに
API GatewayとLambdaを使ってLINE Botを作成中、デフォルトではAPI Gatewayのログが出力されておらず困ったのでやり方を調べてみました。
※間違いなどあればコメントで指摘をいただけると嬉しいです!
結論:専用のIAMロール作成が必要
設定は以下の3ステップ。これで、CloudWatchのロググループにログストリームが出力されるようになりました。
①IAMロールの作成:
「AmazonAPIGatewayPushToCloudWatchLogs」のポリシーを持つIAMロールを作成する
②IAMロールの適用:
上記①のIAMロールをAPI Gatewayの「設定」>「ログ記録」に設定する
②ログ出力の設定:
対象API Gatewayの「ステージ」でCloudWatchへのログ出力を設定する
設定手順
IAMロールの作成
IAMロールを作成します。ポリシーはAWSで用意しているものを使います。
信頼されたエンティティは「AWSのサービス」、ユースケースは「API Gateway」を選びます。
許可ポリシーに「AmazonAPIGatewayPushToCloudWatchLogs」が入っていることを確認します。
IAMロールの適用
ログ出力の設定
お使いのAPIの「ステージ」設定を開き、「ログとトレースの設定」を編集します。
CloudWatchに出力したい情報(エラーのみ or 全てのログ)を選び、変更を反映します。
結果確認
APIを叩く
ここまで設定できたらログが出力されるはずなので、APIを叩いてログ出力を確認します。
CloudWatchログストリームの確認
ロググループが作成されているか確認します。
名前はAPI-Gateway-Execution-Logs_{rest-api-id}/{stage-name}
です。
対象のロググループをクリックすると、ログストリーム(一連のログイベント)が表示されます。
確認したいログストリームをクリックすると、ログイベントが一行ずつ表示されます。
これでログを確認できるようになりました!
参考