AWS DEA-C01 勉強メモ
公式練習問題集
AWS Skill Builder で無料で公開されている公式練習問題集を解いて得た知識メモ。
SQS
キューを削除できるイベント
- DeleteMessage API コールを実行する
- maxReceiveCount がメッセージの最大受信数に達する
- キューがパージされる
- キュー自体を削除するのではなく、キューのすべてのメッセージが削除される
MemoryDB
Redis エンジンを実行するインメモリデータベース。
Redshift Spectrum
Amazon Redshift から S3 のデータにアクセスしたりクエリしたりできる。
Redshift Spectrum を使用して S3 Glacier Instant Retrieval または S3 Glacier Deep Archive のデータにアクセスしたりクエリを実行したりすることはできない。
Redshift SUPER データ型
Redshift の他のスカラー型をすべて含む一連のスキーマレス配列と構造体の値。
SUPER オブジェクトごとに最大 16 MB のデータをサポートする。
Redshift は PartiQL 構文を使用しながら SUPER 配列を反復処理する。
Lake Formation
S3 上のデータレイクデータと Glue Data Catalog の関連メタデータに対するきめ細かなアクセスコントロールを管理できる。
Amazon AppFlow
SaaS (Software as a Service) サービスからデータを取り込み、データを変換して Amazon S3 または Amazon Redshift に書き込んだり、他の SaaS サービスに書き込んだりする。
Domain 1 Review: AWS Certified Data Engineer - Associate (DEA-C01 - 日本語)
AWS Skill Builder で無料で公開されているDomain 1 Review: AWS Certified Data Engineer - Associate (DEA-C01 - 日本語)を視聴して得た知識メモ。
Amazon Managed Service for Apache Flink
旧 Amazon Kinesis Data Analytics。ストリーミングソースからデータを読み取り、SQL ステートメントまたは Apache Flink コードを使用してストリームの分析を実行する。
Amazon Kinesis Video Streams
ストリーミング動画、音声ストリーム、その他の時系列データ (熱画像やレーダーデータなど) を処理する。
Amazon Kinesis Agent
ファイルからデータを読み込み、Kinesis Data Streams または Kinesis Data Firehose を使用してストリームに書き込む。
Amazon Managed Streaming for Apache Kafka (Amazon MSK)
既存の Apache Kafka クラスターを置き換えることができる。
Kinesis はサーバーレスであり、データスループットに対してのみ課金されるため、新しいソリューションには Kinesis の方が適している場合がある。
MSK では、クラスター経由でデータを送信するかどうかにかかわらず、クラスターの料金が発生する。
AWS Transfer Family
一般的なファイル転送プロトコルを使用して Amazon S3 にファイルを直接転送する場合に使用できる。
File Transfer Protocol (FTP) プロトコルと Secure File Transfer Protocol (SFTP) プロトコルを使用してデータを取り込む必要がある場合に選択する。
AWS DataSync
既存のオンプレミスのストレージシステムからデータを取り込むことができる。
NFS や SMB (サーバーメッセージブロック) などの一般的なプロトコルをサポートしている。
バッチデータの取り込み
Amazon EMR
一般的な Hadoop フレームワークのデプロイに使用でき、一部のツールはデータベースからデータを取り込むために使用できる。
例えば、Amazon EMR で Spark を実行し、Java Database Connectivity (JDBC) ドライバーを使用してリレーショナルデータベースに接続し、データレイクにデータをロードできる。
AWS Glue
フルマネージド型の ETL サービスであり、JDBC ソースに接続できる。
さまざまなデータベースエンジンに接続でき、それらの接続を介してさらに処理するためにデータを転送できる。
異なるデータストアやデータストリーム間でのデータの処理、改善、移行に役立つ。
AWS Glue Studio
ETL ワークフローを視覚的に開発、実行、モニタリングできる。
バックオフレート
Step Functions では、バックオフレート値を指定して再試行の間隔にこの値を乗じた時間分再試行を延期できます。再試行の間隔を 10 秒間、バックオフレートを 1.5 に指定したとします。Step Functions は 10 秒間待機します。2 回目の再試行では、Step Functions は 15 秒間待機します。3 回目の再試行では、22.5 秒待機する、というように機能します。
AWS DataPipeline
指定した間隔で AWS データソースとオンプレミスデータソース間でのデータの抽出、変換、ロードができます。
データが保存されている場所に定期的にアクセスして、データの大規模な変換と処理を実施し、その結果を Amazon S3、Amazon RDS、Amazon Redshift、DynamoDB、Amazon EMR などの AWS のサービスに転送できます。
オンプレミスのデータベースなど他の JDBC データストアへの読み取りと書き込みもできる。
SQL と Spark
■ SQL の強み
SQL は標準的で歴史が長く、広く認知・使用されている言語である。
特に Amazon Redshift のように、データ変換の処理対象がデータウェアハウス内にある場合は SQL が適している(ELT 型の処理)。
■ Spark の強み
Spark はコードベースのデータ変換を可能にし、高度で柔軟な処理ができる。
レイテンシー、スループットなどの複雑なデータ処理要件がある場合に適している。
Spark SQL を使えば SQL の構文を使いつつ、データウェアハウス外(Spark クラスター)で変換処理を行える。
■ 選択の基準
環境が SQL 中心なら → SQL を使う方が自然で効率的。
複雑・高性能な処理が求められるなら → Spark の使用が適切。
Spark 側で変換を行う構成では、ETL 形式になり、Redshift はクエリ応答専用に集中できる。
AWS で Spark ジョブを実行する方法
Spark Streaming を使うと、データの一括処理またはほぼリアルタイムでの処理ができます。Spark SQL を使うと、標準 SQL と Spark ML を使用してデータを処理し、機械学習手法をデータに適用できます。Spark ジョブを AWS Glue で実行し、Spark をサーバーレスで実行することもできます。Amazon EMR ではマネージドサービスを使用してSparkを実行するクラスターをデプロイできます。Amazon Elastic Container Service (Amazon ECS) と Amazon Elastic Kubernetes Service (Amazon EKS) を使って、Spark エンジンをコンテナ化された環境で実行したり、DataBricks などの AWS パートナーのマネージドサービスを使用したりもできます。
Athena がどのような列名をサポートしているか
英数字とアンダースコアから成る列名をサポートします。
スラッシュ、スペース、ピリオドなどの特殊文字はサポートしていません。
例えば、列名 /var/log は var_log または varlog に名前を変更します。
Domain 2 Review: AWS Certified Data Engineer - Associate (DEA-C01 - 日本語)
AWS Skill Builder で無料で公開されているDomain 2 Review: AWS Certified Data Engineer - Associate (DEA-C01 - 日本語)を視聴して得た知識メモ。
データカタログとは
メタデータリポジトリであり、データの場所、説明、スキーマ、ランタイムメトリクスに関する情報が保存されています。ユーザーはこの一元化された情報を使って、フェデレーションクエリの記述、ETL アクションの実行などができます。
Amazon S3 に中央データレイクがあり、そこで 4 つの AWS アカウントのデータを保持しています。データレイクに対するロールベースのアクセスを制御して、各ビジネスユニットが引き続き自身のデータにのみアクセスできるようにする必要があります。どのようなソリューションになりますか。
4 つの AWS アカウントそれぞれにデータレイクストレージを構築し、Lake Formation を使用して複数のアカウントのデータを中央データレイクアカウントにカタログ化します。その後、Lake Formation サービスにリンクされたロールを使用して各アカウントのS3バケットポリシーを更新し、Lake Formation のアクセス許可を使用して、より具体的なアクセスを許可します。Lake Formation では、データカタログのメタデータと、基盤となるデータに対するクロスアカウントアクセスを設定できます。

試験では、メタデータのコンポーネントとデータカタログのコンポーネントを理解しておく必要があります。
メタデータコンポーネントには次のものが含まれます。データ型、フィールド名、フィールド間の関係など、データの構造を説明するスキーマ情報、データセット内のさまざまな属性のデータ型を指定するデータ型情報、データベース、データレイク、データウェアハウスなど、データの起源を示すデータソース情報、作成時間、変更時間、その他の関連する時間の情報を記録するタイムスタンプ。データの正確性、完全性、一貫性に関する詳細を提供するデータ品質メトリクス、誰がデータを所有し、誰がデータにアクセスできるかを定義するデータの所有権とアクセスコントロール。
データカタログコンポーネントには次のものが含まれます。テーブルとデータベース、列名、データ型、その他のプロパティなど、データの構造を定義するテーブルスキーマ。データカタログによって保存され、クエリをより効率的に実行できるようにするパーティション化情報。AWS Glue では、データリージョンなどの特定の条件に基づいてデータをパーティション化できます。場所やストレージに関する情報もデータカタログによって記録されます。例えば S3 バケットパスやデータベースエンドポイントなどです。統計とメタデータのクローリングは価値ある情報をデータカタログに入力します。AWS Glue クローラーは自動的にデータを検出し、さまざまなソースからメタデータを収集します。データリネージと依存関係情報はトラッキングでき、さまざまなデータセットと処理ステップ間でのデータの流れを把握できます。タグ付けとラベルを使用すると、特定の条件に基づいてデータを分類、検索できます。アクセスコントロールポリシーは権限のあるユーザーとアプリケーションのみが特定のデータセットを表示または操作できるようにします。そのデータを使用するユーザー向けに、データ分析ツールやビジネスツールと統合できます。

特定のタイムスタンプ以降に自動的にテーブルから項目を削除する場合に使用できる AWS のサービスの機能は何ですか。
DynamoDB には有効期限 (TTL) 機能があり、有効期限のあるデータの管理や古いデータのクリーンアップに使用できます。
Amazon Managed Streaming for Apache Kafka クラスターに送信、処理され、その後 Amazon Redshift に保存されるデータがあります。データは長期間保存されており、Amazon Redshift クラスターのクエリパフォーマンスに問題が発生するようになりました。一部のメンテナンスタスクの完了にも時間がかかっています。
データに決められた保持期間がある場合、そのデータを一連の時系列テーブルとして整理できます。各テーブルの定義は同じですが、時間範囲が異なるデータを含めるようにします。その上で、古いテーブルに対して DROP TABLE コマンドを実行すれば、古いデータを削除できます。
SageMaker ML Lineage Tracking
SageMaker でトレーニングジョブとモデルデプロイを適切に設定すると、ML Lineage Tracking を選択できるようになります。ML Lineage Tracking が有効になると、SageMaker はトレーニングデータとモデルアーティファクトに関するメタデータを自動的にトラッキングして取得します。このメタデータには、入力データ、出力モデル、ハイパーパラメータ、その他の機械学習ワークフローに関連する詳細情報が含まれます。
SageMaker ML Lineage Tracking は、トレーニングデータに適用されたデータの処理ステップと変換も記録します。このような情報はすべて、トレーニングデータのリネージの確立と再現性の確保に役立ちます。SageMaker ML Lineage Tracking は、モデルアーティファクトと予測時に使用される推論データもトラッキングできます。この機能により、機械学習ライフサイクル全体を通してリネージを確立できます。
AWS Schema Conversion Tool
データベースエンジンから別のデータベースエンジンにデータベーススキーマを変換する際に役に立ちます。
AWS SCT は評価を行ってスキーマとコードの問題を特定し、変換プロセス時にその問題に対処する方法についてのガイダンスを示します。AWS SCT はデータ型のマッピング、ストアドプロシージャの変換、インデックスの変換などスキーマ変換の多くのプロセスを自動化し、移行プロセスを合理化します。
Domain 3 Review: AWS Certified Data Engineer - Associate (DEA-C01 - 日本語)
AWS Skill Builder で無料で公開されているDomain 3 Review: AWS Certified Data Engineer - Associate (DEA-C01 - 日本語)を視聴して得た知識メモ。
Amazon Managed Workflows for Apache Airflow (MWAA)
Apache Airflow を提供するマネージドサービスであり、複雑なワークフローをオーケストレーションするオープンソースプラットフォームです。Amazon MWAA では、Apache Airflow ワークフロー管理機能を使用してデータパイプラインを作成、スケジューリング、モニタリングできます。
Apache Airflow ではデータワークフローを表す DAG を定義できます。各 DAG は依存関係のある一連のタスクを表し、これらのタスクには Spark ジョブ、AWS Glue ジョブ、AWS Batch ジョブのほか、パイプラインの一部として実行される必要があるタスクがあります。MWAA を使用することで、Apache Airflow クラスターをデプロイしてスケーリングでき、Apache Airflow をセットアップして管理するプロセスを簡素化できます。
データ集約
データ集約では複数レコードのデータを単一の値に集約または結合します。
Amazon Redshift では、SQL クエリでsum、average、count などの集約関数を使用して、Amazon Redshift データウェアハウスに保存された大規模なデータセットに対するデータ集約を実行します。
Athena を使うと、Amazon S3 に保存されているデータに対して SQL クエリを実行したり GROUP BY や集計関数を使ってデータ集約を実行したりできます。Amazon OpenSearch Service には日付ヒストグラムや用語集約などのさまざまな条件に基づいてデータを集約する強力な集約機能があります。
移動平均
移動平均は特定のウィンドウまたは期間内の値の平均を計算します。データの変動を平準化する際に役に立ちます。
Amazon Redshift では適当なウィンドウを指定して average などのウィンドウ関数を使用し、移動平均を計算できます。QuickSight には視覚的に移動平均を計算できる移動計算機能が組み込まれています。
グループ化
グループ化では特定の属性またはフィールドに基づきデータをグループ化します。通常、このオペレーションはデータ集約の後、Amazon Redshift、Athena、QuickSight がサポートしているグループ化と組み合わせて使用されます。
Amazon Redshift では、SQL クエリで GROUP BY 句を使用してデータをグループ化できます。Athenaはデータのグループ化で GROUP BY 句をサポートしており QuickSight ではディメンションと集約を使用して視覚的にデータをグループ化できます。
ピボット操作
ピボット操作ではデータを行から列に変換します。このオペレーションはレポート作成のためにデータを再形成する場合に便利です。
Amazon Redshift では SQL クエリで PIVOT 句を集約関数と合わせて使用してデータをピボット操作できます。また、QuickSight ではピボットテーブルと可視化を作成してデータをピボット形式で表示できます。
Amazon DocumentDB
フルマネージドの NoSQL データベースサービスで、Mongo DB と互換性があります。SQL のようなクエリを使ってデータを操作できます。
Amazon Redshift のワークロード管理(WLM)キュー
Amazon Redshift では、クラスターに関連付けてパラメータグループを作成しワークロード管理キューのスケーリングを設定できます。これにより高速で実行されるクエリが長時間実行されるクエリの後になってキューに滞留することがなくなります。
Amazon Managed Service for Apache Flink のランダムカットフォレストによるリアルタイム異常検出
ランダムフォレスト関数を使用すると、異常を検出しアラートを送信できます。
ランダムカットフォレスト (RCF) は、異常検出のユースケースで広く使用されているアルゴリズムの 1 つです。一般的には、入力データに対して RCF アルゴリズムを高いスループットで実行したい場合が多く、ストリーミングデータ処理フレームワークはそのようなケースで役立ちます。
Kinesis Data Firehose の再試行
Kinesis Data Firehose では、データの配信中または処理中にエラーが発生した場合、設定された再試行時間の有効期限が切れるまで再試行します。データが正常に配信される前に再試行時間が終了すると、Kinesis Data Firehose は設定された S3 バックアップバケットにデータをバックアップします。送信先が Amazon S3で配信が失敗した場合や、バックアップ S3 バケットへの配信が失敗した場合は、Kinesis Data Firehose は保持期間が終了するまで再試行します。一般的なエラーには特定のサービスへのデータ配信不可やさまざまなストリームエラーなどがあります。
データプロファイリングとは
データプロファイリングはデータの管理、運用、準備の一環であり、データの分析と調査を行ってその構造、内容、品質に関するインサイトを引き出すプロセスです。このプロセスはデータの特性、構造、パターン、統計を把握するための体系的な調査を伴います。
例えばデータプロファイリングでは欠損値や NULL 値の有無に加えてさまざまなフィールド間のデータ分布を特定します。データの異常、不整合、潜在的なデータ品質の問題を特定することによるデータ品質の評価、データのカーディナリティの評価を行うこともあります。データのパターンを調べ、フィールドやエンティティ間の関係を特定します。データ要素間の共通値、頻度、分布、相関関係を明らかにし最小値、最大値、平均値、中央値、標準偏差などのデータを集計します。
データプロファイリングは、データ品質の向上、データの理解、ガバナンスとコンプライアンスのサポートに役立ちます。データの分布とパターンを理解することでクエリのパフォーマンスを高め、データストレージを最適化できます。
AWS Glue DataBrew
コードを記述せずに分析用にデータをクリーンアップし正規化できる視覚的なデータ準備ツールです。
AWS Glue DataBrew をデータプロファイリングのタスクに使用すると、複雑なコードデータを記述しなくてもデータの探索やプロファイリングができます。DataBrew はデータ統計、頻度分布、データ品質に関するインサイトを自動的に生成し、ユーザーのデータに対する理解を深めます。
データスキュー(Data Skew)
データスキューとは、パーティションやノード間のデータ分布が不均衡な状態を指す言葉で、パフォーマンスのボトルネックやタスク処理時間の増大につながります。スキューに対処し、ワークロードを再分散するには、ダイナミックロードバランシング、データレプリケーションなどの戦略を活用します。
データバケット化
データバケット化はパーティショニングに関連する概念で、パーティション化とバケット化は、Athena がクエリを実行する際にスキャンする必要のあるデータ量を削減する 2 つの方法です。バケット化とは、データセットのレコードをバケットと呼ばれるカテゴリに整理する方法です。このバケットとバケット化の意味は S3 バケットとは異なります。データのバケット化では、プロパティで同じ値を持つレコードは同じバケットに入ります。
Athena エンジンのバージョン 2 は Hive バケットアルゴリズムを使用してバケット化されたデータセットに対応し、Athena エンジンのバージョン 3 は Spark バケット化アルゴリズムにも対応しています。Hive バケット化はデフォルトです。データセットが Spark アルゴリズムを使用してバケット化されている場合は、TBL PROPERTIES 句を使用して bucketing_format プロパティ値を Spark に設定します。
Amazon EMR のスキュー結合最適化機能
結合キー内のデータスキューを自動的に検出して処理します。スキューのあるキーを識別し、データを再分配して結合中の負荷を分散し、操作のパフォーマンスを向上させます。
Domain 4 Review: AWS Certified Data Engineer - Associate (DEA-C01 - 日本語)
AWS Skill Builder で無料で公開されているDomain 4 Review: AWS Certified Data Engineer - Associate (DEA-C01 - 日本語)を視聴して得た知識メモ。
AWS IAM Identity Center
AWS アカウントへのアクセスをワークフォースユーザーに割り当てるためのマルチアカウントのアクセス許可、Security Assertion Markup Language (SAML 2.0) アプリケーションへのシングルサインオンアクセスをユーザーに割り当てるためのアプリケーションの割り当て、または自動的に接続するためのアイデンティティセンターとして、ワークフォースアイデンティティのサインインセキュリティを管理できます。
IAM ロールに必要な2つのポリシー
1 つ目は信頼ポリシーです。これは、誰または何がそのロールを引き受けることができるかを定義します。
2 つ目はアイデンティティベースのポリシーで、ロールを引き受けたユーザーまたはサービスが実行できる内容を定義します。また、リソースに対するアクションがポリシーによって明確に許可されていない場合、AWS のデフォルトの動作ではそのアクションが拒否されることも理解する必要があります。
Secrets Manager ローテーション機能
Amazon RDS、Amazon Redshift、Amazon DocumentDB のデータベース認証情報の自動ローテーションをスケジュールできます。
カスタマイズした Lambda 関数を使用して、API キーや OAuth トークンなどの他のシークレットタイプに拡張することもできます。
IAM Access Analyzer
ポリシーで付与されたアクセス許可を継続的に評価し、お客様の AWS アカウント外からアクセスできるリソースを特定でき、AWS Organizations を使用してポリシーを複数のアカウントに適用できます。
ロールベースのアクセスコントロール (RBAC) または属性ベースのアクセスコントロール (ABAC)
RBAC は、ロールに基づいてリソースへのアクセスを決定します。例えば「デベロッパー」のロールは、ユーザーがデータパイプラインまたはアプリケーション内で開発を実行することを許可します。このアクセスコントロールモデルは、ロールに合わせてアクセス許可が適用されるため、容易に管理できます。ただし、複数のロールにわたって権限を必要とするユーザーがいる場合やロールの定義が難しい複雑なビジネスロジックがある場合、認可が動的パラメータに基づいている場合はどうでしょうか。そのような場合は、ABAC を使用できます。ABAC は属性に基づいてアクセス許可を定義し、IAM ユーザーまたはロールなどの IAM リソース、AWS リソース、環境、さらにアプリケーションステートにタグ付けする認可方法です。IAM プリンシパルには、1 つの ABAC ポリシーまたは複数のポリシーを作成できます。
Lake Formation のタグベースアクセスコントロール
LF タグというカスタムラベルを作成すると、数百あるいは数千のデータベースアクセス許可を管理できます。LF タグを定義して、データベース、テーブル、または列に添付できます。そして分析、機械学習、ETL サービスの全体にわたって制御アクセスを共有して利用します。LF タグを使用すると、数千に及ぶリソースのポリシー定義を少数の論理タグに置き換えて、データガバナンスを確実に拡張できます。例えば、データやメタデータを Amazon S3 やデータカタログに移行せずに、Amazon Redshift などのさまざまなデータソースに保存されているデータセットへのアクセス許可を設定できます。
リージョンで Amazon EMR クラスターを作成し、Amazon EBS ボリュームが暗号化されている場合、ローカルディスクも暗号化されるでしょうか。
いいえ。ローカルディスクは暗号化されませんが、セキュリティ設定でローカルディスクの暗号化を追加するよう選択できます。
暗号化とトークン化
暗号化は、アルゴリズムを使ってプレーンテキストを暗号化テキストに変換するプロセスです。元のプレーンテキストに復号するには、アルゴリズムと暗号化キーが必要です。
トークン化は、データの一部をトークンと呼ばれるランダムな文字列に変換するプロセスです。元のデータと関連して直接的に意味のある値はありません。トークンは元のデータへのリファレンスとして機能しますが、そのデータを取得するためには使用できません。暗号化とは異なり、トークン化では、数学的プロセスを使用して機密情報をトークンに変換することはありません。代わりに、トークン化では、多くの場合トークンボールトと呼ばれる、機密の値とトークンの関係を保管するデータベースが使用されます。その後、ボールト内の実際のデータは多くの場合暗号化によって保護されます。トークン値は、元のデータの代わりとしてさまざまなアプリケーションで使用できます。トークンはそれ自体では意味がなく、トークン化のシステムを使用しない限り、トークンが表すデータにマッピングし直すことはできません。
データウェアハウス内の機密データ保護
Amazon Redshift で動的データマスキング (DDM) を使用すると、データベース内でデータを変換することなく、クエリ時に Amazon Redshift が機密データをユーザーに表示する方法をコントロールできます。テーブルにアタッチすると、その 1 つ以上の列にマスキング表示が適用されます。マスキングポリシーをさらに変更して、特定のユーザー、または RBAC で作成するユーザー定義のロールにのみ適用できます。マスキングポリシーの作成時に条件付き列を使用してセルレベルで DDM を適用することもできます。また、難読化のレベルが異なる複数のマスキングポリシーを表の同じ列に適用して、それらを異なるロールに割り当てることもできます。
AWS CloudTrail Lake
CloudWatch メトリクスをサポートしており、これを使用して、過去 1 時間および保持期間中にイベントデータストアに取り込まれたデータの量に関する情報を確認できます。
Discussion