AWS Batch
バッチ実行用のサービス。
実態は、ECSを起動してタスクを実行して終了するマネージドなサービス。
起動時のオーバーヘッドがネックだが、それが許容される場合は選択肢。
on EC2の場合、GPUにも対応している。
ECSにジョブキューがついて起動終了が自動化されるイメージ
関連ロール
ロールがいくつかあり整理が必要
サービスロール
Amazon EC2 インスタンスの作成やオートスケーリングポリシーの設定などのバックグラウンドタスクを実行するために必要な権限を持つ、IAM アクセス許可ポリシーを含むロール。
基本的にはAWS Batchを使用開始する際にCLIで作成され、「AWSServiceRoleForBatch」と言う名前で存在し、「BatchServiceRolePolicy」がアタッチされている。
Batch使うときにつくられるつよつよロール
AWSマネージド(BatchServiceRolePolicy)を与えておけば一旦おk
ただしもう一つのマネージド(AWSBatchServiceRole)との用途の違いがまだ分かってない
自作する場合はこちらをアタッチするっぽい。BatchServiceRolePolicyはサービスリンクロールなのでそもそもアタッチできない
インスタンスロール
EC2 インスタンスが自分自身を操作するために必要な権限を持つ IAM ロール
たとえば、EC2 インスタンスから別の AWS サービスにアクセスする場合、インスタンスロールがその権限を提供する
コンテナの文脈だと、コンテナのホスト側のロールであるため、影響範囲が広いロール
実行ロール
AWS Batchがジョブを実行する際にECSタスク実行ロールを指定するもの
AWS Batch がジョブの起動や EC2 インスタンスへのアクセスを実行する権限を持った IAM ロールがこの実行ロールとなる
コンテナエージェントが使うロール
AWSマネージド(AmazonECSTaskExecutionRolePolicy)を与えておけば一旦おk
EC2の場合、実際はEC2上でコンテナエージェントが動作するため、実行ロールに権限がなくても動いたりする。
つまりECSで言うところのタスク実行ロール
ジョブロール
ジョブロールは、ジョブの実行時に実行環境やその他の AWS サービスにアクセスするために必要な権限を持つ IAM ロール
たとえば、ジョブが AWS Lambda を利用する場合、ジョブロールがその権限を提供する
コンテナの文脈だと、コンテナインスタンス側のロールであるため、こちら側にジョブ毎に適切な権限を割り当てる
実際に開発者が権限をいじいじするロール
つまりECSで言うところのタスクロール
でもこちらもインスタンスロールに権限があれば実は問題ない
Last updated