JSON을 CSV로 변환 [닫기]

JSON을 CSV로 변환 [닫기]

JSON 파일:

"UserDetailList": [
{
    "UserName": "ec2-provisioning",
    "GroupList": [],
    "CreateDate": "2017-11-07T14:20:14Z",
    "UserId": "1234556",
    "Path": "/",
    "AttachedManagedPolicies": [
        {
            "PolicyName": "EC2FullAccess",
            "PolicyArn": "arn:aws:iam::aws:policy/AmazonEC2FullAccess"
        },
        {
            "PolicyName": "AmazonS3FullAccess",
            "PolicyArn": "arn:aws:iam::aws:policy/AmazonS3FullAccess"
        }
    ],
    "Arn": "arn:aws:iam::1234567890:user/citrix-xendesktop-ec2-provisioning"
},
{
    "UserName": "read-only-iam-permissions",
    "GroupList": [],
    "CreateDate": "2018-03-09T11:13:38Z",
    "UserId": "AABCDEFGHG6EQ",
    "Path": "/",
    "AttachedManagedPolicies": [
        {
            "PolicyName": "IAMReadOnlyAccess",
            "PolicyArn": "arn:aws:iam::aws:policy/IAMReadOnlyAccess"
        }
    ],
    "Arn": "arn:aws:iam::123456789:user/rundeck-read-only-iam-permissions"
}]

그리고jq -r '.UserDetailList[] | [.UserName] | @csv' output.json > fileout2.csv

내가 얻을 수 있나요?

xendesktop-ec2-provisioning"
"rundeck-read-only-iam-permissions"

이 2명의 사용자에 대한 IAM 정책을 얻으려면 어떻게 해야 합니까? AttachedManagedPolicies에서 AmazonEC2FullAccess 및 AmazonS3FullAccess를 추출해야 합니까?

따라서 출력은 다음과 같습니다.

xendesktop-ec2-provisioning",AmazonEC2FullAccess
xendesktop-ec2-provisioning",AmazonS3FullAccess
read-only-iam-permissions,IAMReadOnlyAccess

답변1

jq해결책:

jq -r '.UserDetailList[] | .UserName as $u 
       | .AttachedManagedPolicies[] | ([$u, .PolicyName] | @csv)' input.json

산출:

"citrix-xendesktop-ec2-provisioning","AmazonEC2FullAccess"
"citrix-xendesktop-ec2-provisioning","AmazonS3FullAccess"
"rundeck-read-only-iam-permissions","IAMReadOnlyAccess"

관련 정보