ヤマムギ

growing hard days.

*

API GatewayのアクセスログをCloudWatchに記録する

   


Amazon API GatewayのアクセスログをCloudWatchに記録できるようになっていたので設定しました。

まず、AWSアカウントのAmazon API Gateway全体にCloudWatchログへの書き込みを有効にする必要があるので、
CloudWatch Logに書き込み権限を持つIAMロールを作成して、
Amazon API Gatewayに設定します。
そして、設定対象のAPI Gatewayでロググループを設定して有効にします。

AWS IAMロールの作成

IAMロールを作成して、サービスで「API Gateway」を選択して、ユースケースでは、「Allows API Gateway to push logs to
CloudWatch Logs.」を選択します。
そのままです。

すでにAmazonAPIGatewayPushToCloudWatchLogs というAWS管理ポリシーがアタッチされています。
ポリシーを見てみます。

CloudWatch Logsに対しての書き込み権限が許可されています。

ロール名を設定してIAMロールを作成します。

作成SいたIAMロールのarnを控えておきます。

アカウントのAmazon API Gateway全体にCloudWatchログへの書き込みの有効設定

API Gatewayの[設定]で、「CloudWatchログのロールARN」にIAMロールのarnを設定します。

arnは
arn:aws:iam::account_id:role/role_name
です。

※account_id と role_nameは書き換えてください。

対象のAPI Gatewayでアクセスログを有効にする

対象のAPI Gatewayのステージを選択して[ログ]タブで「アクセスログの有効化」にチェックを入れます。

CloudWatchグループには、CloudWatchのロググループをarnで指定します。
新規に作成する場合は指定したロググループ名で自動作成されます。

arnは
arn:aws:logs:region:account_id:log-group:group_name
です。

※region と account_id と group_nameは書き換えてください。

ログの形式は変数を書いて指定しますが、「入力の例」でフォーマットのボタンを押せば自動入力してくれます。
今回は[JSON]にしました。

アクセスしてみる

POSTMANでAPIにアクセスしてみます。

ログが記録されています。

失敗したこと

CloudWatchグループのarnを最初、
arn:aws:logs:region:account_id:group_name
で設定しようとしたところ、

「Access log destination must only contain characters a-z, A-Z, 0-9, ‘_’, ‘-‘, ‘/’, ‘.’: ‘group_name’」

のメッセージが出て保存出来ませんでした。

そのあと、
arn:aws:logs:region:account_id:log-group:group_name
に直して、保存したのですが、上のメッセージを消さないままで[保存]ボタンを押してたので、
保存出来ているのに、保存出来ていないように思ってしまいました。

メッセージは確認した後、次のアクションまでに消しておかなければ。
ややこしや。


最後までお読みいただきましてありがとうございました!

【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。

【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。

i

【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。

 - AWS , ,

ad

ad

  関連記事

「AWSではじめるLinux入門ガイド 」を執筆しました

2020年4月30日に、「AWSではじめるLinux入門ガイド」という本を発行い …

kintoneでEveryoneに権限が設定されているアプリをAWS Lambdaで一括チェックする

こないだ、kintone Cafeでユーザーが自由に作成している環境だと、どんな …

AWS Lambda(Python)でDynamoDB テーブルを日次で削除/作成(オートスケーリング付き)

この記事はAWS #2 Advent Calendar 2018に参加した記事で …

TwilioからのリクエストをAPI Gateway+LambdaでTwimlを返して処理する

Twilioで着信した時のリクエスト先としてTwimlをWebサーバやS3で用意 …

Backlogの実績工数をAmazon QuickSightで可視化してわかったこと

今年に入ってから、Backlogで個人タスクを登録しだして、予定工数、実績工数を …

AlexaにAWSの最新Feedを読み上げてもらう(Lambda Python)

年末にAmazon Echo Dotを購入しましたので、練習がてらAlexaスキ …

kintoneで設定したスケジュールにあわせてlambda(python)からSQSへメッセージを送る

EC2の起動停止をそろそろ手動でやるのも疲れてきそうなのと、やはり停止するのを忘 …

Going Serverless with AWS(AWS Summit Tokyo 2017)を聞いてきました

AWS Summit Tokyo 2017でセッション「Going Server …

AWS EC2 インスタンスステータスのチェックで失敗 原因はPHP-FPMのOOM-KILLER

先週に引き続きEC2のインスタンスステータスチェックで失敗 再起動するも失敗する …

EC2 プレイスメントグループを試してみました

やったことないのでやってみたやつです。 プレイスメントグループの作成 まず、EC …