左側のペインの [Tables] (テーブル) で、テーブル名の横にあるメニューボタンから [Preview table] (テーブルのプレビュー) を選択します。[Results] (結果) ウィンドウに、サーバーのアクセスログからのデータ (bucketowner、bucket、requestdatetime など) が表示される場合、Athena テーブルは正しく作成されています。これで Amazon S3 サーバーアクセスログのクエリを実行できます。. Amazon S3 は、サーバーのアクセスログを S3 バケット内のオブジェクトとして保存します。 Athena を使用すると、サーバーアクセスログの分析またはクエリがすばやく行えます。 1. Amazon S3 は、サーバーのアクセスログを S3 バケット内のオブジェクトとして保存します。Athena を使用すると、サーバーアクセスログの分析またはクエリがすばやく行えます。, 1. Amazon Athena で Amazon Simple Storage Service (Amazon S3) サーバーのアクセスログをクエリするにはどうすればよいですか? ALB のログ検索も同様に行えてすごく便利なので、どんどん Partition Projection を使っていきましょう! こんにちは。BIGLOBE 永末です。 今回は Amazon Web Services (AWS) の小ネタです。, BIGLOBE では近年、 AWS などクラウドサービスの活用を積極的に進めています。CDN サービス(CloudFront)も AWS では簡単に導入できるため、レスポンスの高速化とオリジンサーバの負荷軽減施策として、積極的に採用しています。, CloudFront は便利ではあるのですが、そのまま使うとログの解析がたいへんです。ログがS3 上にファイルとして出力されるため、S3 からログファイルをダウンロードした後に検索などを行う必要があるからです。 既に行っていない場合は、S3 バケットのサーバーアクセスのログ記録を有効にします。[Target bucket] (ターゲットバケット) と [Target prefix] (ターゲットプレフィックス) の値を書き留めます。Athena クエリで Amazon S3 の場所を指定するときに必要になります。, 3. AthenaではDB作成にDDL文かウィザードの2通りの方法があります。 今回はS3のアクセスログをウィザードで作成してみたいと思います。  BucketPrefix:ログバケットのログ出力先プレフィックス © 2020, Amazon Web Services, Inc. or its affiliates.All rights reserved. S3 バケットへのアクセスを求めるリクエストを追跡するため、Amazon S3 サーバーへのアクセスのログ記録を有効にします。 - はい, このページは役に立ちましたか? ューティング, コンソールを使用したログ記録の有効化, このページは役に立ちましたか? そこで、ログを保存用S3バケットに投入する際に元のログだけではなく、ログからインデックスを作成し、それをAthenaで検索できるようにします。 全てのログを投入前に一度パースして辞書型に変換し、そのキーと値をもとにインデックスを作成します。 オブジェクトをいつ、誰が削除したか (タイムスタンプ、IP アドレス、AWS Identity and Access Management (IAM) ユーザーを含む) を表示するには: ベストプラクティスとして、サーバーのアクセスログバケットに対してライフサイクルポリシーを作成することをお勧めします。ライフサイクルポリシーを設定して、定期的にログファイルを削除します。これにより、各クエリで Athena が分析するデータの量が減ります。. 2レコードの検索でこれくらいの差が出ます。, とはいえ、パーティション指定せずに検索することはあまりないとは思うので、気にしないことにしました。. 概要 fluentdを用いてアクセスログをS3に保存する方法です。 今回はApacheのログをS3に送信します。 環境 Ubuntu 14.04 fluentd 0.12.12 Apache 2.4.7 事前準備 バケットの用意 fluentd-log01という名前で作成します。 注意としてS3のバケット名は他の利用者… そこで、BIGLOBE では簡単にログ解析できるように Athena を利用しています。数か月前に登場した Athena の新機能「Partition Projection」を使って、検索環境の構築を少しだけ楽にしました、というのが今回のお話です。, 今までは Athena でパーティション検索をするには、あらかじめ Glue Data Catalog にパーティションを作成しておく必要がありました。Partition Projection を使えばこれが不要になります。例えばパーティションのパスが日付(YYYY/MM/DD)の場合、YYYY/MM/DD をパーティション情報として Glue テーブルを作成すれば、パーティションを自動で計算してくれます。パーティションの管理が不要になるだけでなく、検索も高速になります。, 以前紹介した記事では、まだ Partition Projection がなかったので、バッチで Data Catalog にパーティションを追加していました。これでも動作に問題はないのですが、パーティションを作成する Lambda をメンテナンスする必要があるため、今回取っ払いました。, Glue データベースとテーブルを作成します。以下、CloudFormation のテンプレートです。, projection.date.range で 2018/01/01 から現在までを指定しています。このあたりはお好みです。なお、projection.date.range を100年などすごく広い範囲にしても、クエリを投げる際にパーティションを指定すれば検索時間が遅くなることはなさそうです。 というわけで、 Glue Data Catalog にパーティションを作成することなく検索できるようになりました。今までのやり方でも特に問題があったわけではないのですが、そこそこの数の AWS アカウントで CloudFront が動いていることもあり、今後のメンテナンス性を考えて Lambda をやめることにしました。 ※ Amazon Web Services、AWSロゴおよびかかる資料で使用されるその他のAWS商標は、米国その他諸国における、Amazon.com, Inc.またはその関連会社の商標です。, BIGLOBE Styleでは、ビッグローブ株式会社で働く社員の様々な一面をご紹介します。私たちの企業理念「つながる歓び、つなげる喜び」を支えるトガッた技術や、ちょっと変わった社風・働き方などなど、どうぞお楽しみください!, こんにちは。BIGLOBE Style編集部の吉田です。年々子どもの数は減少傾向ですが、子ど…, こんにちは、南といいます。BIGLOBEでネットワークエンジニアをやっています。8月に…, 「BIGLOBE Style」が2020年9月24日(木)にオンライントークイベント「BIGLOBE Style…, 執行役員 コンシューマ事業本部副本部長 中川圭子 はじめまして。BIGLOBEの中川です…, 取締役執行役員常務 基盤本部長 鴨川 比呂志 BIGLOBE Styleをご覧頂きありがとうござ…, AWS CloudFrontのアクセスログ解析をAthenaのPartitionProjectionでやってみた, 【対談インタビュー】家庭教師業界の現状を改善したい-家庭教師マッチングサービス『キョウシル』 ✖ 家庭教師センターLIV…, コロナ禍で急増するトラヒックにネットワークエンジニア達が業界の垣根を超え立ち向かう, 「新しい住まいと働き方」BIGLOBE Styleイノベーションミーティング:オンラインvol.1レポート, ファン醸成のマーケティング『知ってもらい、好きになってもらい、長くファンでいてもらう』.  CFName:CloudFront 名 ※データベース名、テーブル名に利用, CFName の AllowedPattern に -(ハイフン) がないのは、- があるとクエリを投げる際に database、table名を " で囲む必要があり、面倒だからです。, Athena 未使用の場合、クエリ結果を出力する S3 バケットを設定しておきます。また、クエリを投げる際にパーティションキーを指定し忘れると、全スキャンが発生して AWS 利用料がすごいことになってしまう可能性があります。対策として、スキャンの上限を入れておきます。, ちなみに、パーティション指定をしないでフルスキャンすると検索がすっごい遅いです。 S3のサーバーアクセスログをAthenaで確認し、アクセスに失敗したログを洗い出す方法をご紹介します。ユーザーからS3に接続できないと連絡があった場合などにご活用ください。 ョン化の詳細については、 の athena-add-partition を参照してくださいGitHub。, ブラウザで JavaScript が無効になっているか、使用できません。, AWS ドキュメントを使用するには、JavaScript を有効にする必要があります。手順については、使用するブラウザのヘルプページを参照してください。, ページが役に立ったことをお知らせいただき、ありがとうございます。, お時間がある場合は、何が良かったかお知らせください。今後の参考にさせていただきます。, このページは修正が必要なことをお知らせいただき、ありがとうございます。ご期待に沿うことができず申し訳ありません。, お時間がある場合は、ドキュメントを改善する方法についてお知らせください。, このページは役に立ちましたか? 既に行っていない場合は、S3 バケットのサーバーアクセスのログ記録を有効にします。 - いいえ, サーバーアクセスのログ記録を有効にする方法, ログオブジェクトのキーフォーマット, ベストエフォート型のサーバーログ配信, バケットのログ記録ステータスの変更が有効になるまでには時間がかかる, プログラムでのログ記録の有効化, Amazon S3 サーバーアクセスログの形式, Amazon S3 アクセスログを使用したリクエストの識別. データベースにテーブルスキーマを作成します。次の例では、STRING および BIGINT データ型の値は、アクセスログのプロパティです。これらのプロパティは Athena でクエリできます。LOCATION では、ステップ 1 で書き留めた S3 バケットおよびプレフィックスのパスを入力します。プレフィックスの最後にスラッシュ (/) を含めるようにしてください (例: s3://doc-example-bucket/prefix/)。, 5. Hourly ではなくDaily で設定すると、フルスキャンでも速くなりました。 クエリエディタで、DDL 文を実行してデータベースを作成します。 ベストプラクティスとして、S3 バケットと同じリージョンでデータベースを作成することをお勧めします。, 4. - はい, このページは役に立ちましたか? S3のサーバーアクセスログをAthenaで確認し、アクセスに失敗したログを洗い出す方法をご紹介します。ユーザーからS3に接続できないと連絡があった場合などにご活用ください。, S3コンソールから、バケットを選択しプロパティからサーバーアクセスのログ記録を有効にします。, 作成すると、リストに"s3_access_logs_db"が追加されるので選択します。, テーブルを作成します。「LOCATION 's3://awsexamplebucket-logs/prefix'」を実環境に合わせて、実行します。具体的にはS3のサーバーアクセスログの設定で指定したバケットとプレフィックスを指定します。, ステータスコードが200以外かつ、ユーザーエージェントがAWSに関するもの以外のログを100件表示します。useragentやlimitは必要に応じて変更、削除してください。, クエリの結果をみてみましょう。IPアドレスや接続に利用したIAMロールやIAMユーザー情報を確認できます。, 操作や操作したパスを確認できます。例として、バケットポリシーで特定の操作のみ許可している場合にアクセスできない場合はこちらに注目します。, ユーザーエージェントを確認できるので、aws cli、python sdk、ブラウザなど接続に使ったツールを確認できます。, S3のサーバーアクセスログをAthenaで確認し、アクセスに失敗したログを洗い出す方法を紹介しました。クエリの内容を変更すれば、他の情報も参照できます。参考リンクをご覧ください。. 関連記事で実装しているサーバレスWebアプリのサンプルのアクセスログ確認をAthenaでお手軽にしたいと思いました。そこでCloudFront/WAF/API Gatewayのアクセスログをデータレイクとして用意したS3バケットへ保存するようにしてみました。 今回のコード アクセスログ保存の設定概要 CloudFron… Athena を使用して Amazon S3 サーバーのアクセスログを分析するにはどうすればよいですか. テンプレートの入力パラメータは以下のとおりです。, CFLogBucket:CloudFront がログ出力するバケット - いいえ, を使用して Application Load Balancer のアクセスログを分析する方法」を参照してください, ガイドの「Application Load Balancer の. アクセス ログを有効にする そのため Application Load Balancer ログは Amazon S3 バケット。 ALB ログのテーブルの作成. ログがS3 上にファイルとして出力されるため、S3 からログファイルをダウンロードした後に検索などを行う必要があるからです。 そこで、BIGLOBE では簡単にログ解析できるように Athena を利用してい … GitHub, amazon-kinesis-firehose-cloudwatch-logs-processor, aws-sls-spa-sample-terraform/bin/create_staging_environment.sh, aws-sls-spa-sample-terraform/bin/create_production_environment.sh, Serverless FrameworkとTypeScriptでClean ArchitectureライクなREST APIを作ってみる, Angular6でマテリアルデザイン/ReduxアーキテクチャなSPAフロントエンドを作ってみた, Angular+Serverless Framework+AWSな構成のサーバレスWebアプリにAmplify+API Gateway Lambda AuthorizerでCognitoユーザ認証を組み込んでみた, SPA/サーバレスAPIのCodePipelineにlint/ユニットテスト/E2Eテストを加えてみた, https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html, https://docs.aws.amazon.com/ja_jp/waf/latest/developerguide/logging.html, https://docs.aws.amazon.com/ja_jp/waf/latest/developerguide/logging.html#logging-procedure, https://docs.aws.amazon.com/ja_jp/athena/latest/ug/compression-formats.html, https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/set-up-logging.html, https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/SubscriptionFilters.html#FirehoseExample, https://docs.aws.amazon.com/ja_jp/firehose/latest/dev/data-transformation.html, https://tech.actindi.net/2019/05/29/105748, https://aws.typepad.com/sajp/2017/03/aws-black-belt-online-seminaramazon-athena_slides_and_qa.html, https://aws.amazon.com/jp/about-aws/whats-new/2019/10/amazon-api-gateway-now-supports-access-logging-to-amazon-kinesis-data-firehose/, https://serverless.com/blog/framework-release-v142/#api-gateway-rest-api-logs, https://serverless.com/framework/docs/providers/aws/events/apigateway/#logs, https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html, https://aws.amazon.com/jp/blogs/news/analyzing-data-in-s3-using-amazon-athena/, https://docs.aws.amazon.com/ja_jp/athena/latest/ug/create-table.html, https://docs.aws.amazon.com/ja_jp/athena/latest/ug/select.html, https://docs.aws.amazon.com/ja_jp/athena/latest/ug/cloudfront-logs.html, https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html#LogFileFormat, https://dev.classmethod.jp/cloud/aws/query-aws-waf-full-log-by-athena/, SPA/サーバレスAPIのCodePipelineにlint/ユニットテスト/E2Eテストを加えてみ…, Try Ruby on Rails on AWS Lambda and API Gateway by…, Ruby on Rails on AWS Lambda and API Gateway by Ser…, Angular+Serverless Framework+AWSな構成のサーバレスWebアプリにAm…, DynamoDBの情報もGlueなどでS3データレイクに同期するようにしても良いかも。そうすればAthenaで, Cognitoの情報もS3データレイクに同期するようにしても良いかも。ただお手軽に同期する手段がないのでCognitoトリガーで一旦DynamoDBに同期してからのGlueなどでの同期になるかも。. 今回は『Amazon Athena編~DB作成を試してみる~』と題して、Amazon AthenaでDB作成を試してみたいと思います。 AthenaのDB作成.