To je gostujoča objava v blogu, ki sta jo napisala skupaj s Patrickom Oberherrjem iz Contentfula in Johannesom Güntherjem iz Netlight Consultinga.
Ta objava v spletnem dnevniku prikazuje, kako izboljšati varnost v arhitekturi podatkovnega cevovoda, ki temelji na Upravljani poteki dela Amazon za Apache Airflow (Amazon MWAA) in Storitev Amazon Elastic Kubernetes (Amazon EKS) z nastavitvijo natančnih dovoljenj z uporabo HashiCorp Terraform za infrastrukturo kot koda.
Veliko strank AWS uporablja Amazon EKS za izvajanje podatkovnih delovnih obremenitev. Prednosti Amazon EKS vključujejo različne možnosti računanja in shranjevanja glede na potrebe delovne obremenitve, večjo izkoriščenost virov z deljenjem osnovne infrastrukture in živahno odprtokodno skupnost, ki ponuja namensko izdelane razširitve. The Podatki o EKS Project ponuja vrsto predlog in drugih virov, ki strankam pomagajo pri začetku te poti. Vsebuje opis uporabe Amazon MWAA kot načrtovalec opravil.
Vsebinsko je stranka AWS in partner AWS Partner Network (APN). V zakulisju svojega izdelka programske opreme kot storitve (SaaS), Contentful Composable Content Platform, Contentful uporablja vpoglede iz podatkov za izboljšanje poslovnega odločanja in uporabniške izkušnje. Vsebinsko angažiran Netlight, svetovalni partner APN, za pomoč pri vzpostavitvi podatkovne platforme za zbiranje teh vpogledov.
Večina delovnih obremenitev aplikacije Contentful se izvaja na Amazon EKS, znanje o tej storitvi in Kubernetesu pa je v organizaciji zelo razširjeno. Zato se je Contentfulova ekipa za podatkovni inženiring odločila zagnati podatkovne cevovode tudi na Amazon EKS. Za službo razporejanje, so začeli s samostojnim Apache Airflowom v gruči Amazon EKS in kasneje prešli na Amazon MWAA, da bi zmanjšali stroške inženiringa in operacij. Delovno mesto izvedba ostal na Amazon EKS.
Contentful izvaja zapleten podatkovni cevovod z uporabo te infrastrukture, vključno z vnosom iz več virov podatkov in različnimi opravili preoblikovanja, na primer z uporabo DBT. Celoten cevovod si deli eno samo okolje Amazon MWAA in eno samo gručo Amazon EKS. Z raznolikim naborom delovnih obremenitev v enem samem okolju je treba uporabiti načelo najmanj privilegijev, ki zagotavlja, da imajo posamezne naloge ali komponente samo določena dovoljenja, ki jih potrebujejo za delovanje.
S segmentiranjem dovoljenj glede na vloge in odgovornosti je ekipa za podatkovni inženiring podjetja Contentful lahko ustvarila bolj robustno in varno okolje za obdelavo podatkov, ki je bistvenega pomena za ohranjanje celovitosti in zaupnosti podatkov, s katerimi se obdeluje.
V tej objavi v spletnem dnevniku se sprehodimo skozi nastavitev infrastrukture iz nič in uvajanje vzorčne aplikacije z uporabo Terraforma, izbranega orodja Contentful za infrastrukturo kot kodo.
Predpogoji
Če želite slediti tej objavi v spletnem dnevniku, morate imeti nameščeno najnovejšo različico naslednjih orodij:
Pregled
V tej objavi v spletnem dnevniku boste ustvarili vzorčno aplikacijo z naslednjo infrastrukturo:
Vzorec delovnega toka Airflow navaja predmete v izvornem vedru, ta seznam začasno shrani z uporabo Airflow XComsin zapiše seznam kot datoteko v ciljno vedro. Ta aplikacija se izvaja z uporabo podov Amazon EKS, ki jih načrtuje okolje Amazon MWAA. Razmestite gručo EKS in okolje MWAA v a virtualni zasebni oblak (VPC) in uporabite dovoljenja z najmanjšimi privilegiji za sklope EKS, ki uporabljajo Vloge IAM za storitvene račune. Konfiguracijsko vedro za Amazon MWAA vsebuje zahteve za čas izvajanja in kodo aplikacije, ki določa Aciklični graf z usmerjenim tokom zraka (DAG).
Inicializirajte projekt in ustvarite vedra
Ustvari datoteko main.tf
z naslednjo vsebino v praznem imeniku:
Ta datoteka definira Ponudnik Terraform AWS kot tudi izvorno in ciljno vedro, katerih imena se izvozijo kot Parametri AWS Systems Manager. Terraformu tudi sporoči, naj naloži prazen predmet z imenom dummy.txt
v izvorno vedro, kar omogoča, da vzorčna aplikacija Airflow, ki jo bomo ustvarili pozneje, prejme rezultat pri navajanju vsebine vedra.
Inicializirajte projekt Terraform in prenesite odvisnosti modula z izdajo naslednjega ukaza:
Ustvarite infrastrukturo:
Terraform vas prosi, da potrdite spremembe okolja, nato pa začne uvajati vire v AWS. Po uspešni uvedbi bi morali videti naslednje sporočilo o uspehu:
Ustvari VPC
Ustvarite novo datoteko vpc.tf
v istem imeniku kot main.tf
in vstavite naslednje:
Ta datoteka definira VPC, virtualno omrežje, ki bo kasneje gostilo gručo Amazon EKS in okolje Amazon MWAA. Upoštevajte, da uporabljamo an obstoječih Terraform modul za to, ki ovije konfiguracijo osnovnih omrežnih virov, kot je podomrežja, tabele potiin NAT prehodi.
Prenesite modul VPC:
Razporedite nove vire:
Upoštevajte, kateri viri se ustvarjajo. Z uporabo modula VPC v naši datoteki Terraform je pri definiranju naše infrastrukture odvzetih veliko temeljne zapletenosti, vendar je še vedno koristno vedeti, kaj točno se uvaja.
Upoštevajte, da Terraform zdaj obravnava vire, ki smo jih definirali v obeh datotekah, main.tf
in vpc.tf
, saj Terraform vključuje vse .tf
datoteke v trenutnem delovnem imeniku.
Ustvarite okolje Amazon MWAA
Ustvarite novo datoteko mwaa.tf
in vstavite naslednjo vsebino:
Tako kot prej uporabljamo an obstoječi modul da prihranite trud pri konfiguraciji za okolje Amazon MWAA. Modul ustvari tudi konfiguracijsko vedro, ki ga uporabljamo za določanje odvisnost od izvajalnega časa aplikacije (apache-airflow-cncf-kubernetes) v requirements.txt
mapa. Ta paket v kombinaciji s prednameščenim paketom apache-airflow-amazon, omogoča interakcijo z Amazon EKS.
Prenesite modul MWAA:
Razporedite nove vire:
Ta operacija traja 20–30 minut.
Ustvarite gručo Amazon EKS
Ustvari datoteko eks.tf
z naslednjo vsebino:
Za ustvarjanje samega grozda izkoristimo prednosti Načrti Amazon EKS za Terraform projekt. Definiramo tudi skupino upravljanih vozlišč z enim vozliščem kot ciljno velikostjo. Upoštevajte, da je v primerih z nihajočo obremenitvijo skaliranje vaše gruče z Karpenter namesto zgoraj prikazanega pristopa skupine upravljanih vozlišč naredi lestvico gruče bolj prilagodljivo. Uporabili smo skupine upravljanih vozlišč predvsem zaradi enostavne konfiguracije.
Opredelimo identiteto, ki jo Izvršilna vloga Amazon MWAA predpostavlja v Kubernetesu z uporabo map_roles
spremenljivka. Po konfiguraciji Ponudnik Terraform Kubernetes, izvajalski vlogi Amazon MWAA damo dovoljenja za upravljanje podov v gruči.
Prenesite načrte EKS za modul Terraform:
Razporedite nove vire:
Ta operacija traja približno 12 minut.
Ustvarite vloge IAM za storitvene račune
Ustvari datoteko roles.tf
z naslednjo vsebino:
Ta datoteka definira dva storitvena računa Kubernetes, source-bucket-reader-sa
in destination-bucket-writer-sa
in njihova dovoljenja za API AWS z uporabo vlog IAM za storitvene račune (IRSA). Spet uporabljamo modul iz projekta Amazon EKS Blueprints for Terraform za poenostavitev konfiguracije IRSA. Upoštevajte, da obe vlogi dobita samo minimalna dovoljenja, ki jih potrebujeta, definirana z uporabo Politike AWS IAM.
Prenesite nov modul:
Razporedite nove vire:
Ustvari DAG
Ustvari datoteko dag.py
definiranje zračnega toka DAG:
DAG je opredeljen tako, da deluje po urnem razporedu z dvema nalogama read_bucket
s servisnim računom source-bucket-reader-sa
in write_bucket
s servisnim računom destination-bucket-writer-sa
, tečejo drug za drugim. Oba se izvajata z uporabo EksPodOperator, ki je odgovoren za razporejanje nalog na Amazon EKS z uporabo Slika dockerja AWS CLI za izvajanje ukazov. Prva naloga navede datoteke v izvornem vedru in zapiše seznam v Airflow XCom. Druga naloga prebere seznam iz XCom in ga shrani v ciljno vedro. Upoštevajte, da je service_account_name
parameter razlikuje, kaj je dovoljeno narediti posamezni nalogi.
Ustvari datoteko dag.tf
za nalaganje kode DAG v konfiguracijsko vedro Amazon MWAA:
Razmestite spremembe:
Okolje Amazon MWAA samodejno uvozi datoteko iz vedra S3.
Zaženite DAG
V brskalniku se pomaknite do Konzola Amazon MWAA in izberite svoje okolje. V zgornjem desnem kotu izberite Odprite uporabniški vmesnik Airflow . Morali bi videti naslednje:
Za sprožitev DAG, v Proces izberite simbol za predvajanje in nato izberite Sproži DAG. Kliknite ime DAG, da raziščete potek DAG in njegove rezultate.
Pomaknite se na Konzola Amazon S3 in izberite vedro, ki se začne z »cilj«. Vsebovati mora datoteko list.json
nedavno ustvaril write_bucket
naloga. Prenesite datoteko in raziščite njeno vsebino, seznam JSON z enim samim vnosom.
Čiščenje
Viri, ki ste jih ustvarili v tem vodstvu, povzročijo stroške AWS. Če želite izbrisati ustvarjene vire, izdajte naslednji ukaz:
In potrdite spremembe v pogovornem oknu Terraform CLI.
zaključek
V tej objavi v spletnem dnevniku ste izvedeli, kako izboljšati varnost vašega podatkovnega cevovoda, ki deluje na Amazon MWAA in Amazon EKS, tako da zožite dovoljenja za vsako posamezno nalogo.
Če se želite potopiti globlje, uporabite delovni primer, ustvarjen v tem vodniku, da podrobneje raziščete temo: Kaj se zgodi, če odstranite service_account_name
parameter iz naloge Airflow? Kaj se zgodi, če v obeh opravilih zamenjate imena računov storitev?
Zaradi poenostavitve smo v tem uvodu uporabili strukturo ploščate datoteke z datotekama Terraform in Python znotraj enega imenika. Nismo se držali standardna struktura modula predlaga Terraform, kar je na splošno priporočljivo. V resničnem projektu lahko razdelitev projekta na več projektov ali modulov Terraform prav tako poveča prilagodljivost, hitrost in neodvisnost med ekipami, ki imajo v lasti različne dele infrastrukture.
Nazadnje, preučite Podatki o EKS dokumentacijo, ki ponuja druge dragocene vire za izvajanje vašega podatkovnega cevovoda na Amazon EKS, kot tudi Amazon MWAA in pretok zraka apache dokumentacijo za implementacijo lastnih primerov uporabe. Natančneje, poglejte to vzorčna izvedba modula Terraform za Amazon MWAA in Amazon EKS, ki vsebuje bolj zrel pristop k konfiguraciji Amazon EKS in samodejnemu skaliranju vozlišč ter povezovanju v omrežja.
Če imate kakršna koli vprašanja, lahko odprete novo temo AWS re:Post ali doseči Podpora AWS.
O avtorjih
Ulrich Hinze je arhitekt rešitev pri AWS. Sodeluje s programskimi podjetji za arhitekturo in implementacijo rešitev v oblaku na AWS. Preden se je pridružil AWS, je 8+ let delal za stranke in partnerje AWS na področju programskega inženiringa, svetovanja in arhitekture.
Patrick Oberherr je kadrovski podatkovni inženir pri Contentfulu s 4+ leti dela z AWS in 10+ leti na področju podatkov. Pri Contentful je odgovoren za infrastrukturo in delovanje podatkovnega sklada, ki gostuje na AWS.
Johannes Günther je svetovalec za oblak in podatke pri Netlightu s 5+ leti dela z AWS. Pomagal je strankam v različnih panogah pri oblikovanju trajnostnih platform v oblaku in ima certifikat AWS.
- Distribucija vsebine in PR s pomočjo SEO. Okrepite se še danes.
- PlatoData.Network Vertical Generative Ai. Opolnomočite se. Dostopite tukaj.
- PlatoAiStream. Web3 Intelligence. Razširjeno znanje. Dostopite tukaj.
- PlatoESG. Ogljik, CleanTech, Energija, Okolje, sončna energija, Ravnanje z odpadki. Dostopite tukaj.
- PlatoHealth. Obveščanje o biotehnologiji in kliničnih preskušanjih. Dostopite tukaj.
- vir: https://aws.amazon.com/blogs/big-data/set-up-fine-grained-permissions-for-your-data-pipeline-using-mwaa-and-eks/
- :ima
- : je
- :ne
- $GOR
- 1
- 10
- 100
- 12
- 16
- 2023
- 27
- 41
- 8
- 9
- a
- Sposobna
- O meni
- nad
- Po
- Račun
- računi
- potrditi
- čez
- dejavnosti
- aciklični
- dodano
- držijo
- Prednost
- Prednosti
- po
- spet
- proti
- vsi
- skupaj
- Prav tako
- Amazon
- Amazon Web Services
- an
- in
- Še ena
- kaj
- Apache
- API
- uporaba
- Uporabi
- pristop
- odobri
- Arhitektura
- SE
- AS
- predpostavlja
- At
- pooblastilo
- Samodejno
- samodejno
- Na voljo
- stran
- AWS
- Certificirano AWS
- Stranka AWS
- temeljijo
- ker
- pred
- zadaj
- v zakulisju
- počutje
- med
- Blog
- tako
- brskalnik
- poslovni
- vendar
- by
- CAN
- primeri
- Certified
- spremenilo
- Spremembe
- izbira
- Izberite
- klik
- stranke
- Cloud
- Grozd
- Koda
- Stolpec
- kombinacija
- skupnost
- Podjetja
- dokončanje
- kompleksna
- kompleksnost
- deli
- Izračunajte
- zaupnost
- konfiguracija
- Konzole
- svetovalec
- svetovanje
- vsebujejo
- Vsebuje
- vsebina
- vsebinska platforma
- Kotiček
- popravi
- stroški
- ustvarjajo
- ustvaril
- ustvari
- Trenutna
- stranka
- Izkušnje s strankami
- Stranke, ki so
- DAG
- datum
- podatkovni inženir
- Podatkovna platforma
- obdelava podatkov
- Datum čas
- odločil
- Odločanje
- globlje
- opredeliti
- opredeljen
- Določa
- definiranje
- odvisnosti
- Odvisnost
- Odvisno
- razporedi
- razporejeni
- uvajanja
- uvajanje
- opis
- oblikovanje
- destinacija
- uničeni
- Dialog
- DID
- drugačen
- usmerjen
- potop
- razne
- do
- Lučki delavec
- Dokumentacija
- prenesi
- risanje
- vsak
- enostavnost
- echo
- prizadevanje
- prazen
- omogoča
- , ki se ukvarjajo
- inženir
- Inženiring
- zagotoviti
- Vpis
- okolje
- bistvena
- Eter (ETH)
- točno
- Primer
- Izmenjava
- izvršiti
- izvršeno
- izvedba
- izkušnje
- raziskuje
- razširitve
- false
- Polje
- file
- datoteke
- prva
- stanovanje
- prilagodljivost
- prilagodljivo
- sledi
- po
- za
- iz
- funkcija
- nadalje
- zbiranje
- splošno
- dobili
- GitHub
- Daj
- graf
- skupina
- Skupine
- Gost
- Blog za goste
- Ročaji
- se zgodi
- Imajo
- he
- pomoč
- pomagal
- več
- gostitelj
- gostila
- Kako
- Kako
- HTML
- HTTPS
- IAM
- identiteta
- if
- izvajati
- izvajanja
- uvoz
- uvoz
- izboljšanje
- in
- vključujejo
- vključuje
- Vključno
- Povečajte
- neodvisnost
- individualna
- industrij
- Infrastruktura
- v notranjosti
- vpogledi
- Namesto
- celovitost
- interakcije
- vmesnik
- v
- vprašanje
- izdajanje
- IT
- ITS
- sam
- Job
- Delovna mesta
- pridružil
- Potovanje
- jpg
- json
- Ključne
- Otrok
- Vedite
- znanje
- Kubernetes
- pozneje
- Zadnji
- naučili
- vsaj
- kot
- Seznam
- seznam
- seznami
- obremenitev
- lokalna
- prijavljen
- Poglej
- vzdrževanje
- Znamka
- IZDELA
- upravljanje
- upravlja
- upravitelj
- zrel
- Maj ..
- Sporočilo
- metapodatki
- minimalna
- min
- modul
- Moduli
- več
- veliko
- več
- Ime
- Imenovan
- Imena
- Krmarjenje
- potrebno
- Nimate
- potrebe
- mreža
- mreženje
- Novo
- Vozel
- Upoštevajte
- zdaj
- predmet
- predmeti
- of
- on
- ONE
- samo
- open source
- Delovanje
- operacije
- operaterji
- možnosti
- or
- Organizacija
- Ostalo
- naši
- ven
- izhod
- lastne
- paket
- parameter
- partner
- partnersko mrežo
- partnerji
- deli
- Patch
- pot
- Patrick
- Dovoljenja
- plinovod
- platforma
- Platforme
- platon
- Platonova podatkovna inteligenca
- PlatoData
- Predvajaj
- Stroki
- politika
- portret
- Prispevek
- v prvi vrsti
- zasebna
- obravnavati
- Izdelek
- profil
- Projekt
- projekti
- predlagano
- Ponudnik
- ponudniki
- zagotavlja
- Python
- vprašanja
- RE
- dosežejo
- prejeti
- Pred kratkim
- priporočeno
- zmanjša
- okolica
- odstrani
- Zahteve
- vir
- izkoriščanje virov
- viri
- odgovornosti
- odgovorna
- povzroči
- Rezultati
- robusten
- vloga
- vloge
- Pravilo
- Run
- tek
- deluje
- SaaS
- Enako
- Shrani
- Lestvica
- skaliranje
- prizori
- urnik
- načrtovano
- razporejanje
- praska
- drugi
- zavarovanje
- varnost
- glej
- Serija
- Storitev
- Storitve
- nastavite
- nastavitev
- Delnice
- delitev
- shouldnt
- pokazale
- Razstave
- preprostost
- poenostavitev
- sam
- enotno okolje
- Velikosti
- majhna
- Software
- inženiring programske opreme
- rešitve
- vir
- Viri
- specifična
- posebej
- hitrost
- sveženj
- Osebje
- Začetek
- začel
- Začetek
- začne
- Izjava
- Še vedno
- shranjevanje
- možnosti shranjevanja
- trgovine
- Struktura
- študija
- predmet
- uspeh
- uspešno
- Preverite
- trajnostno
- preklopi
- Simbol
- sistemi
- Bodite
- sprejeti
- meni
- ciljna
- Naloga
- Naloge
- skupina
- Skupine
- pove
- predloge
- Terraform
- besedilo
- da
- O
- Vir
- njihove
- POTEM
- te
- jih
- ta
- skozi
- do
- žeton
- orodje
- orodja
- vrh
- temo
- Preoblikovanje
- sprožijo
- Res
- dva
- tip
- osnovni
- Nadgradnja
- naprej
- uporaba
- Rabljeni
- uporabnik
- Uporabniški vmesnik
- uporablja
- uporabo
- dragocene
- vrednost
- spremenljivka
- različnih
- različica
- živahno
- Virtual
- sprehod
- walkthrough
- je
- we
- web
- spletne storitve
- Dobro
- Kaj
- kdaj
- ki
- celoti
- katerih
- zakaj
- razširjen
- bo
- z
- delal
- potek dela
- delovnih tokov
- deluje
- let
- jo
- Vaša rutina za
- zefirnet