[ログ][資料集] 3Dアプリの行動履歴ログを獲得する為に参考にした資料の備忘録

# 経緯
とあるサービスでユーザーの行動解析を行う際に、ログデータを受け取ってなるべくリアルタイムに加工して出力するシステムが必要になったので、どう構築していくか調査することになりました。
その際にとても有用だと感じた資料を残しておきます。備忘録です。

# 概要
#### [ログ管理のベストプラクティス](https://www.slideshare.net/akuwano/ss-69861012)
AWS Japanのソリューションアーキテクトの方の資料です。AWSを使う場合にはたくさんの定石を知ることができて役立ちました。

#### [秒間数万のログをいい感じにするアーキテクチャ](http://sssslide.com/speakerdeck.com/kanny/miao-jian-shu-mo-falseroguwoiigan-zinisuruakitekutiya)
- Cookpadのログへの考え方からシステムの変遷まで書かれていて、ログというものへの全体像を実感するのにとても役立ちました

#### 【AWS summit 2016 Tokyo 発表内容】タウンワークにおけるサーバーレスアーキテクチャデザイン
- [前編](https://techblog.recruitjobs.net/development/aws_summit_townwork_serverless_architecture1)
- [後編](https://techblog.recruitjobs.net/development/aws_summit_townwork_serverless_architecture2)
- [「タウンワークにおけるサーバーレスアーキテクチャ」AWS Summit Tokyo 2016 登壇記](https://techblog.recruitjobs.net/events/aws-summit-tokyo-2016-townwork-serverless-architecture-design)

#### [サーバーレスアーキテクチャのパターン別ユースケース](http://yoshidashingo.hatenablog.com/entry/serverlss-usecases-2017)

# 各要素
## [Kinesis](https://aws.amazon.com/jp/kinesis/)
データの一時受けに便利です。KinesisはStreamsとFirehoseとAnalyticsの3つのサービスにわかれています

#### [Kinesis Streams](https://aws.amazon.com/jp/kinesis/streams/)
Kinesis Streamsの公式ページで、結局ここが一番わかり易いです。
<img width="900" alt="diagram-kinesis-streams-how-it-works.png" src="https://qiita-image-store.s3.amazonaws.com/0/18705/c7f3812b-4428-4403-fafc-e91acea9bf2f.png">


#### [Kinesis Firehose](https://aws.amazon.com/jp/kinesis/firehose/)
Kinesis Firehoseの公式ページがとてもわかり易いです。
![diagram-kinesis-firehose-s3-redshift-elasticsearch_v2.png](https://qiita-image-store.s3.amazonaws.com/0/18705/30dc1351-8e78-bf7c-182e-50c6881bdd38.png)

#### [Amazon Kinesis StreamsとAmazon Kinesis Firehoseは何が違うのか](http://dev.classmethod.jp/cloud/aws/difference-between-kinesis-streams-and-kinesis-firehose/)

#### [Amazon Kinesis StreamとAmazon Kinesis FirehoseのAPIを比較する #reinvent](http://dev.classmethod.jp/cloud/aws/kinesis-firehose-api/)

#### [AWS Kinesis Firehoseを動かして見る](http://qiita.com/taka4sato/items/a3f37205cd4aceb525f4)

#### [KafkaとAWS Kinesisの比較](https://www.slideshare.net/laclefyoshi/kafkaaws-kinesis)
AWS以外のサービスとの比較、AWSにとらわれないシステム構成などを学ぶことができました

#### [fluent-plugin-kinesisでKinesis Streamsにログを送信する](http://dev.classmethod.jp/cloud/aws/fluent-plugin-kinesis/)
実用例としてとても参考になりました。

#### [fluent-plugin-kinesis-firehoseでAmazon Kinesis Firehoseにログを転送する](http://dev.classmethod.jp/cloud/fluent-plugin-kinesis-firehose/)
のfirehose版で、こちらも参考になりました。

## 結合例

#### [ストリーム型(kinesis stream)のAWS Lambdaの同時起動数とデータの取り方を整理](http://qiita.com/TakashiKOYANAGAWA/items/f290ed5d4e305508dc63)
Kinesis Streams と Lambda との組み合わせ方について勉強になりました

#### [Fluentd&Kinesis&Lambdaによる柔軟で高可用性なログ収集基盤の構築](http://qiita.com/KUMAN/items/38c09449b7d7a947aa6c)
- Fluentd -> Kinesis -> Lambda -> [S3, DynamoDB...] などの流れが明快にわかってとても参考になります

#### [API Gateway / Lambda / Kinesis を使ったストリーミングなバッチ実行基盤の実装](https://speakerdeck.com/takesinoda/kinesis-woshi-tutasutorimingunabatutishi-xing-ji-pan-falseshi-zhuang)
考察が乗っていてとてもわかりやすいです

#### [Kinesis Producer Library(KPL)とfluentdとLambdaを連携してKinesisのスループットを上げる](http://dev.classmethod.jp/cloud/aws/high-throughput-messaging-system-with-kinesis-kpl-fluentd-lambda/)
2つ目の記事に関して解説が追加された記事になります。わかりやすい。


## Data Storage
#### [Amazon DynamoDB](https://aws.amazon.com/jp/dynamodb/)
公式ですので、とりあえず目を通します

## [API Gateway](https://aws.amazon.com/jp/api-gateway/faqs/)
とりあえずAPI Gatewayはとっても便利という印象でした。
EC2がいいのか、API Gateway + Lambdaがいいのかとか色々悩みましたが、そもそもいろんな使い方があることが勉強になります。

以下、入門編という感じで資料です。

#### [API ホスト名としてのカスタムドメイン名の設定 - Amazon API Gateway](http://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/how-to-custom-domains.html)

#### [【新機能】Amazon API GatewayがACM (AWS Certificate Manager)に対応。簡単に独自ドメインAPIがSSL化。 | Developers.IO](http://dev.classmethod.jp/cloud/aws/amazon-api-gateway-integrates-acm/)

#### [API Gateway リソースの CORS を有効にする - Amazon API Gateway](http://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/how-to-cors.html)

#### [API Gateway API のリクエストパラメータをマッピングする - Amazon API Gateway](http://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/getting-started-mappings.html)

#### [Amazon API GatewayからAWS Lambdaにパラメータを渡す方法 - Qiita](http://qiita.com/keita-nishimoto/items/a409b1722956cb1d9487)


## EC2からLambdaへの移行
#### [AWS 謹製 aws-serverless-express を使って APIGateway + Lambda + Node + Express で RESTful サービスの雛形を最速で作る - Qiita](http://qiita.com/exabugs/items/594d3cd417e99dc29387)
expressでEC2に構築済のサービスをLambdaに移行していきたかったので、役立ちました

#### [AWS LambdaからIAM RoleのCredential情報を取得し、RedshiftのCOPY処理に利用する](http://dev.classmethod.jp/cloud/aws/copy-s3files-from-lambda-to-redshift-by-using-iam-roles-credential/)
結局毎回権限周りであれこれチグハグするので、こうした記事は大変助かります