AWS Data Engineer Associate
S3
Amazon S3 VPCゲートウェイエンドポイント
VPCのエンドポイントにインバウンドとアウトバウンドのルートが必要
S3 Glacierのストレージクラス
ストレージクラス | 保存コスト | データ取得コスト | データ取得速度 | 最小保存期間 | ユースケース例 |
---|---|---|---|---|---|
S3 Glacier Instant Retrieval | 高め | 安価 | ミリ秒 | 90日 | 医療記録、メディアアセット |
S3 Glacier Flexible Retrieval | 中程度 | 高め | 数分〜数時間 | 90日 | バックアップ、監査データ |
S3 Glacier Deep Archive | 最安価 | 最安価 | 12〜48時間 | 180日 | 規制遵守アーカイブ、古いログファイル |
S3 Select
S3オブジェクト内のデータに対してSQLクエリを実行し、必要なデータだけを抽出する機能
Access Analyzer for S3
S3バケットのアクセス権を可視化して、不適切な公開や意図しないアクセスを検出し、修正を支援するセキュリティツール。
暗号化
特定の従業員だけがアクセスできる暗号化キーを使用したい場合は、SSE-KMSを選択
S3 Intelligent-Tiering
ストレージコストを最適化するためのストレージクラスです。
データのアクセスパターンに基づいて自動的に適切なストレージ階層にデータを移動し、コスト効率を最大化します。
S3 Storage Lens
S3ストレージの使用状況を可視化して、コスト削減、セキュリティ強化、パフォーマンス向上を支援するツールです。分析結果を基にストレージ運用を最適化できます。
AWS Lake Formation
- データインジェストとカタログ化:
S3やRDSなどのデータソースからデータを簡単にインポートし、Glue Data Catalogに登録。 - アクセス制御:
きめ細かなデータアクセス制御を提供(列・セルレベルの制御が可能)。 - 統合管理:
データレイクのセキュリティ、ガバナンス、監査を一元管理。 - AWSサービスと統合:
Athena、Redshift、EMR、QuickSightなどでデータを簡単に利用可能。
AWS Data Exchange
- AWS上でデータを安全に購入できるサービス
- APIでデータにアクセス可能
AWS Glue
主な機能
機能 | 説明 |
---|---|
Glue Crawler | データソースをスキャンし、構造(スキーマ)を自動的に検出。Glue Data Catalogにテーブルを作成して登録。 |
Glue ETLジョブ | Apache Sparkベースの分散処理で大量のデータを変換・統合。Python(PySpark)またはScalaでジョブを記述可能。 |
Glue Data Catalog | データソースのメタデータ(テーブルやスキーマ情報)を一元管理。Amazon Athena、Redshift、EMRなどで利用可能。 |
Glue Studio | ノーコードまたはローコードでETLジョブを視覚的に作成・編集できるインターフェース。 |
Glue Pythonシェルジョブ | 軽量なデータ処理や外部API呼び出しに適したPythonスクリプトを実行。 |
Glue Machine Learning(FindMatches) | データ内の重複や類似データを識別するための機械学習ベースの機能。 |
|
AWS Glueワークフロー
複数のETLジョブやタスクを順序付けて自動的に実行するためのオーケストレーションツール。
Glue内でデータ処理のパイプラインを構築し、依存関係を設定して効率的に管理できる。
AWS Glueトリガー
GlueのETLジョブやワークフローを自動的に実行するための仕組み。
スケジュールやイベントに基づいてGlueジョブの実行を制御する。
実行クラス
- Standard(標準)
- G.1X/G.2X(最適化されたクラス)
- Flex(コスト最適化)
ワーカータイプ
- Standard: 小規模なデータ処理。
- G.1X: Apache Sparkを使用する中規模処理。
- G.2X: 大規模なデータ処理。
- Z.2X: メモリ集約型処理。
AWS Glue Crawler
データソースをスキャンしてデータ構造(スキーマ)を自動で特定し、Glue Data Catalogに登録するツール。
これにより、データ処理やクエリの準備が大幅に簡素化されます。
AWSGlueServiceRole
- S3へのアクセス:
Glue CrawlerやジョブがS3バケットからデータを読み取るための権限。 - Glueデータカタログの操作:
Crawlerがスキーマを検出し、Glue Data Catalogを更新するための権限。 - Glueのログ記録:
CloudWatch LogsにGlueジョブやCrawlerの実行ログを保存する権限。
Redshiftへの接続
GlueはJDBC接続を介して直接Redshiftにアクセスし、S3を一時領域としてデータをロードする仕組みを提供
AWS Glue Studio の Detect PII Transform
- AWS Glue Studio内で提供されるトランスフォーム(Transform)機能。
- GUIベースでPIIを検出し、マスキングや削除などの操作を簡単に実装可能
DynamicFrame
データ処理に特化した構造化データ形式で、ETL(抽出、変換、ロード)ジョブでのデータ操作を簡素化するために提供されるAWS Glue独自のデータ構造
FindMatches機械学習変換
機械学習を利用して曖昧一致や重複レコードを特定するための便利なツールです。データクレンジングや統合に役立ち、手作業の負担を軽減する
API経由でクエリ実行できる
create_partition API
AWS Glueのデータカタログに新しいパーティションを追加するためのAPI。
既存のGlueテーブルに対して手動でパーティション情報を登録できる。
AWS Glue DataBrew
ノーコードでデータの前処理(データクレンジングや変換)を行うためのツールです。
視覚的なインターフェースを提供し、プログラミング不要でデータのクレンジング、変換、標準化などを効率的に行えるのが特徴です。
S3のExcelデータのカウントを取得することなどもできる。(COUNT_DISTINCT関数)
- NEST_TO_MAP ネストされたデータ構造(例えば、JSON形式のオブジェクト)を**キーと値のペア形式(マップ型)**に変換するための機能
AWS Glue Pythonシェルジョブ:
軽量なETLタスクやスクリプトを実行するためのAWS Glueジョブタイプで、Apache Sparkを使わずにPythonスクリプトを単一インスタンスで実行します。
- 軽量なタスクや補助的な処理が必要な場合。
- 外部APIとの統合や特定のスクリプトをGlueで管理したい場合。
- ライブラリの自由度が重要な場合。
- Pandasは、Glue Pythonシェルジョブでの軽量なデータ処理に最適。
パーティションフィルタリング
データを処理する際に、特定のパーティション(データの部分集合)のみを効率的に選択・処理する機能
AWS Glue Schema Registry
リアルタイムデータやイベントデータを扱うアプリケーションにとって、データ品質と互換性を保つためのツール。スキーマ管理を自動化することで、開発と運用の効率が向上する。
Amazon RedShift
Amazon RedShift Data API
HTTPベースでRedshiftのデータに簡単にアクセスできるAPIで、サーバーレス環境やアプリケーションとシームレスに統合可能です。
特に、データベースドライバーなしでクエリを実行したい場合に便利です。
WLM(Workload Management)
WLMは、Redshiftクラスタ内で実行されるクエリを管理する機能
キュー(クエリの実行グループ)レベルで同時実行スケジューリングをオンにすることで、Redshiftがキュー内のクエリの特性に応じてスロット(CPU、メモリを割り当てる単位)の割り当てを動的に調整する。
Redshiftのリソースが効率的に活用される。
- リソースの割り当て:
クエリが使用できるメモリやスロットを制御します。 - 優先順位の管理:
クエリの実行順序やスロットへの割り当てを調整。 - 同時実行制限:
同時に実行可能なクエリの数を制限してリソース競合を防止。
Redshiftデータ共有
複数のRedshiftクラスタ間でデータをリアルタイムで共有
-
プロデューサークラスタ(Producer Cluster)
- データを提供する元のRedshiftクラスタ。
- 特定のデータベースやテーブルを共有対象として公開します。
-
コンシューマクラスタ(Consumer Cluster)
- プロデューサークラスタが共有するデータにアクセスするRedshiftクラスタ。
- 共有データに対してクエリを実行できますが、データを編集することはできません(読み取り専用)。
Redshift Spectrum
S3に保存されたデータに直接クエリを実行できる機能。
Redshiftクラスタにロードせず、データウェアハウスとデータレイクを統合して分析を行える。
よく使うRedshiftのシステムテーブル
カテゴリ | テーブル名 | 説明 | 使用例 |
---|---|---|---|
クエリ履歴 | STL_QUERY |
過去のクエリ実行履歴を表示。クエリの状態や実行時間を確認。 | 実行済みクエリのリストや失敗したクエリを特定。 |
STL_ALERT_EVENT_LOG |
クエリ実行時の警告イベントを記録。 | クエリのパフォーマンス問題をトラブルシュート。 | |
クラスタ状態 | STV_BLOCKLIST |
テーブルのデータブロック分布を表示。 | テーブルがどのスライス(ノード)に保存されているかを確認。 |
STV_RECENTS |
現在実行中のクエリ情報を表示。 | 実行中のクエリのモニタリングやステータス確認。 | |
パフォーマンス監視 | STL_EXECUTION_PLAN |
クエリの実行プランを表示。 | クエリの最適化のために実行プランを分析。 |
STL_TR_CONFLICT |
トランザクションロック競合を表示。 | ロック競合のトラブルシュート。 | |
スキーマ情報 | PG_TABLE_DEF |
テーブルのスキーマ情報を表示(列名やデータ型など)。 | テーブルの列情報を取得。 |
クエリの高速化
列ストレージのファイル形式
一般的なクエリ述語に基づいてデータを分割する
システムテーブル
クラスタのパフォーマンスや状態を監視するためのメタデータを提供する。
STL_は履歴情報、STV_は現在の状態、PG_はスキーマメタデータに対応する。
クエリエディタ v2
WSコンソールからAmazon Redshiftのデータを直接操作できるブラウザベースのクエリエディタ
マテリアライズド・ビューの自動更新できる
ディストリビューションキー(DISTKEY)
データをクラスター内のノード間で分散する方法
VACCUMコマンド
- VACCUM REINDEX Amazon RedshiftでテーブルのデータをSORTKEYに基づいて並び替え、クエリパフォーマンスを向上させるためのコマンド。特にソート順序が崩れた場合に有効。
ALLディストリビューションスタイル
テーブル全体をクラスター内のすべてのノードに複製する分散方式です。
この方式は、特に小規模な参照テーブルやルックアップテーブルに適しており、ジョインやクエリ性能を向上させます。
小規模なルックアップテーブル(国コードや製品カテゴリのような数十行から数百行程度の参照データ)、頻繁にジョインされるテーブルで利用。
Amazon Redshift Serverless
データウェアハウスをサーバーレスで提供するオプションで、インフラ管理不要で柔軟なスケーリングと従量課金を特徴としています。
これにより、手軽にデータ分析を開始し、コスト効率を最大化できます。
ストリーミング取り込み機能
リアルタイムデータをRedshiftに直接取り込むための機能です。
Amazon Kinesis Data StreamsやAmazon MSK(Managed Streaming for Apache Kafka)などからのデータを低レイテンシでRedshiftに取り込み、即座に分析に活用できます。
Amazon Athena
ワークグループ(Workgroup)
Athenaでのクエリ実行を管理および制御するための機能。
アクセス制御やクエリのモニタリング(クエリ実行環境分離、チームやプロジェクト毎に独立した設定が可能)
クエリの実行設定、コスト管理、アクセス制御を簡単に行うことができる。
Apache Sparkを使用するには、ワークグループを作成する必要がある。
クエリのパフォーマンス最適化
- データフォーマットをApache parquetにする(列切り落とし、述語押し込み)
- Snappy圧縮する保存(スペースを効率化、読み込み短縮)
クエリを定期実行
- EventBridgeでスケジュールを設定し、Lambda関数でAthenaクエリを実行
- Step Functionsを使用してAthenaクエリ実行を含む複数のタスクを管理(複数ステップのワークフローを構築可能。
クエリ完了後の処理やエラー処理を追加。)
Athena Federated Query
Athenaから複数のデータソース(オンプレミスや他のAWSサービスなど)に直接クエリを実行できる機能。
従来のS3に保存されたデータに加えて、RDS、Redshift、DynamoDB、HBase、Elasticsearchなどのデータにアクセス可能。
S3データに対してクエリ、Glue Data Catalogをメタデータテーブルとして利用
- AWS Glueパーティションインデックスを作成、パーティションフィルタリングを有効
- S3パケットの接頭辞(Prefix)に基づいてAthenaパーティションプロジェクションを使用する
リージョン
リージョンごとに動作し、S3のデータも同じリージョン内でクエリする必要がある。
異なるリージョンのデータを処理する場合、追加のコストや設定が必要。
クエリ結果再利用機能
同じクエリが繰り返し実行された際に以前の結果を再利用。パフォーマンス効率化とコスト削減。
Partition Projection
Amazon S3に保存されたデータを効率的にクエリするための機能。特に、大量のパーティションが存在する場合でも、事前に定義されたルールに基づいてパーティションを動的に生成し、クエリパフォーマンスを向上さる。
Amazon Managed Service for Apache Flink(旧Amazon Kinesis Data Analytics for Apache Flink)
- リアルタイムデータ処理:
Apache Flinkを使用して、ストリームデータをリアルタイムで分析・変換。 - フルマネージド:
クラスターのセットアップ、スケーリング、管理を自動化。 - 統合性:
Amazon KinesisやAmazon MSK(Managed Streaming for Apache Kafka)などのデータストリームサービスと簡単に統合。 - スケーラブル:
自動スケーリングにより、変動するデータ量にも対応。
Amazon Timestream
- 時系列データに最適化:
IoTセンサー、アプリケーションメトリクス、運用モニタリングデータなどの時系列データの保存・クエリに特化。 - スケーラブルで高速:
数十億件のデータポイントを高速にクエリ可能。 - 階層型ストレージ:
メモリストレージで最新データを高速処理し、ディスクストレージに古いデータを自動的に移動してコストを最適化。 - SQLサポート:
時系列データ向けのSQLクエリ構文を提供。 - サーバーレス:
サーバー管理不要で、オンデマンドでリソースをスケール。 - AWSサービスとの統合:
IoT Core、CloudWatch、Lambdaなどと簡単に連携可能。
Grafana
- 多様なデータソース対応:
Amazon Timestream、Prometheus、Graphite、Elasticsearch、AWS CloudWatch、MySQLなど、幅広いデータソースをサポート。 - 高度な可視化:
時系列データのグラフやリアルタイム監視ダッシュボードを作成可能
AWS DataSync
- データ移動の自動化:
オンプレミス(NFS/SMBファイルシステム)やAWSストレージ(S3、EFS、FSxなど)間でデータを自動で転送。 - 高速データ転送:
従来の方法よりも最大10倍のスピードでデータを移動。 - 増分転送:
更新されたデータのみを転送することで効率的。 - セキュリティ:
転送中のデータはTLSで暗号化。 - スケジュール可能:
データ転送ジョブをスケジュールして定期的に同期。
Amazon EMR
Redshiftとの違い
項目 | Amazon EMR | Amazon Redshift |
---|---|---|
目的 | 大規模データの処理(柔軟なカスタム処理) | データウェアハウスとしての分析に最適 |
データ形式 | 構造化、非構造化、半構造化データ | 主に構造化データ |
クエリ言語 | HiveQL、Spark SQL、カスタムコード | SQL |
パフォーマンス最適化 | フレームワーク依存 | カラムナストレージ、並列処理 |
スケーリング | 自動スケーリングあり(クラスターベース) | コンピュートとストレージの分離可能(RA3) |
使用の簡便さ | フレームワークや設定が必要 | 簡単にセットアップ可能 |
主な用途 | ビッグデータ処理、ログ解析、機械学習 | データウェアハウス、BIツール連携 |
永続的なデータストア
S3を推奨
コアノードとタスクノードの違いまとめ
特徴 | コアノード(Core Node) | タスクノード(Task Node) |
---|---|---|
データ保存 | HDFSにデータを保存 | データは保存しない |
データ処理 | データ処理を実行 | データ処理を実行 |
最低要件 | 少なくとも1つ必要 | 任意(スケールアウト用に追加可能) |
主な用途 | データの保存と処理を両立 | 負荷分散や一時的な処理能力の向上 |
Gravitionインスタンス
AWSが提供するArmベースのプロセッサを活用したインスタンスタイプで、高性能かつ低コストでスケーラブルなデータ処理を可能。ETLやデータ分析などの分散処理に最適。
Hiveメタストア
Apache Hiveがデータクエリや管理に利用するメタデータ(スキーマ情報)を管理するデータベース。HiveをAmazon EMR上で使用する際に、Hiveメタストアが必要。
Kinesis Data Streams
主な違いの比較表
特徴 | Kinesis Data Streams | Kinesis Data Firehose |
---|---|---|
目的 | リアルタイムデータストリーミング処理 | データの収集・変換・ターゲットへの配信 |
データ処理の柔軟性 | ユーザーがカスタムコードでデータ処理を実装 | シンプルなデータ収集・配信に最適 |
リアルタイム性 | 高度なリアルタイム処理が可能 | 近リアルタイム(1分以上のバッチ処理) |
配信先 | ユーザーが独自に処理して任意の配信先を設定 | S3、Redshift、Elasticsearch、OpenSearchなどの統合先 |
データ保持期間 | 最大7日間(デフォルト24時間) | データは即時処理され、保持されない |
スケーラビリティ | シャード単位でスケールアウト可能 | 自動スケーリング(管理不要) |
コストモデル | シャード数とデータ量に基づく従量課金 | データ転送量と処理に基づく従量課金 |
ユースケース | 高頻度データのリアルタイム分析 | シンプルなデータ収集とストレージ連携 |
使い分けの表
シナリオ | 推奨サービス |
---|---|
高頻度でリアルタイムにデータを処理したい | Kinesis Data Streams |
データをストレージや分析ツールに簡単に送信したい | Kinesis Data Firehose |
過去のデータを再処理したい | Kinesis Data Streams |
バッチ処理で十分な近リアルタイム分析をしたい | Kinesis Data Firehose |
デスティネーションデータストリーム
データストリーム間でデータを転送し、リアルタイム処理の分岐や複数の用途に対応するための仕組み
データ処理パイプラインを簡潔に構築するのに役立つ
Amazon Redshiftとの連携
Amazon Redshiftで外部スキーマを作成し、Kinesis Data StreamsからRedshiftオブジェクトにマッピングする
Step Functions
Step Functionsのステートの種類
ステートの種類 | 説明 |
---|---|
Task | 特定のタスク(例: Lambda関数、Batchジョブなど)を実行する。 |
Choice | 条件に基づいて次のステートを選択する。 |
Parallel | 複数のタスクを並列で実行する。 |
Map | 配列データに対して並列処理を実行する。 |
Wait | 指定した期間または日時まで処理を待機する。 |
Succeed | ワークフローを成功状態で終了する。 |
Fail | ワークフローを失敗状態で終了する。 |
Pass | データをそのまま渡し、処理を行わず次のステートに進む。 |
CloudWatch Logs
サブスクリプションフィルター
ログデータをリアルタイムで別のサービスにストリーミングするための仕組み。
サブスクリプションフィルターを設定することで、特定のログデータをフィルタリングし、AWS Lambda、Amazon Kinesis Data Streams、Amazon Kinesis Data Firehoseなどのターゲットに送信できます。
Amazon EBS
##インプレースアップグレード
中断なく変更可能
Amazon AppFlow
- ノーコードでデータフロー構築:
プログラミング不要でデータの転送フローを設定可能。
GUIベースで直感的に利用。 - データの双方向同期:
SaaSアプリ(例: Salesforce、SAP、Google Analyticsなど)とAWSサービス(例: S3、Redshift)間でデータを移動。 - リアルタイムおよびスケジュール転送:
データフローをオンデマンド、スケジュール、またはイベント駆動で実行可能。 - データ変換とフィルタリング:
データ転送中に簡単な変換(マッピングやフィルタリング)を実行。 - セキュリティとコンプライアンス:
データはTLSで暗号化され、AWS Key Management Service (KMS) を利用可能。
Amazon RDS
Performance Insights
既存の Amazon RDS モニタリング機能を拡張して、データベースのパフォーマンスを明確にし、分析しやすくする。
QuickSight
適切なアクセス権限設定、データ複合化権限(KMS)が必要
Amazon SageMaker Studio
AWSが提供する統合開発環境(IDE)で、機械学習(ML)のライフサイクル全体を簡素化および効率化するためのツールです。
データの準備、モデルのトレーニング、チューニング、デプロイ、モニタリングといった一連のプロセスを、一つの統一されたインターフェースで管理できます。
Apache関連
Apache Hive
大規模データをSQLライクなクエリ言語(HiveQL)で処理・分析するためのデータウェアハウスフレームワークです。
主にHadoop分散ファイルシステム(HDFS)上のデータを対象とし、バッチ処理に適したデータ分析を効率的に実行できます。
Apache Spark
高速で汎用的な分散データ処理フレームワークです。
大規模データのバッチ処理、リアルタイムストリーミング処理、機械学習、グラフ計算などを効率的に実行できます。
HadoopのMapReduceに比べて、メモリ内処理を活用して数倍の速度を実現します。
Apache Parque
大規模なデータ処理に最適化されたカラム指向のデータストレージ形式です。
データ分析や分散処理を効率的に行うためのフォーマットで、Hadoopエコシステム(Spark、Hive、Prestoなど)やAWSサービス(Athena、Redshift Spectrum、Glueなど)で広く使用されています。
Apache Ranger
ビッグデータ環境におけるセキュリティとアクセス制御を一元管理するフレームワークです。Hadoopエコシステム(Hive、HBase、Kafka、YARNなど)のデータリソースに対して、きめ細かいアクセス制御ポリシーを設定し、監査を実施するためのツールです。
その他
PartiQL(パーティーキューエル)
AWSが開発したクエリ言語で、SQLを拡張したものです。
特に、構造化データ(リレーショナルデータ)と非構造化データ(JSONやNoSQLデータなど)を一貫した方法で操作することを目的としています。
SQLと互換性があり、学習コストが低いのが特徴です。
Discussion