LoginSignup
2
1

More than 1 year has passed since last update.

API Gateway のアクセスログを取得してみた

Posted at

はじめに

前回の記事では、API Gateway から直接 SQS に連携する方法を確認しました。Lambda を挟んでいない分シンプルになったメリットがありますが、Lambda 側でアクセスログを出すことが出来ません。そこで、API Gateway 側でアクセスログを出力することが出来ます。リクエストの Body などを含めた出力もできますので確認していきましょう。

API Gateway の IAM Role 設定

AWS アカウントの中で、リージョン単位で共有される CloudWatch Logs の出力に使う IAM Role の設定が必要です。

API Gateway 用の IAM Role を作成し、ARN を設定しておきます。

image-20220110003713646.png

API Gateway でログ設定

API Gateway の Stage 上の設定で、[Logs/Tracing] のタブがあります。これで設定を有効にすることで、CloudWatch Logs にアクセスログを出力できます。

image-20220109233301536.png

また、Method 単位でも有効化が可能です。

image-20220109235146884.png

CloudWatch Logs の確認

上記の設定で CloudWatch Logs に出力する準備ができました。簡単ですね。実際に API Gateway にアクセスしてログを確認してみましょう。curl で API Gateway にアクセスします。

> curl -s -H 'Content-Type:application/json' \
      -X POST \
      https://uuy6eahto0.execute-api.ap-northeast-1.amazonaws.com/prod/sqs-queue \
      -d '{"test1":"data1", "test2":"data2"}' | jq .
{
  "SendMessageResponse": {
    "ResponseMetadata": {
      "RequestId": "73de415b-ace3-5f5d-9b2d-1b0eadf1aa21"
    },
    "SendMessageResult": {
      "MD5OfMessageAttributes": null,
      "MD5OfMessageBody": "58fdfbfc48f868b6b9c50b3e8aa09894",
      "MD5OfMessageSystemAttributes": null,
      "MessageId": "8f194668-ad74-4207-b4c7-8b6bebdbf35b",
      "SequenceNumber": null
    }
  }
}

API Gateway の ID を調べます。

uuy6eahto0

image-20220109235911008.png

CloudWatch Logs 上で ID を使って検索してみると、Log Group が引っかかるのでこれをクリックします。

image-20220110000055170.png

適当に Log Stream を選択します。

image-20220110002648431.png

API Gateway 上のアクセスログが出力されます。リソースのパスや、Request Body なども確認できます。

image-20220110002904980.png

# この検証を通じてわかったこと

  • API Gateway の CloudWatch Logs 用の Role は、リージョンで共有される Role となる。東京リージョンにある複数の API Gateway のうち、1個の API Gateway で設定すれば、他の API Gateway にも設定が反映される。
  • API Gateway の Request Body は、標準のアクセスログ出力機能で出力される。出力の仕方をカスタマイズしたい場合は、カスタムアクセスログの設定も可能
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1