AWS Batch For Fargateの基本
チュートリアル
https://docs.aws.amazon.com/ja_jp/batch/latest/userguide/Batch_GetStarted.html
独自のDockerコンテナの登録方法
1.リポジトリを作成(AWS > ECR > リポジトリ)
2.ローカルで独自Dockerコンテナを作り、以下手順でイメージを作成
# 作業時のコンテナIDを確認 docker ps # イメージ作成 docker commit コンテナID リポジトリ名
3.ECRにプッシュ (AWS > ECR > リポジトリ「プッシュコマンドの表示」)
https://dev.classmethod.jp/articles/aws-batch-5min-over/
ジョブ定義
ジョブ定義
でジョブの設定を行う。
ここで指定したコマンドが実行される。
注意点
環境変数設定で、 PATH に手元のDockerと同じPATH(echo $PATHの結果)を設定すること
実行ユーザーも、手元のDockerと同じユーザーを指定する
コマンドに変数を持たせる
コマンドにRef::XXXX
を使うことで、パラメーターを差し込むことができる
# ジョブ定義 "command": ["ash", "run.sh", "Ref::Input", "Ref::Output"], # ジョブ送信 aws batch submit-job --parameters Input="s3://input.txt",Output="s3://output.txt" ...
ただし、 Ref::XXXX の前後にテキストがあるとうまく埋め込めない問題があるので、その場合は環境変数を使う
https://qiita.com/aokad/items/aed8034fb087a6bf99c3
イメージの指定
カスタムDockerを使う場合は、ECRリポジトリのイメージURIを指定する
e.g. xxxx.dkr.ecr.ap-northeast-1.amazonaws.com/toybox_web:latest
キューイング方法
@doc https://docs.aws.amazon.com/cli/latest/reference/batch/submit-job.html
aws batch submit-job \ --job-name "mybatch-job-try1" \ --job-queue "${JOB_QUEUE_ARN}" \ --job-definition "${JOB_DEFINITION_ARN}" \ --parameters arg1="foo",arg2="bar"
失敗時のリトライ制御
https://docs.aws.amazon.com/ja_jp/batch/latest/userguide/job_retries.html
https://docs.aws.amazon.com/batch/latest/userguide/job_definition_parameters.html#retryStrategy
デプロイツール
色々ある
https://dev.classmethod.jp/articles/awsdevday2020-deploy-fargate-easily/