Open martinwenisch opened 4 years ago
ahoj, zahlid jsem zminku na Cesko Digital slacku a zadny PR ani comment nevidim tak snad nedelam neco duplicitne. Nejste prvni kdo tenhle problem resi a vypada to, ze s pouzitim Secret Manageru to nejde jinak nez s tim naucit pracovat tu aplikaci
https://stackoverflow.com/questions/57191835/aws-ecs-how-to-retrieve-specific-key-from-secret-manager https://github.com/aws/containers-roadmap/issues/385
ty moznosti teda vidim tri:
jq
.. tim padem by se musel prepsat Dockerfile, nainstalovat tam jq a vytvorit shell skript ve kterem se vyparsuji a vyexportuji env variables a na konci pusti ten dotnet a ten script zkopirovat do image a nakonci ho pouzit v entrypointu misto toho dotnetu..nejcistejsi mi prijde to prvni reseni
Ahoj, diky Ondreji, variantu (1) bych osobne preferoval. At uz migraci do Parameter Store, nebo rozsekanim v samotnem Secrets Manageru (kolega me na Slacku upozornil, ze i kdyz se tak AWS v UI Consoli tvari, tak Secrets nemusi byt validni JSON, ale jakykoli String).
Ale rozsekani Secrets Manager by vyslo relativne draho oproti Parameter Store.
Zkusim se poptat na stav, jestli se na to nekdo vrhnul, ale zda se, ze je to porad volne a ceka na implementaci.
mas pravdu ted se na to divam, ze do toho plaintext fieldu muzes dat hodnotu a nemit to jako k/v par - tim padem pak ten valueFrom vrati jenom obsah.. pokud vam neva dva/tri dolary mesicne navic tak je to asi nejjednodussi varianta
Problem: V soucasne dobe se vsechny Secrets predavaji do bezicich aplikaci pres environmental variables (token k emailu, Hlidaci statu...). Na AWS jsou ulozene v Secrets Manager a Terraform tento Secrets Manager parsuje. Toto parsovani v Terraformu by bylo potreba odstranit a predat je do env variables kontejneru metodou
valueFrom
.To v soucasne dobe neni mozne, protoze
valueFrom
nedokaze predat hodnotu secret, ale predava secrets jako JSON, coz backend aplikace nedokaze parsovat.Priklad: key:value password:politik123
backend ocekava v env variable hodnotu politik123, ale
valueFrom
preda JSON:Zadani: Je potreba vyzkoumat moznosti predavani Secrets ze Secrets Manager AWS bez jejich parsovani v Terraformu (samotne secrets stringy nebudou zapsane ve state Terraformu).
Pripadne, pokud by se to ukazalo jako jednodussi, upravit backend (C# a Python aplikaci), aby parsovala secrets z formatu, ktery ji preda
valueFrom
.V kazdem pripade je cil odstranit parsovani Secrets primo v ramci Terraformu.
Odkazy:
Soucasny kod parsujici Secrets v Terraformu: https://github.com/cesko-digital/nasi-politici/blob/8923469c3acfc6243fd094760fea94e4270becdd/infrastructure/aws/aws.tf#L65
Dokumentace predavani secrets do ECS: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data-secrets.html