AWS
ECS
俺でもわかるシリーズ

ecs-cli 1.6.0が鬼門なので1.7.0以上にしないと無呼吸人生を迎えるハメになる話

俺です。

無呼吸してますか?

未だにecs-cli 1.6.0を使ってる情弱の俺たちはマッハで1.7.0以上にあげましょう。

なぜならv3形式のcomposeファイルを作成した場合,ecs-cli composeで指定するdocker-compose.ymlを環境変数でサクッと環境を切り替えたいという欲望を叶えることができないからです。

https://github.com/aws/amazon-ecs-cli/blob/master/CHANGELOG.md

## 1.7.0

* Feature - Add support for container health check (#472)
* Feature - Add support for devices (#508)
* Bug - Fix error in ps command (#522)
* Bug - Fix error using ENV variables with docker compose v3 (#537)←めっちゃこれが合致


定義ファイル


  • docker-compose.yml

ecs-cli 1.6.0で以下のようなcomposeパラメータを作ってecs-cliを実行すると、

環境変数をセットしてくれません。

version: '3'

services:
api:
image: ${API_ECR}
ports:
- "80:80"
command: sl
env_file:
- .ecs.${SERVICE_ENVIRONMENT}.env
logging:
driver: "awslogs"
options:
awslogs-group: "${SERVICE_ENVIRONMENT}/stdout"
awslogs-stream-prefix: "api"
awslogs-region: "ap-northeast-1"


  • ecs-params.yml

ただしecs-params.ymlの環境変数は読むという...

version: 3

task_definition:
ecs_network_mode: awsvpc
task_execution_role: app
task_size:
cpu_limit: 1024
mem_limit: 2GB
services:
rails:
essential: true
run_params:
network_configuration:
awsvpc_configuration:
subnets:
- ${SECRETSMANAGER_ECS_SUBNET_AZ1}
- ${SECRETSMANAGER_ECS_SUBNET_AZ2}
security_groups:
- ${SECRETSMANAGER_SECURITY_GROUP1}
assign_public_ip: DISABLED

まず使ってる道具のCHANGELOG読めよハゲという話でした。

おわり。