【AWS re:Invent2022】AWS BatchでAmazon EKSを使ってみた!
2022.12.07
AWSが主催するクラウドコンピューティング最大のイベント「AWS re:Invent」が、2022年11月28日~12月2日にかけてアメリカのラスベガスにて開催されます。本ブログでは、AWS re:Inventに実際に参加したエンジニアから、イベントの様子やKeynote(基調講演)の現地レポートをいち早くお届けします。
今回は、11/29(火)14:00~16:00(現地時間)に実施されたMaxime Hugue、Angel Pizarroによるワークショップの内容をお伝えします。
AWS re:Invent とは?
re:Inventとは、Amazon Web Services(以下、AWS)が主催するAWSに関するセッションや展示ブース、試験準備のためのブートキャンプやゲーム化された演習などを通じて、参加者が主体的に学習できるAWS最大のイベントです。
昨年も今年同様でラスベガスとオンラインにて開催されており、85以上の新サービスや新機能が発表されました。昨年の参加人数はオンサイト参加者2万人以上、バーチャル参加者は60万人以上になります。
ワークショップの現地レポート(Day2、Maxime Hugue, Angel Pizarro)
今回は11/29(火)14:00~16:00に開催されたData analysis with Amazon EKS and AWS Batchに関するワークショップをリポートします。
公式サイトによるセッション紹介を日本語訳すると、以下のような内容になります。
“このワークショップでは、Amazon EKSを使用して大規模なデータ分析を管理およびスケジューリングするために最近追加されたAWS Batchのサポートを理解することができます。
このハンズオンワークショップでは、AWS Batchの基本的なコンセプトと、AWS BatchがAmazon EKS内で実行されている他のAWSサービスとどのように連携しているかを学びます。このワークショップでは、Amazon EKSクラスターをデプロイし、AWS Batchを活用してポッドを管理し、簡単な機械学習モデルをトレーニングします。参加にはノートPCの持参が必要です。”
登壇者
登壇者はこちらの方です。
会社名 | 登壇者 | 役職 |
---|---|---|
Amazon Web Services |
Maxime Hugue |
Principal HPC Specialist Solutions Architect |
Amazon Web Services | Angel Pizarro | Principal Developer Advocate |
本ワークショップの目的
ワークショップとはハンズオン形式でAWSの機能について学ぶセッションです。
今回は、AWS Batchで2022年10月25日から利用できるようになったAmazon Elastic Kubernetes Service(EKS)を使ってみるという内容でした。
AWS BatchのためのAmazon EKS
マイクロサービスとバッチのワークロードは性質が異なるため、バッチ処理に Kubernetes を使用することが難しく、適切なソリューションを微調整するためのカスタム構成と管理にかなりの時間を費やす必要がありました。
AWS BatchでAmazon EKSを使用することで、バッチ処理ワークフローで使用する Kubernetes クラスターとポッドの構成、微調整、および管理をAWSが負担します。
ハンズオン開始
AWSが用意した環境にログインすることから始まります。参加者にはこのワークショップの時間のみ有効なアカウントが配られました。
また丁寧な解説がついたドキュメントをみながら、手順に沿って進めていきます。
ここからは個人のスピードで進めることができ、わからない場合はたくさんいるスタッフにヘルプを求めます。
環境の構築
AWS Cloud9でコマンドラインを開き、AWS CDKを使用して環境構築します。
ドキュメントにAWS CDKのコマンドが用意されており、それを自身のコマンドラインにコピー&ペーストすることで誰でもできるようになっています。 Amazon EKS用のAWS Batch、AWS Batch用の Amazon EKSをそれぞれ設定します。
ここで私はコマンドラインでeksctlを使用したら、そのコマンドはありませんとエラーが出てしまいました。同様の現象が起きている人が何人かおり、運営から説明がありましたが英語なのであまり理解できませんでした。
他の人が解決していく中、私は解決できず困っていましたが、ドキュメントをよく読んで探すとeksctlのインストールの説明を見つけることができました。
少し遅れて私も無事設定完了することができました。大体はドキュメントに書いてあります。焦りは禁物ですね。他の人も大体同じですが、ここまでのサービスの説明と環境設定で約1時間が経過していました。
ワークショップ演習
演習は3つ用意されていました。
演習ごとに連携するするAWSサービスが異なります。
どの演習も基本的にはバッチのジョブキューを作成し、ジョブを定義し、ジョブを実行するという流れです。
演習1: Hello World
標準出力でHello Worldを出力するようにジョブに定義し、その結果をAmazon CloudWatchで確認する演習です。無事に動作し新しい世界にメッセージを伝えることができました。
ずっとCLIで作成していたので、ConsoleでもAmazon EKS やAWS Batchジョブが作成されているか確認してみました。
演習2: GIFを作成
Amazon S3に4枚の画像をアップロードし、その4枚からGIFを作成するものをAWS Batchで実行するという演習です。
具体的にはGIFを作成するスクリプトとDockerfileを作成します。そのDockerイメージをビルドしECRにアップします。
AWS Batchではタスクを実行するバッチジョブを定義しジョブを送信します。実際のGIFは載せることができませんが、私もGIFを作成することができました。
演習3: EKSの負荷状況をダッシュボードで監視
Piを計算してEKSに負荷をかけ、その状況を外部サービスのダッシュボードで確認する演習です。ここで私に問題が発生してしまいました。
EKSのポッドを複数起動してステータスがrunningになると正常に起動できたことになるのですが、そのうち2つが何分待てどPendingのままでした。
ドキュメントを読み直しやり直しを何回かしてみたのですが、状況は改善されず、ここでタイムアップとなってしまいました。原因は不明のままですが、演習3一度作ったものを一度削除してからやり直すとできただろうと思います。
代わりに見本の写真を載せておきます。本来ならこれを作成するはずでした。
まとめ
AWS BatchでAmazon EKSが使えるようになりまして、それを実際に体験することができました。
演習3まで全部終わることができなかったのは残念ですが、実際に手を動かすことができ、楽しいワークショップでした。ワークショップはそのサービスについて何も知らない状態でも最後までできるようになっています。
reInvent参加の際はぜひ1度足を運んでみてはいかがでしょうか。