【正解】C
【0からの解説】
Systems Manager Run Command には「レート制御(rate control)」という機能が標準で備わっており、同時実行数(concurrency)の上限を「台数」や「割合(%)」で指定できます。ここで concurrency を 30 に設定すれば、SSM が自動的に一度に最大 30 台ずつコマンドを実行し、それ以上は順番待ちになります。ターゲットはユーザー定義タグで指定できるため、インスタンスが増えても同じタグが付いていれば自動的に対象に含まれます。バッチ分けやコード作成が不要で、AWS のネイティブ機能だけで要件(同時 30 ダウンロード以下、将来の拡張に追従)を満たせるため、最も運用効率が高い C が正解です。
【誤りの選択肢】
A:セカンダリタグで手動で 10 バッチに分け、各バッチを個別に実行する方法は、インスタンスが増えるたびにタグの貼り直しとバッチ再編成が必要で運用負荷が高く、最も効率的とは言えません。
B:Lambda の予約済み同時実行数は Lambda 関数自体の並列起動数を制御するもので、Run Command が一度に実行するインスタンス数(ダウンロード数)を 30 に制限するものではありません。要件を確実には満たせず、Lambda コードの保守も発生します。
C は Run Command のレート制御という標準機能でそのまま要件を満たし、タグ指定で自動拡張にも対応するため最適です。
D:Step Functions のワークフローを自作・運用するのは、Run Command の組み込みレート制御に比べて余計な構築・保守が必要で、運用効率が劣ります。
【参考】
Run Command で同時実行数とエラーのしきい値を制御する(レート制御)AWS Systems Manager Run Command