jqでCloudTrailのJSON形式ログからCSV形式で抽出する方法
以下は、AWSのCloudTrailから取得したイベントログの抜粋です。
{
"Records": [
{
"eventTime": "2018-01-01T01:11:11Z",
"eventName": "StartInstances",
"responseElements": {
"requestId": "r-111",
"instancesSet": {
"items": [
{
"instanceId": "i-0XXX",
"currentState": {
"code": 0,
"name": "pending"
},
"previousState": {
"code": 80,
"name": "stopped"
}
},
{
"instanceId": "i-0YYY",
"currentState": {
"code": 9,
"name": "pending"
},
"previousState": {
"code": 80,
"name": "stopped"
}
}
]
}
}
}
]
}
上記から、イベントが発生した日時とイベント名、インスタンスIDとcurrentStateのcodeをCSV形式で抽出する際、以下のような形式にしたいです。
eventTime, eventName, instanceId, code
2018-01-01T01:11:11Z, StartInstances, i-0XXX, 0
2018-01-01T01:11:11Z, StartInstances, i-0YYY, 9
ただし、responseElements.instancesSet.itemsの配下は1~N個の要素であり、インデックスを決めうちできないことがわかっています。
type event_history.json | jq-win64.exe -c -r ".Records[] | [.responseElements.instancesSet.items[] | (.instanceId,.currentState.code)] | @csv"
という方式だと、eventTime,eventNameが取得できないのと、
i-0XXX,0,i-0YYY,9
のようになってしまいます。
なにか方法はありますでしょうか?