ECSでバッチを実行するシステムをつくります。
※今回の記事では、ECRにイメージファイルを登録するところまで
構成図
①CodeCommitにソースを登録する。
CodeBuildeで必要となる、buildspec.yml(ビルドの指示書)が必要となります。
https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/sample-docker.html
version: 0.2
phases:
pre_build:
commands:
- echo Logging in to Amazon ECR...
- $(aws ecr get-login --no-include-email --region $AWS_DEFAULT_REGION)
build:
commands:
- echo Build started on `date`
- echo Building the Docker image...
- docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG .
- docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
post_build:
commands:
- echo Build completed on `date`
- echo Pushing the Docker image...
- docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
⇒内容は、ビルドをして、ビルド結果のイメージファイルをECRに登録するとなっています。
FROM python:3.6.8-alpine3.8
WORKDIR /temp
COPY ./test.py .
CMD [ "python", "./test.py" ]
print("batch execute")
⇒文字列"batch execute"を出力するだけ
②ECRにリポジトリを登録する
リポジトリを登録(test)
パーミッションの設定
(CodeBuildからイメージファイルを登録できるように)
※IAMでしばることもできますが、全員に指定のアクションを許可するようにしています。
③CodeBuildでビルドし、イメージファイルをECRに保存する。
ビルドプロジェクト作成
※ソースは、CodeCommitで登録したものを設定
※環境変数は、buildspec.ymlに設定した変数の値を設定します。
[AWS_DEFAULT_REGION] ※ECRリポジトリのリージョン
[IMAGE_REPO_NAME ] ※ECRリポジトリ名
[IMAGE_TAG ] ※ECRリポジトリのタグ名(ver)
[AWS_ACCOUNT_ID ] ※AWSのアカウントID
ビルドプロジェクトに設定したサービスロールにECRへの操作権限を付与
ビルドを実行すると、ECRにイメージファイルが登録されます。
↓↓↓
今回はここまでとします。