ECR

イメージ更新

ECRリポジトリ 12345.dkr.ecr.ap-northeast-1.amazonaws.com/hogeは、AWSコンソール(ブラウザ上)から作りました

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// dockerビルドする(例: hogeイメージをECRにPush)
$ docker build -t hoge:latest .

// awsログイン
$ export AWS_ACCESS_KEY_ID=xxxxxxxxxxxxxxxxxxxx
$ export AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
$ export AWS_DEFAULT_REGION=ap-northeast-1
$ docker run --rm -e "AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}" -e "AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}" -e "AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION}" mesosphere/aws-cli ecr get-login --no-include-email

// ECRにPush
$ docker tag hoge:latest 12345.dkr.ecr.ap-northeast-1.amazonaws.com/hoge:latest
$ docker push 12345.dkr.ecr.ap-northeast-1.amazonaws.com/hoge:latest

// 例: 動作確認
$ docker run --rm 12345.dkr.ecr.ap-northeast-1.amazonaws.com/hoge:latest python testcase/solo_get_code.py

ECS

タスク定義の更新手順

タスク定義 fargate-hogeは、初回のみAWSコンソール(ブラウザ上)から作りました

1
2
3
4
5
6
7
8
9
10
11
12
// タスク定義のダウンロード
$ aws ecs describe-task-definition --task-definition fargate-hoge > fargate-hoge.json
$ cp fargate-hoge.json fargate-hoge.json.bak

// describe-task-definitionしたタスク定義はそのまま使えないので加工する(※1)
$ cat fargate-hoge.json.bak | jq .taskDefinition | jq 'del(.["status","compatibilities","taskDefinitionArn","requiresAttributes","revision"])' > fargate-hoge.json

// タスク定義の編集
$ vim fargate-hoge.json

// タスク定義の登録
$ aws ecs register-task-definition --cli-input-json file://$PWD/fargate-hoge.json

(※1) 参考: describe-task-definitionで取得したJSONはそのままではregister-task-definitionで登録できないお話 | Developers.IO

タスク実行

クラスタ hoge-clusterやネットワークまわりは、AWSコンソール(ブラウザ上)から作りました

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"taskDefinition": "fargate-hoge:1",
"cluster": "hoge-cluster",
"networkConfiguration": {
"awsvpcConfiguration": {
"subnets": ["subnet-xxxxxxxxxxxxxxxxx"],
"securityGroups": ["sg-xxxxxxxx"],
"assignPublicIp": "ENABLED"
}
},
"launchType": "FARGATE"
}


// タスク実行(--countに起動数)
$ aws ecs run-task --cli-input-json file://$PWD/fargate-hoge.json --count 2 | jq .tasks[].taskArn