Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

aws-cli, bash i jq

[es] :: Skript jezici :: aws-cli, bash i jq

[ Pregleda: 580 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

CoyoteKG

Član broj: 70939
Poruke: 2771



+6824 Profil

icon aws-cli, bash i jq09.03.2020. u 19:09 - pre 12 meseci
Krajnji rezultat koji zelim treba da bude ovakav:

Code:

{
  "IdentityPoolId": "eu-central-1:xxxxxx-xxxx-xxxx-xxxxx-xxxxx",
  "Roles": {
    "authenticated": "arn:aws:iam::yyyyy:role/cognito-authenticated-users",
    "unauthenticated": "arn:aws:iam::yyyyy:role/cognito-unauthenticated-users"
  },
  "RoleMappings": {
    "cognito-idp.eu-central-1.amazonaws.com/eu-central-1_zzzzzzz:7107g4iumghehuhdvi": {
      "Type": "Token",
      "AmbiguousRoleResolution": "Deny"
    },
    "cognito-idp.eu-central-1.amazonaws.com/eu-central-1_zzzzzzz:adlka602a327mk101t": {
      "Type": "Token",
      "AmbiguousRoleResolution": "Deny"
    }
  }
}


A dotle sam dosao ovakvom komandom
aws cognito-identity get-identity-pool-roles --identity-pool-id $IDENTITY_POOL_ID |
jq -c 'del(.RoleMappings)' | jq -c '. += {"RoleMappings"}' |
jq -c ' .RoleMappings += {
"cognito-idp.eu-central-1.amazonaws.com/eu-central-1_zzzzzzz:7107g4iumghehuhdvi": {"Type": "Token", "AmbiguousRoleResolution": "Deny"},
"cognito-idp.eu-central-1.amazonaws.com/eu-central-1_zzzzzzz:adlka602a327mk101t": {"Type": "Token", "AmbiguousRoleResolution": "Deny"}}' |
jq


znaci od ove aws-cli get-identity-pool-roles komande zelim da obrisem postojece RoleMappings i da kreiram nove. Ali zelim da "7107g4iumghehuhdvi" i "adlka602a327mk101t" ubacim iz neke druge komande. Tih stringova moze biti jedan ili vise.

To dobijam sa
$ aws cognito-idp list-user-pool-clients --user-pool-id $USER_POOL_ID | jq -r '.UserPoolClients[] | select(.ClientName | contains("AWSElasticsearch-")) | .ClientId'
7107g4iumghehuhdvi
adlka602a327mk101t


Kako jq da provucem kroz petlju, ili kako da dodjem do onog rezultata?






Ovo je dokle sam dosao i u kom smeru sam isao, ali bezuspesno.

Pokusao sam sa for petljom da smestim ovo
Code:
"cognito-idp.eu-central-1.amazonaws.com/eu-central-1_zzzzzzz:7107g4iumghehuhdvi": {"Type": "Token", "AmbiguousRoleResolution": "Deny"},
"cognito-idp.eu-central-1.amazonaws.com/eu-central-1_zzzzzzz:adlka602a327mk101t": {"Type": "Token", "AmbiguousRoleResolution": "Deny"}

na ovaj nacin i dobijem neki prihvatljivi rezultat

$ COGNITO_IDENTITY_PROVIDERS=`for row in $(aws cognito-idp list-user-pool-clients --user-pool-id $USER_POOL_ID | jq -r '.UserPoolClients[] | select(.ClientName | contains("AWSElasticsearch-")) | .ClientId'); do echo ""cognito-idp.eu-central-1.amazonaws.com/eu-central-1_nOXeInexn:${row}": {"Type": "Token", "AmbiguousRoleResolution": "Deny"},"; done`

$ echo $COGNITO_IDENTITY_PROVIDERS
cognito-idp.eu-central-1.amazonaws.com/eu-central-1_zzzzzzz:7107g4iumghehuhdvi: {Type: Token, AmbiguousRoleResolution: Deny},
cognito-idp.eu-central-1.amazonaws.com/eu-central-1_zzzzzzz:adlka602a327mk101t: {Type: Token, AmbiguousRoleResolution: Deny},


Ali kad to ubacim u petlju, i to prosledim argument iz bash-a u jq ovako
$ aws cognito-identity get-identity-pool-roles --identity-pool-id $IDENTITY_POOL_ID | jq -c 'del(.RoleMappings)' | jq -c '. += {"RoleMappings"}' | jq -c --arg COGNITO_IDENTITY_PROVIDERS "$COGNITO_IDENTITY_PROVIDERS" ' .RoleMappings += {$COGNITO_IDENTITY_PROVIDERS}' | jq
{
"IdentityPoolId": "eu-central-1:xxxxxx-xxxx-xxxx-xxxxx-xxxxx",
"Roles": {
"authenticated": "arn:aws:iam::884799561126:role/cognito-authenticated-users",
"unauthenticated": "arn:aws:iam::884799561126:role/cognito-unauthenticated-users"
},
"RoleMappings": {
"COGNITO_IDENTITY_PROVIDERS": "cognito-idp.eu-central-1.amazonaws.com/eu-central-1_zzzzzzz:7107g4iumghehuhdvi: {Type: Token, AmbiguousRoleResolution: Deny},\ncognito-idp.eu-central-1.amazonaws.com/eu-central-1_zzzzzzz:adlka602a327mk101t: {Type: Token, AmbiguousRoleResolution: Deny},"
}
}

a zeliim da bude onako kao na pocetku posta.

 
Odgovor na temu

plus_minus

Član broj: 289459
Poruke: 2242
*.exe-net.net.

Sajt: https://hardcoder.xyz


+2246 Profil

icon Re: aws-cli, bash i jq09.03.2020. u 19:47 - pre 12 meseci
A zašto to radiš sa tri različita alata kada možeš jednim .. ?

php (najbolju moguću podršku za json ima, ekstremno fleksibilne mogućnosti za rad sa stringovima i nizovima) ili još prostije - python.
about:networking
 
Odgovor na temu

CoyoteKG

Član broj: 70939
Poruke: 2771



+6824 Profil

icon Re: aws-cli, bash i jq09.03.2020. u 19:52 - pre 12 meseci
Nemam drugu opciju trenutno.

Jos sve ovo pokrecem sa terraformom, ali posto je budzevina u pitanju jer tf nema opciju koja mi treba, ovaj jedan resurs pokrecem sa null_ressource
 
Odgovor na temu

plus_minus

Član broj: 289459
Poruke: 2242
*.exe-net.net.

Sajt: https://hardcoder.xyz


+2246 Profil

icon Re: aws-cli, bash i jq09.03.2020. u 20:10 - pre 12 meseci
I ne možeš tom teraformu da daš taj json koji si prethodno napravio `sa strane` tj. na istoj mašini sa koje pristupaš, na normalan način, nego baš moraš direktno na budževini sa `null_resource` ?
about:networking
 
Odgovor na temu

CoyoteKG

Član broj: 70939
Poruke: 2771



+6824 Profil

icon Re: aws-cli, bash i jq09.03.2020. u 20:17 - pre 12 meseci
nisam bas shvatio pitanje.

jasno mi je da sa pajtonom i php se to lakse hendluje. Ali nit znam pajton, nit znam php.
Pri tom na Gitlab CI runneru na kom ce da mi se izvrsava terraform nemam instaliran ni pajton, pogotovo ne php.

OK pajton bih mozda mogao da stavim, ali ipak je moje pitanje kako sa bash i jq.
 
Odgovor na temu

plus_minus

Član broj: 289459
Poruke: 2242
*.exe-net.net.

Sajt: https://hardcoder.xyz


+2246 Profil

icon Re: aws-cli, bash i jq09.03.2020. u 20:40 - pre 12 meseci
Bash razgovara sa kernelom. To mu je primarno, no može još gro drugih stvari. Ali ga nikada ne bih koristio za json, još manje za složenije nizove, mada može i to.

A jq je neka vrsta hypovanog sed-a, koji radi sa jsonom? Onda možeš i samo sa tim, verovatno.

Evo -> https://stedolan.github.io/jq/tutorial/
I ovo -> https://stedolan.github.io/jq/manual/

A moje pitanje se odnosilo na to, da li u tom interfejsu/konzoli/terminalu šta god da je, može hebeni PASTE da prođe? Uzmeš sirovi JSON koji si enkodirao i spakovao u base64 string, a teraform `shvati` da to treba da se base64_decode (dekodira u realnu pravu vrednost) jer, koliko vidim, to je neki retardirani wannabe Artifišl EjAj/automation tool, šta god da je.. koji kontroliše i load balancing na udaljenim lokacijama, valjda može da podrži i ctrl+shift+V ... ali, pošto ne znaš ni sa pitonom a ni sa php-om, a ja ne znam sa teraformom, niti sa jq-om, niti hoću da znam, da budem iskren .. ja ti onda i ne mogu nešto puno pomoći.

Srećno.
about:networking
 
Odgovor na temu

CoyoteKG

Član broj: 70939
Poruke: 2771



+6824 Profil

icon Re: aws-cli, bash i jq09.03.2020. u 21:34 - pre 12 meseci
OK, snasao sam se malo drugacije.
Provukao sam sve zajedno kroz petlju.

Prva iteracija je kreirala prvi RoleMappings key:value i druga opet isto, pri tom je ostala prva.

Ovako


#Dovlacim listu cognito idp klijenata
COGNITO_IDP_CLIENT_IDS=`aws cognito-idp list-user-pool-clients --user-pool-id $USER_POOL_ID |
jq -r '.UserPoolClients[] | select(.ClientName | contains("AWSElasticsearch-")) | .ClientId'`

# od te liste pravim COGNITO_IDENTITY_PROVIDERS koju koristim kasnije u petlji
COGNITO_IDENTITY_PROVIDERS=`for id in $COGNITO_IDP_CLIENT_IDS; do echo "cognito-idp.eu-central-1.amazonaws.com/$USER_POOL_ID:$id"; done`

# brisem sve trenutne namapirane role
CLEAN_CURRENT_ROLE_MAPPING=`aws cognito-identity get-identity-pool-roles --identity-pool-id $IDENTITY_POOL_ID | jq -c 'del(.RoleMappings)'`
aws cognito-identity set-identity-pool-roles --identity-pool-id $IDENTITY_POOL_ID --cli-input-json $CLEAN_CURRENT_ROLE_MAPPING;

# konacna petlja koja mapira jednu po jednu rolu
for provider in $COGNITO_IDENTITY_PROVIDERS;
do
PREPARE_IDP_ROLES_JSON=`aws cognito-identity get-identity-pool-roles --identity-pool-id $IDENTITY_POOL_ID |
jq -c '. += {"RoleMappings"}' |
jq -c ' .RoleMappings += {
"'"$provider"'": {
"Type": "Token",
"AmbiguousRoleResolution": "Deny"
}}'`
aws cognito-identity set-identity-pool-roles --identity-pool-id $IDENTITY_POOL_ID --cli-input-json $PREPARE_IDP_ROLES_JSON;
done
 
Odgovor na temu

[es] :: Skript jezici :: aws-cli, bash i jq

[ Pregleda: 580 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.