変更要約: in-scope サービス網羅: 中核サービスの解説を追加
1.1データの収集と取り込み
ML の出発点——データソース、ストリーミング取り込み(Kinesis)、バッチ取り込み、S3 データレイク——を理解します。学習データはまず S3 に集めます。
機械学習はデータを集めることから始まります。AWS では多様なソースからデータを取り込み、S3 データレイクに集約して学習に使います。
1.1.1取り込みの方式
- ストリーミング取り込み:リアルタイムのデータは Kinesis(Data Streams/Firehose) で取り込む。
- バッチ取り込み:DB の一括移行は DMS、定期的な ETL 取り込みは Glue などを使う。
- S3 データレイク:取り込んだデータは S3 に集約し、学習データの中心に据える。
- Firehose の配信先:Amazon Data Firehose は S3 へ自動配信でき、ニアリアルタイムで蓄積できる。
「リアルタイム取り込み=Kinesis」「S3 へニアリアルタイム配信=Amazon Data Firehose」「学習データの集約先=S3 データレイク」 は MLS-C01 で頻出です。ストリーミングは Kinesis、まとめて S3 に集約、が基本パターンです。
Kinesis Data Streams は低遅延で順序保証やカスタム処理に向き、Firehose は管理不要で S3/Redshift などへの配信に向きます。用途で使い分けます。
MLS-C01 では取り込みサービスの「使い分けの根拠」が問われます。Kinesis Data Streams はシャードで構成され、各シャードが書き込み 1MB/秒・1,000 レコード/秒、読み取り 2MB/秒というスループット上限を持つため、流量に応じてシャード数を設計し、パーティションキーでホットシャードを避けます。コンシューマー側は標準(プル・シャード共有)と Enhanced Fan-Out(各コンシューマー専用 2MB/秒・プッシュ)を使い分けます。Firehose は完全マネージドでシャード管理が不要、S3/Redshift/OpenSearch へ配信しつつ、Lambda での変換や Parquet/ORC への形式変換、動的パーティショニングを途中で行えるため、ML 学習向けの列指向データレイクを取り込み時点で作れます。両者の違いは「遅延と制御」対「運用レス」で、リアルタイム推論のフィードや順序が重要なら Data Streams、ニアリアルタイムで S3 に貯めて後でバッチ学習するなら Firehose が定石です。大量の既存データを一度に入れる場合は、DB からは DMS(フルロード+CDC で継続同期)、ファイル群は S3 へ直接、ペタバイト級のオンプレは Snowball、ファイル共有の継続同期は DataSync を選びます。Kafka 資産があるなら MSK(マネージド Kafka)も取り込み口になります。
| 取り込み手段 | 特性 | 代表用途 |
|---|---|---|
| Kinesis Data Streams | 低遅延・順序・シャード管理 | リアルタイム推論フィード |
| Amazon Data Firehose | 管理不要・形式変換・配信 | S3 への列指向蓄積 |
| DMS | フルロード+CDC | DB の移行・継続同期 |
| Snowball / DataSync | 大容量物理転送 / 継続同期 | オンプレ大量データ |
シナリオ:クリックストリームを取り込み、加工して Parquet で S3 データレイクに貯め、夜間にまとめて学習したい(リアルタイム推論は不要)。→ Amazon Data Firehose を使い、配信途中で Lambda 変換+Parquet 変換+動的パーティショニングを有効化して S3 に列指向で蓄積する。シャード管理が要らず、学習に最適なレイアウトを取り込み時点で作れる。
FAQ:Q. Data Streams と Firehose どちらを使う? A. 順序・低遅延・カスタム処理が要るなら Data Streams、運用レスで S3 等へ貯めるなら Firehose。Q. 取り込み時に CSV を Parquet にしたい? A. Firehose の形式変換(record format conversion)で取り込み中に Parquet/ORC へ変換できる。Q. DB の継続的な変更も取り込みたい? A. DMS の CDC を使う。
ひっかけ:「リアルタイム取り込みには必ず Kinesis Data Streams が必要」は誤り。S3 へニアリアルタイムに貯めるだけならシャード管理の要らない Firehose で十分なことが多い。逆に「Firehose で順序保証や 1 秒未満の低遅延処理ができる」も誤りで、それは Data Streams(+専用コンシューマー)の領域。バッファリングがある Firehose は厳密な低遅延には向かない。
1.1.2この節のまとめ
- リアルタイム=Kinesis、まとめて=バッチ(DMS/Glue)
- 集約先=S3 データレイク(ML パイプラインのハブ)
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. IoT センサーからのリアルタイムなデータストリームを取り込んで学習に使いたい。最適なのはどれですか?
Q2. ストリーミングデータを管理不要でニアリアルタイムに S3 へ配信して蓄積したい。何を使いますか?
Q3. 機械学習の学習データは一般的にどこに集約するのが基本ですか?

