В приведенном ниже json-файле .Principal.AWS содержит значение в одном и массив значений в другом. Если это массив, я использую объединение для объединения значений, а затем для объекта я получаю ошибку
jq: error (at stackflow.json: 46): невозможно перебрать строку ("arn: aws: ia. ..)
Я пробовал jq, даже используя if type = "array", но получая ошибку.
E:\python_test>jq-win32.exe -r ".RoleName + \" \" + (.AssumeRolePolicyDocument.Statement[] | select (.Principal.AWS? != "null") | (.Principal.AWS |join (\"###\")) ) " stackflow.json
allow-test-account-to-hostedzones arn:aws:iam::426544XX7585196:root###arn:aws:iam::640XXX556689289:root
jq: error (at stackflow.json:46): Cannot iterate over string ("arn:aws:ia...)
{
"RoleName": "AccessKeyRotation-LambdaRole",
"AssumeRolePolicyDocument": {
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
}
{
"RoleName": "allow-test-account-to-hostedzones",
"AssumeRolePolicyDocument": {
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::426544XX7585196:root",
"arn:aws:iam::640XXX556689289:root"
]
},
"Action": "sts:AssumeRole"
}
]
}
}
{
"RoleName": "allow-test-env-access-to-route53",
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::445666XX779289:root"
},
"Action": "sts:AssumeRole"
}
]
}
}
Ожидаемый результат
allow-test-account-to-hostedzones arn:aws:iam::426544XX7585196:root###arn:aws:iam::640XXX556689289:root
allow-test-env-access-to-route53 arn:aws:iam::445666XX779289:root