DEA / ドメイン1 データの取り込みと変換

データ API (公開と利用)

データ は、データをプログラムから取得・登録するための入り口です。データエンジニアは、外部の API からデータを取り込む (利用する) 側にも、整えたデータを他のシステムへ渡すために API を作る (公開する) 側にも立ちます。また、 や を接続ドライバーなしで操作する Data API も、パイプラインの自動化でよく使います。

Point
  • API = Application Programming Interface は、プログラム同士がやり取りする約束ごとです。
  • ページング (pagination) は、大きな結果を複数のページに分けて少しずつ受け取る方式です。
  • 非同期 (asynchronous) の API は、依頼を受け付けた時点で応答を返し、結果は後で取りに行く方式です。
  • 和訳

概要

概要の図 取り込み認証・ページング・レート制限 Redshift Data APIAthena API HTTPS 直接の統合 外部の SaaS・API Lambda・Glue・AppFlow S3・Redshift Lambda 他のシステム API Gateway DynamoDB
立場内容主なサービス
を利用する (取り込み)外部の API を呼んでデータを集める、、、 Scheduler
AWS のデータ API を使う接続を持たずに を投げる Data API、 の API
API を公開するデータを他のシステムから使えるようにする + Lambda / / Athena

主要技術

①外部の API からの取り込み ⚠️ 頻出

課題対処
認証 キーや OAuth のトークンを に保管し、実行時に取り出す。コードや環境変数に平文で書かない
ページング応答に含まれる次のページのトークン (または URL) をたどり、最後まで取得する
レート制限429 が返ったら待つべき時間に従い、で再試行する。呼び出しの速さを制御する
増分の取得更新日時の条件などで、前回からの変更だけを取る。前回の位置を や Parameter Store に記録する
定期実行 Scheduler で を起動。長くかかるなら でページごとに分けて処理
送信元 の許可を求められる 内の Lambda から ゲートウェイの で出る

対応する なら、コードを書かずに で取り込めます。自分でコードを書く場合も、生の応答 () をまず に保存しておくと、後で変換を作り直せます。


②Redshift Data API ⚠️ 頻出

Data は、/ODBC のドライバーや接続の管理なしに、 の API で Redshift へ を実行する仕組みです。

特徴内容
非同期ExecuteStatement で SQL を投げると ID が返る。DescribeStatement で状態を確かめ、GetStatementResult で結果を取る
認証 のシークレット、または ()。パスワードを API の呼び出しに含めない
上限クエリの最大時間は 24 時間、結果は 24 時間保持、結果の最大サイズは 500 MB (圧縮後)
複数の SQLBatchExecuteStatement で順に実行し、既定 (ExecutionMode が TRANSACTION) では1つのトランザクションにまとめ、1つでも失敗するとすべてロールバックする。AUTO_COMMIT にすると SQL ごとに確定する
完了の通知ExecuteStatement で WithEvent を指定すると、SQL の実行が終わったときに へイベントを送れる
ClientToken を指定すると、再試行で同じ SQL が二重に実行されない
セッション既定では呼び出しごとにセッションが閉じ、一時テーブルは次の呼び出しから見えない。SessionKeepAliveSeconds で残したセッションを SessionId で指定して再利用するか、BatchExecuteStatement で同じ実行にまとめる

や から Redshift を操作するとき、ドライバーをパッケージに入れたり、 の接続を管理したりする必要がなくなります。Step Functions は Redshift Data API を直接呼べます。結果の取得には大きさの上限 (圧縮後 500 MB) があるため、大きな抽出は Data API で を実行し、Redshift から へ直接書き出します。

⚠️ 頻出: 「Lambda から Redshift へ SQL を実行したい。接続の管理やドライバーの同梱を避けたい。長いクエリで Lambda を待たせたくない」は Redshift Data API です。


③Athena の API

役割
StartQueryExecutionクエリを開始し、実行 ID を返す (非同期)。ワークグループと結果の出力先を指定
GetQueryExecution状態 (QUEUED、RUNNING、SUCCEEDED、FAILED) を確かめる
GetQueryResults結果をページ単位で取得する (NextToken で続きを取る)

結果は の出力先にも CSV で保存されます。大きな結果は API でページをたどるより、S3 のファイルを直接読む方が効率的です。 は の StartQueryExecution を .sync で呼び、完了まで待てます。

GetQueryResults は1回の呼び出しで最大 1,000 行までしか返さないため、数百万行の結果を API で取ると呼び出しが数千回になります。


④API Gateway でデータを公開する ⚠️ 頻出

④API Gateway でデータを公開する ⚠️ 頻出の図 IAM・Cognito・Lambda オーソライザー サービス統合Lambda なし 利用者 API Gatewayスロットリング・使用量プラン Lambda DynamoDB・Athena・Redshift Data API Kinesis PutRecord・DynamoDB
機能内容
の種類 API (使用量プラン、API キー、、リクエストの検証など機能が豊富)、 API (低コスト・低遅延で機能は絞られている。使用量プラン、API キー、キャッシュ、リクエストの検証はない)
統合Lambda がデータストアを読んで結果を返す
AWS サービス統合Lambda を挟まずに、 から の PutRecord や の操作を直接呼ぶ (REST API)
認証・認可 認証、 のユーザープール、Lambda オーソライザー
アカウントで既定毎秒 10,000 リクエスト (バースト 5,000)。ステージやメソッドごとにも設定
使用量プランと API キー利用者ごとに上限 (毎秒のリクエスト数、1日や1か月の回数) を決める
キャッシュ同じ問い合わせへの応答を一定時間返し、裏側の負荷を減らす (REST API)

API Gateway の統合にはタイムアウトがあるため、時間のかかる分析クエリをそのまま同期で返すのは向きません。クエリを受け付けて ID を返し、結果は後で取りに来てもらう非同期の設計にするか、事前に集計した結果を DynamoDB に置いて素早く返します。

⚠️ 頻出: 「外部から送られるデータを、サーバーを管理せずに受け付けて Kinesis へ入れたい」は、API Gateway の Kinesis へのサービス統合 (または Lambda 経由) です。


⑤公開したデータ API の管理

管理の観点方法
バージョンステージ (dev、prod) とパスのバージョン (/v1/) で互換性を保つ
監視 の (Count、4XXError、5XXError、Latency)、アクセスログ
保護 で不正なリクエストを防ぐ (概要は D4 の章)
大きな結果ページングを実装し、1回の応答を小さく保つ。大きなファイルは の署名付き URL で渡す
デプロイ (、) で と関数をまとめて管理

試験対策

①判断マトリクス

問題文のキーワード選ぶ方法
外部 の認証情報を安全に保管
外部 API の結果が複数ページ次のページのトークンをたどる
外部 API の 429 エラー、呼び出しの速さの制御
対応 からノーコードで取り込み
から へ 、接続管理なしRedshift Data API
SQL の完了で次の処理Redshift Data API の 通知、 の .sync
のデータを API から SQL で問い合わせ の StartQueryExecution / GetQueryResults
データを他のシステムへ で公開 + Lambda
Lambda なしで API から / へAPI Gateway の AWS サービス統合
利用者ごとにリクエスト数の上限使用量プランと API キー
同じ問い合わせが多く裏側の負荷が高いAPI Gateway の
時間のかかる分析を API で提供非同期 (ID を返して後で結果を取る)、事前集計

②よくある誤答

  • キーやトークンをコードや環境変数に平文で書くこと。
  • から へ で接続し、長いクエリの完了を Lambda で待ち続けること。Data API で非同期にします。
  • 数 GB の結果を API の1回の応答で返そうとすること。ページングか の署名付き URL を使います。
  • 外部 API のページングを無視して最初のページだけを取り込むこと。

参考文献

  1. ※1出題比率: AWS 公式の試験ガイドに記載された、採点対象の設問のうちその分野が占める割合です。

検索

キーワードを入力してください