@seo-maru  2021/02/19更新

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/

タイトルとURLをコピーしました