簡體   English   中英

使用jq將AWS JSON輸出轉換為CSV

[英]Converting AWS JSON output to CSV using jq

我正在研究將我的AWS安全組和實例結合在一起的腳本,因此我可以擁有一個類似Excel / CSV格式的合並列表:

Security Groups | Security Group Name | Instances | Rules | Source
SG1             | GroupName           | Instance1 | :80   | 0.0.0.0\0
                |                     | Instance2 | :443  | 0.0.0.0\0

請注意,我是jq的新手,真的只是在黑暗中摸索。

我使用一系列API調用和jq格式化數據,但最后一個字符串的格式為平面json。

我的劇本:

#!/bin/bash

### Get ALL data for all Instances
all_instances=$(aws ec2 describe-instances \
--query 'Reservations[].Instances[]' \
--profile dev)

### Get Only the Instance ID's
instanceids=$(aws ec2 describe-instances \
--query 'Reservations[].Instances[].InstanceId' \
--output text \
--profile dev)

### Get all data from Security Groups
all_securitygroups="$(aws ec2 describe-security-groups --profile dev)"

### Match the Instances to the SG's, and pull the IP Rules as well
for instance in $instanceids; do
instance_sgids=$(echo $all_instances|jq -r "map(select(.InstanceId == \"$instance\"))[].SecurityGroups[].GroupId")
  for sg in $instance_sgids; do
    rules=$(echo $all_securitygroups|jq -r "map(select(.[].GroupId == \"$sg\"))[]" )

### Convert that silly Json to beautiful csv...
newrules=$(echo $rules|jq --compact-output --raw-output '{SGID: .[].GroupId, Description: .[].Description,Protocol: .[].IpPermissions[].IpProtocol, Port: .[].IpPermissions[].FromPort, CIDR: .[].IpPermissions[].IpRanges[].CidrIp} | flatten | @csv')

#flattenrules=$(echo $rules|jq -r [{ .Description } + (IpPermissions[] | { FromPort } + (IpRanges[] | {CidrIp}))])

echo "SecurityGroup, Name, Port, Source" > ~/Documents/output.csv
echo "$newrules" | sort | uniq >> ~/Documents/output.csv

  done
done

這讓我如此接近,但是我似乎無法弄清最后一站。 我有實例ID,現在我擁有所有SG信息。 我的問題現在正在尋找一種以上述格式輸出的方法...

我知道我可能缺少一些簡單的東西,但是如果您有任何jq / shell專家可以為我指明正確的方向,那我將不勝感激。 我在這里看到了其他問題,這些問題提到使用Perl和其他語言,但是我真的很想把它保留在jq / shell中。

提前致謝!

這是很難做太多沒有一些實際的數據,但這個答案類似的問題從輸出端產生一個報告

aws ec2 describe-security-groups --group-ids sg-0000001 sg-0000002

也許有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM