☕️
ecspresso advent calendar 2020 day 12 - render
Amazon ECS のデプロイツールである ecspresso の利用法をまとめていく ecspresso Advent calendar 12日目です。
設定ファイルと定義ファイルをレンダリングする render コマンド
5日目のテンプレート記法の項で説明したとおり、ecspresso で使用する設定ファイルとサービス・タスク定義ファイルは純粋な YAML や JSON 形式ではなく、テンプレート機能を持っています。
render コマンドを使用すると、実際に ecspresso が各種ファイルを読み込んでテンプレートを評価し、YAML/JSON をパースして内部の構造体に読み込んだ状態を出力して確認できます。複雑なテンプレートを記述した場合に、意図したとおりの評価結果になっているかを確認するのに便利です。
render コマンドの使用例
設定ファイルはYAML形式、定義ファイルはJSON形式で標準出力に出力されます。
$ ecspresso render --config config.yaml --config-file
region: ap-northeast-1
cluster: ecspresso-demo
service: nginx-service
service_definition: ecs-service-def.json
task_definition: ecs-task-def.json
timeout: 10m0s
plugins: []
appspec: null
$ TAG=latest ecspresso render --config config.yaml --task-definition
{
"containerDefinitions": [
{
"command": [],
"cpu": 256,
"entryPoint": [],
"environment": [
{
"name": "FOO",
"value": "BAR"
}
],
"essential": true,
"image": "nginx:latest",
"links": [],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "/ecs/first-run-task-definition",
"awslogs-region": "ap-northeast-1",
"awslogs-stream-prefix": "ecs"
}
},
"memoryReservation": 512,
"mountPoints": [],
"name": "nginx",
"portMappings": [
{
"containerPort": 80,
"hostPort": 80,
"protocol": "tcp"
}
],
"volumesFrom": []
}
],
"cpu": "0.25 vCPU",
"executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole",
"family": "first-run-task-definition",
"memory": "512",
"networkMode": "awsvpc",
"placementConstraints": [],
"requiresCompatibilities": [
"FARGATE"
],
"taskRoleArn": "arn:aws:iam::123456789012:role/ecsTaskRole",
"volumes": []
}
render コマンドのオプション
usage: ecspresso render [<flags>]
render config, service definition or task definition file to stdout
Flags:
--help Show context-sensitive help (also try --help-long and --help-man).
--config=CONFIG config file
--debug enable debug log
--color enable colored output
--service-definition render service definition
--task-definition render task definition
--config-file render config file
--config-file
設定ファイルを出力します。
--service-definition
サービス定義を出力します。
--task-definition
タスク定義を出力します。
13日目は、サービスではなく単発のタスクをECSクラスタ上で実行する方法について説明します。
Discussion