この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
アノテーション株式会社の hato です。
API Gateway のアクセスログは、出力先として CloudWatch Logs の他に Kinesis Data Firehose も選択できます。 今回は Kinesis Data Firehose 経由でアクセスログを S3 に保管する設定でやってみます。
API コールのログの Kinesis Data Firehose への記録 - Amazon API Gateway
アクセスログでは、CloudWatch または Kinesis Data Firehose のいずれかのみを有効にできます。両方を有効にすることはできません。ただし、実行ログで CloudWatch を有効にし、アクセスログで Kinesis Data Firehose を有効にすることはできます。
やってみた
前提
- 出力先のバケットは作成済み
- API Gateway には次の固定値を返却する Mock エンドポイントをデプロイ済み
{
"message": "Hello, world!"
}
手順
- Kinesis Data Firehose の作成
- API Gateway の設定
- テスト
1. Kinesis Data Firehose の作成
Kinesis コンソールを開き「Kinesis Data Firehose」を選択した状態で「配信ストリームを作成」をクリックします。
次の値を指定します。
- ソース:
Direct PUT
- 送信先:
Amazon S3
配信ストリーム名にamazon-apigateway-
(例:amazon-apigateway-hato-firehose
)から始める名前を選択します。
API Gatewayに指定する場合は、必ずamazon-apigateway-
で始まる名前にする必要があります。
「S3 バケット」に出力先となるバケット名を指定して「配信ストリームを作成」をクリックします。
次の手順で必要になるため配信ストリームの ARN をメモします。
2. API Gateway の設定
API Gateway コンソールを開き、取得対象の API をクリックします。
ステージ -> 変更対象のステージ -> 「ログ」タブの順にクリックします。
「Access Log Destination ARN」にメモした ARN を入力し、ログの形式を選択したら「変更を保存」をクリックします。
ログ設定の更新だけであれば再デプロイは必要はありませんので、テストに移ります。
ステージ設定、ログ、またはステージ変数を更新するときに API を再デプロイする必要はありません。
3. テスト
API Gateway に curl でリクエストを実行して、
$ curl "https://abcdef123.execute-api.us-west-2.amazonaws.com/test"
{
"message": "Hello, world!"
}
しばらく待つと、指定したバケットにログが記録されます。
なお、Kinesis Data Firehose でバッファされるため、リクエストからログが記録されるまで、5分程度掛かることがあります。
Amazon Kinesis Data Firehose データ配信ストリーム - Amazon Kinesis Data Firehose
Amazon S3 へのデータ配信の頻度は、配信ストリームで設定した Amazon S3 の [Buffer size (バッファサイズ)] および [Buffer interval (バッファ間隔)] の値によって決まります。
必要に応じてバッファの設定変更や、ログの圧縮もご検討ください。
送信先設定 - Amazon Kinesis Data Firehose
最後に
この記事が誰かのお役にたてば幸いです。
参考資料
- API コールのログの Kinesis Data Firehose への記録 - Amazon API Gateway
- Amazon Kinesis Data Firehose 配信ストリームの作成 - Amazon Kinesis Data Firehose
アノテーション株式会社について
アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。