DEA / ドメイン3 データ運用とサポート
SDK と CLI からのサービス操作
概要
AWS は、Python (boto3)、Java、JavaScript などのプログラムから AWS の を呼ぶためのライブラリです。 は、同じ API をコマンドラインから呼ぶ道具です。データパイプラインでは、 や のスクリプトの中から や を操作したり、シェルスクリプトでジョブを起動したりするときに使います。DEA では、SDK でコードから AWS の機能を呼ぶときの、ページネーション、リトライ、非同期の API の扱い、認証情報の渡し方が問われます。
主要技術
① ページネーション
一覧を返す ( の ListObjectsV2、 の GetTables、 の GetQueryResults など) は、1回の応答で返す件数に上限があり (S3 の ListObjectsV2 は MaxKeys を大きくしても 1 回で最大 1,000 件)、続きは NextToken (S3 では ContinuationToken) で取得します。boto3 のページネーター (get_paginator) を使うと、続きの取得を自動で繰り返せます。最初の1ページだけを読んで「全件」と誤解しないことが大切です。CLI は既定で自動的にページングし、--max-items などで制御します。
② リトライとスロットリング
は、や一時的なエラーをで自動的に再試行します。リトライモード (legacy、standard、adaptive) と最大試行回数を、設定ファイルや環境変数 (AWS_RETRY_MODE、AWS_MAX_ATTEMPTS) で変えられます。adaptive モードは、スロットリングを受けたときに送信の速さそのものを抑えます。
③ 非同期の API の扱い
の StartQueryExecution や Data の ExecuteStatement は、実行を開始して ID を返すだけです。GetQueryExecution や DescribeStatement で状態を確かめ、完了したら GetQueryResults や GetStatementResult で結果をページングで取得します。boto3 には、状態が変わるまで待つウェイター (get_waiter) がある API もあります。長い待ちが必要なら、 の中で待たずに に任せます。
④ 認証情報と IAM ロール
コードにを書きません。、、、 では実行ロール (インスタンスプロファイル、タスクロール) のを が自動で使います。開発者の端末では のログイン (aws sso login) や名前付きプロファイルを使い、別アカウントの操作は AssumeRole で一時的な認証情報を得ます。
試験対策
① 選択基準
「一覧の結果が途中までしか取れない」はページネーション、「で の呼び出しが失敗する」はのリトライ (adaptive モード) を考えます。「 の結果を取得したい」は開始・状態確認・結果取得の3段階で読みます。
② 混同しやすい点
などで長期のを環境変数に入れるのは誤りで、実行ロールを使います。CLI と は同じ を呼ぶため、権限の不足は ポリシーで解決します。