AWS ECS（fargate)+ECR　コンテナでバッチをつくる①　※CodeBuildの設定からECRの設定まで


ECSでバッチを実行するシステムをつくります。
※今回の記事では、ECRにイメージファイルを登録するところまで

# 構成図　
![aa.PNG](https://qiita-image-store.s3.amazonaws.com/0/350277/cfd569e2-350b-c51f-f6e2-a5430d149d72.png)

## ①CodeCommitにソースを登録する。
CodeBuildeで必要となる、buildspec.yml（ビルドの指示書）が必要となります。
> https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/sample-docker.html

![CC1.PNG](https://qiita-image-store.s3.amazonaws.com/0/350277/a4519f12-a7a2-d67d-ff52-809ca30470cc.png)

```buildspec.yml
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に登録するとなっています。

``` :Dockerfile
FROM python:3.6.8-alpine3.8
WORKDIR /temp
COPY ./test.py .
CMD [ "python", "./test.py" ]
```

```test.py
print("batch execute")
```
⇒文字列"batch execute"を出力するだけ


## ②ECRにリポジトリを登録する
リポジトリを登録（test）
![ECR1.PNG](https://qiita-image-store.s3.amazonaws.com/0/350277/1a8a2b61-44fb-e5ee-df68-35a4bec56fb3.png)
パーミッションの設定
（CodeBuildからイメージファイルを登録できるように）
※IAMでしばることもできますが、全員に指定のアクションを許可するようにしています。
![ECR3.PNG](https://qiita-image-store.s3.amazonaws.com/0/350277/32588f5e-1ddb-805b-ed27-84c65072656e.png)
![ECR4.PNG](https://qiita-image-store.s3.amazonaws.com/0/350277/02181d16-c0d9-e60f-7ef6-73ede5847c15.png)
![ECR5.PNG](https://qiita-image-store.s3.amazonaws.com/0/350277/0493e28e-8e32-c4fd-4ce6-9939153f1634.png)

## ③CodeBuildでビルドし、イメージファイルをECRに保存する。
ビルドプロジェクト作成
※ソースは、CodeCommitで登録したものを設定
※環境変数は、buildspec.ymlに設定した変数の値を設定します。
　[AWS_DEFAULT_REGION] ※ECRリポジトリのリージョン
　[IMAGE_REPO_NAME   ] ※ECRリポジトリ名
　[IMAGE_TAG         ] ※ECRリポジトリのタグ名（ver）
　[AWS_ACCOUNT_ID    ] ※AWSのアカウントID

![CB1.PNG](https://qiita-image-store.s3.amazonaws.com/0/350277/8376164e-a172-1b3b-b356-98a6083a3170.png)
![CB2.PNG](https://qiita-image-store.s3.amazonaws.com/0/350277/6d86a07b-c577-0143-aa76-015e68b9677f.png)
![CB3.PNG](https://qiita-image-store.s3.amazonaws.com/0/350277/9c5e2db1-41fb-4424-c3d2-09f5c64ae5c8.png)
![CB4.PNG](https://qiita-image-store.s3.amazonaws.com/0/350277/ab652124-66ed-b85f-8c31-f0d83fb02dd3.png)
![CB5.PNG](https://qiita-image-store.s3.amazonaws.com/0/350277/9b78d014-262c-341f-62bd-72a6ac25e751.png)
![CB7.PNG](https://qiita-image-store.s3.amazonaws.com/0/350277/80ae019a-f502-25b7-912f-12583bc83f39.png)
![CB8.PNG](https://qiita-image-store.s3.amazonaws.com/0/350277/08cfe013-3653-fc95-2cb0-9f0454cecc64.png)
![CB6.PNG](https://qiita-image-store.s3.amazonaws.com/0/350277/8af42709-326b-522f-9699-89517eb6cb45.png)
ビルドプロジェクトに設定したサービスロールにECRへの操作権限を付与
![IAM1.PNG](https://qiita-image-store.s3.amazonaws.com/0/350277/a3ab6142-7f93-e59d-bf6a-140e727662dc.png)
ビルドを実行すると、ECRにイメージファイルが登録されます。
![CBS2.PNG](https://qiita-image-store.s3.amazonaws.com/0/350277/cd19f0e5-b611-a769-0f9b-6ea445ef2601.png)
![ECR6.PNG](https://qiita-image-store.s3.amazonaws.com/0/350277/0fbaeb4c-19de-ac83-42a0-c848d2d761af.png)

↓↓↓
今回はここまでとします。

▼次の記事へ
[AWS ECS（fargate)+ECR　コンテナでバッチをつくる②　※ECSの設定からバッチ実行まで](https://qiita.com/t20190127/items/a02dbfb3502be95ccdf0)