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
|