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
に直して、保存したのですが、上のメッセージを消さないままで[保存]ボタンを押してたので、
保存出来ているのに、保存出来ていないように思ってしまいました。
メッセージは確認した後、次のアクションまでに消しておかなければ。
ややこしや。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第2版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
AWS CodeStarで静的webサイトのテンプレートプロジェクトを作成する
執筆環境の検討中です。 CodeCommitは使うつもりで、コミットしたときにE …
-
AWS Data Pipelineを使ってDynamoDBのアイテムを全件S3バケットに書き出した
ちょっと試してみたくてやってみました。 手順はこちらのチュートリアルを参考にすす …
-
AWS Systems Manager セッションマネージャを使用するために必要な設定
AWS Systems Manager セッションマネージャを使用するために必要 …
-
AWS WAF Web ACLとルールをv1(Classic)からv2に自動移行しました
新しいものは、課題が解決されていたり、機能追加されたりするのでいいものです。 長 …
-
RDSのスナップショットをS3へエクスポートが日本語マネジメントコンソールでもできるようになってました
RDSスナップショットをS3にエクスポートする新機能を試そうかと思ったのときは、 …
-
AWS Toolkit for Eclipseで「Error Message: Unable to find a region via the region provider chain. Must provide an explicit region in the builder or setup environment to supply a region.」
AWS Toolkit for Eclipseをセットアップ(2021年版)の環 …
-
Amazon Auroraのスナップショットの暗号化とリージョン間コピーを改めて試しました
Amazon Auroraデータベースを暗号化して、スナップショットを作成、クロ …
-
ある意味マネジメントコンソールで生成された署名付きURL
マネジメントコンソールにS3オブジェクトの[開く]というボタンがいつのまにか出来 …
-
Amazon Location Service入門ワークショップ-ジオコーディング
ジオコーディングにより住所を緯度経度に変換したり、逆に緯度経度から住所を求めたり …
-
Amazon Location Service入門ワークショップの前提環境準備
Amazon Location Service入門ワークショップの前提環境を構築 …