ECSのtask definitionで複数フィールドでクエリしたいとき


jqのドキュメントと照らし合わせながら見つけました

方法

以下のようにやれば、taskDefinitionArncontainerDefinitionsが両方取れます。
もっといい方法がある気もしますが、、

$ aws ecs describe-task-definition --task-definition task \
--query 'taskDefinition | {
taskDefinitionArn: taskDefinitionArn,
containerDefinitions: containerDefinitions
}'

{
    "taskDefinitionArn": "arn:aws:ecs:ap-northeast-1:xxxxx:task-definition/task:12",
    "containerDefinitions": [
        {
--- 略 ---

配列ぽくとりたいとき

aws ecs describe-task-definition --task-definition task --query 'taskDefinition | [taskDefinitionArn, containerDefinitions]'

おまけ

もともと以下のようにtaskDefinitionを取得してgithub actionsに突っ込んでいたのですが、 resource is not in the state servicesStable というエラーが出ていました。

$ aws ecs describe-task-definition --task-definition task \
--query taskDefinition

以下のようにクエリすることで回避できました。

$ aws ecs describe-task-definition --task-definition task \
--query 'taskDefinition |
{
        ipcMode: ipcMode,
        executionRoleArn: executionRoleArn,
        containerDefinitions: containerDefinitions,
        placementConstraints: placementConstraints,
        memory: memory,
        taskRoleArn: taskRoleArn,
        family: family,
        pidMode: pidMode,
        requiresCompatibilities: requiresCompatibilities,
        networkMode: networkMode,
        cpu: cpu,
        inferenceAccelerators: inferenceAccelerators,
        proxyConfiguration: proxyConfiguration,
        volumes: volumes
}' > task-definition.json