Amazon EMR are plăcerea de a anunța integrarea cu Amazon Simple Storage Service (Amazon S3) Acordări de acces care simplifică gestionarea permisiunilor Amazon S3 și vă permite să impuneți accesul granular la scară. Cu această integrare, puteți scala accesul Amazon S3 bazat pe job pentru joburile Apache Spark în toate opțiunile de implementare Amazon EMR și puteți impune accesul Amazon S3 granular pentru o poziție de securitate mai bună.
În această postare, vom parcurge câteva scenarii diferite despre cum să folosiți Amazon S3 Access Grants. Înainte de a începe să parcurgem integrarea Amazon EMR și Amazon S3 Access Grants, vom configura și configura S3 Access Grants. Apoi, vom folosi Formarea AWS Cloud șablon de mai jos pentru a crea un Amazon EMR pe Amazon Elastic Compute Cloud (Amazon EC2) Cluster, o aplicație EMR Serverless și două roluri diferite.
După configurare, vom rula câteva scenarii despre cum puteți utiliza Amazon EMR cu S3 Access Grants. În primul rând, vom rula o lucrare batch pe EMR pe Amazon EC2 pentru a importa date CSV și a le converti în Parquet. În al doilea rând, vom folosi Amazon EMR Studio cu o aplicație interactivă EMR Serverless pentru a analiza datele. În cele din urmă, vom arăta cum să configurați accesul pe mai multe conturi pentru Amazon S3 Access Grants. Mulți clienți folosesc diferite conturi în organizația lor și chiar în afara organizației lor pentru a partaja date. Amazon S3 Access Grants facilitează acordarea accesului pe mai multe conturi la datele dvs. chiar și atunci când filtrați după diferite prefixe.
Pe lângă această postare, puteți afla mai multe despre Amazon S3 Access Grants de la Scalarea accesului la date cu Amazon S3 Access Grants.
Cerințe preliminare
Înainte de a lansa stiva AWS CloudFormation, asigurați-vă că aveți următoarele:
- Un cont AWS care oferă acces la serviciile AWS
- Cea mai recentă versiune a AWS Command Line Interface (AWS CLI)
- Un AWS Identity and Access Management (AWS IAM) utilizator cu o cheie de acces și o cheie secretă pentru a configura AWS CLI și permisiuni pentru a crea un rol IAM, politici IAM și stive în AWS CloudFormation
- Un al doilea cont AWS dacă doriți să testați funcționalitatea între conturi
walkthrough
Creați resurse cu AWS CloudFormation
Pentru a utiliza Amazon S3 Access Grants, veți avea nevoie de un cluster cu Amazon EMR 6.15.0 sau o versiune ulterioară. Pentru mai multe informații, consultați documentația pentru utilizarea Amazon S3 Access Grants cu un cluster Amazon EMR, O Amazon EMR pe cluster EKS, Și un Aplicație Amazon EMR Serverless. În scopul acestei postări, vom presupune că aveți două tipuri diferite de utilizatori cu acces la date în organizația dvs. - ingineri de analiză cu acces de citire și scriere la datele din grup și analiști de afaceri cu acces numai pentru citire. Vom folosi două roluri AWS IAM diferite, dar vă puteți conecta, de asemenea, propriul furnizor de identitate direct la IAM Identity Center, dacă doriți.
Iată arhitectura pentru această primă porțiune. Stack-ul AWS CloudFormation creează următoarele resurse AWS:
- O stivă Virtual Private Cloud (VPC) cu subrețele private și publice de utilizat cu EMR Studio, tabele de rute și gateway-ul de traducere a adreselor de rețea (NAT).
- O găleată Amazon S3 pentru artefacte EMR, cum ar fi fișiere jurnal, cod Spark și notebook-uri Jupyter.
- Un compartiment Amazon S3 cu date eșantion de utilizat cu S3 Access Grants.
- Un cluster Amazon EMR configurat pentru utilizare roluri de rulare și Granturi de acces S3.
- O aplicație Amazon EMR Serverless configurată să utilizeze S3 Access Grants.
- Un Amazon EMR Studio unde utilizatorii se pot conecta și pot crea notebook-uri pentru spațiul de lucru cu aplicația EMR Serverless.
- Două roluri AWS IAM pe care le vom folosi pentru rulările noastre EMR: unul pentru Amazon EC2 cu acces de scriere și altul pentru Serverless cu acces de citire.
- Un rol AWS IAM care va fi folosit de S3 Access Grants pentru a accesa datele compartimentului (adică, rolul de utilizat atunci când înregistrați o locație cu S3 Access Grants. S3 Access Grants utilizează acest rol pentru a crea acreditări temporare).
Pentru a începe, parcurgeți următorii pași:
- Alegeți Launch Stack:
- Acceptați setările implicite și selectați Recunosc că acest șablon poate crea resurse IAM.
Stiva AWS CloudFormation durează aproximativ 10-15 minute. Odată ce stiva este terminată, accesați fila de ieșiri unde veți găsi informațiile necesare pentru următorii pași.
Creați resurse Amazon S3 Access Grants
În primul rând, vom crea o resurse Amazon S3 Access Grants în contul nostru. Creăm o instanță S3 Access Grants, o locație S3 Access Grants care se referă la grupa noastră de date creată de stiva AWS CloudFormation, care este accesibilă numai de rolul nostru AWS IAM al compartimentului de date și acordăm diferite niveluri de acces rolurilor noastre de cititor și scriitor.
Pentru a crea resursele S3 Access Grants necesare, utilizați următoarele comenzi AWS CLI ca utilizator administrativ și înlocuiți oricare dintre câmpurile dintre săgeți cu rezultatul din stiva dvs. CloudFormation.
Apoi, creăm o nouă locație S3 Access Grants. Ce este o locație? Amazon S3 Access Grants funcționează prin vânzarea acreditărilor AWS IAM cu acces limitat la un anumit prefix S3. O locație S3 Access Grants va fi asociată cu un rol AWS IAM din care vor fi create aceste sesiuni temporare.
În cazul nostru, vom include rolul AWS IAM la compartimentul creat cu stiva noastră AWS CloudFormation și vom oferi acces la rolul compartimentului de date creat de stivă. Accesați fila Ieșiri pentru a găsi valorile de înlocuit cu următorul fragment de cod:
Rețineți AccessGrantsLocationId
valoare în răspuns. Vom avea nevoie de asta pentru următorii pași în care vom parcurge crearea Granturilor de acces S3 necesare pentru a limita accesul de citire și scriere la compartimentul dvs.
- Pentru utilizatorul de citire/scriere, utilizați
s3-control create-access-grant
pentru a permite accesul READWRITE la prefixul „ieșire/*”: - Pentru utilizatorul citit, utilizați
s3control create-access-grant
din nou pentru a permite doar accesul READ la același prefix:
Scenariul demonstrativ 1: Amazon EMR pe EC2 Spark Job pentru a genera date Parquet
Acum că ne-am configurat mediile Amazon EMR și ne-am acordat acces la rolurile prin S3 Access Grants, este important să rețineți că cele două roluri AWS IAM pentru clusterul nostru EMR și aplicația EMR Serverless au o politică IAM care permite accesul numai la găleata noastră pentru artefacte EMR. Aceștia nu au acces IAM la compartimentul nostru de date S3 și, în schimb, folosesc S3 Access Grants pentru a obține acreditări de scurtă durată care se încadrează în compartiment și prefix. Mai exact, rolurilor li se acordă s3:GetDataAccess și s3:GetDataAccessGrantsInstanceForPrefix
permisiuni de a solicita acces prin instanța specifică S3 Access Grants creată în regiunea noastră. Acest lucru vă permite să vă gestionați cu ușurință accesul la S3 într-un singur loc, într-un mod extrem de extins și granular, care vă îmbunătățește postura de securitate. Prin combinarea S3 Access Grants cu rolurile de muncă pe EMR pe Amazon Elastic Kubernetes Service (Amazon EKS) și EMR Serverless, precum și rolurile de rulare pentru pașii Amazon EMR începând cu EMR 6.7.0, puteți gestiona cu ușurință controlul accesului pentru joburi sau interogări individuale. Granturile de acces S3 sunt disponibile pe EMR 6.15.0 și versiuni ulterioare. Să rulăm mai întâi o lucrare Spark pe EMR pe EC2 ca inginer nostru de analiză pentru a converti câteva date eșantion în Parquet.
Pentru aceasta, utilizați exemplul de cod furnizat în convertor.py. Descărcați fișierul și copiați-l în EMR_ARTIFACTS_BUCKET
creat de stiva AWS CloudFormation. Ne vom trimite jobul cu rolul ReadWrite AWS IAM. Rețineți că, pentru clusterul EMR, am configurat S3 Access Grants pentru a reveni la rolul IAM dacă accesul nu este furnizat de S3 Access Grants. The DATA_WRITER_ROLE
are acces de citire la grupul de artefacte EMR printr-o politică IAM, astfel încât să poată citi scriptul nostru. Ca și înainte, înlocuiți toate valorile cu <>
simboluri din ieşiri fila din stiva dvs. CloudFormation.
Odată ce lucrarea se termină, ar trebui să vedem câteva date de parchet s3://<DATA_BUCKET>/output/weather-data/
. Puteți vedea starea jobului în paşi din tabelul Consola EMR.
Scenariul demonstrativ 2: EMR Studio cu o aplicație interactivă EMR Serverless pentru analiza datelor
Acum să mergem mai departe și să ne conectăm la EMR Studio și să ne conectăm la aplicația dvs. EMR Serverless cu rolul de execuție ReadOnly pentru a analiza datele din scenariul 1. Mai întâi trebuie să activăm punctul final interactiv pe aplicația dvs. Serverless.
- selectaţi EMRStudioURL în fila Ieșiri a stivei dvs. AWS CloudFormation.
- Selectați aplicatii în temeiul serverless secțiune din partea stângă.
- selectaţi EMRBlog aplicație, apoi Acțiune meniu derulant și Configurație.
- extinde Punct final interactiv secțiune și asigurați-vă că Activați punctul final interactiv este bifat.
- Derulați în jos și faceți clic pe Configurați aplicația pentru a vă salva modificările.
- Înapoi pe pagina Aplicații, selectați EMRBlog aplicație, apoi Porniți aplicația butonul.
Apoi, creați un spațiu de lucru nou în Studioul nostru.
- Alege Spațiile de lucru în partea stângă, apoi Creați spațiu de lucru butonul.
- Introduceți un nume de spațiu de lucru, lăsați valorile implicite rămase și alegeți Creați spațiu de lucru.
- După crearea spațiului de lucru, acesta ar trebui să se lanseze într-o filă nouă în câteva secunde.
Acum conectează-ți spațiul de lucru la aplicația EMR Serverless.
- selectaţi Calcul EMR butonul din partea stângă, așa cum se arată în codul următor.
- Alege EMR fără server ca tip de calcul.
- Alege EMRBlog aplicația și rolul de rulare care începe cu EMRBlog.
- Alege Atașa. Fereastra se va reîmprospăta și puteți deschide una nouă PySpark caiet și urmează mai jos. Pentru a executa singur codul, descărcați Blocnotes AccessGrantsReadOnly.ipynb și încărcați-l în spațiul dvs. de lucru folosind Încărca fișiere butonul din browserul de fișiere.
Să facem o citire rapidă a datelor.
Vom face o numărătoare simplă (*):
De asemenea, puteți vedea că dacă încercăm să scriem date în locația de ieșire, obținem o eroare Amazon S3.
Deși puteți acorda, de asemenea, acces similar prin politicile AWS IAM, Amazon S3 Access Grants poate fi util pentru situațiile în care organizația dvs. a depășit gestionarea accesului prin IAM, dorește să mapeze S3 Access Grants la directorii sau rolurile IAM Identity Center sau a folosit anterior EMR. Mapări de roluri ale sistemului de fișiere (EMRFS). Acreditările S3 Access Grants sunt, de asemenea, temporare, oferind un acces mai sigur la datele dvs. În plus, după cum se arată mai jos, accesul între conturi beneficiază și de simplitatea S3 Access Grants.
Scenariul Demo 3 – Acces pe mai multe conturi
Unul dintre celelalte modele de acces mai frecvente este accesarea datelor între conturi. Acest model a devenit din ce în ce mai comun odată cu apariția rețelei de date, unde producătorii și consumatorii de date sunt descentralizați în diferite conturi AWS.
Anterior, accesul pe mai multe conturi necesita configurarea complexă a acțiunilor de asumare a rolului și a furnizorilor de acreditări personalizate pentru mai multe conturi atunci când configurați jobul Spark. Cu S3 Access Grants, trebuie doar să facem următoarele:
- Creați un rol de job Amazon EMR și grupați într-un al doilea cont de consumator de date
- Contul de producător de date oferă acces la contul de consumator de date cu o nouă politică privind resursele de instanță
- Contul de producător de date creează un acord de acces pentru rolul de consumator de date
Si asta e! Dacă aveți un al doilea cont la îndemână, mergeți mai departe și implementați această stivă AWS CloudFormation în contul de consumator de date, pentru a crea o nouă aplicație EMR Serverless și un rol de job. Dacă nu, urmați mai jos. Stiva AWS CloudFormation ar trebui să se termine de creat în mai puțin de un minut. Apoi, să continuăm și să acordăm consumatorilor noștri de date acces la instanța S3 Access Grants din contul nostru de producător de date.
- Înlocui
<DATA_PRODUCER_ACCOUNT_ID>
și<DATA_CONSUMER_ACCOUNT_ID>
cu ID-urile de cont AWS relevante din 12 cifre. - De asemenea, poate fi necesar să schimbați regiunea în comandă și politică.
- Și apoi acordați acces READ la folderul de ieșire rolului nostru EMR Serverless din contul de consumator de date.
Acum că am făcut asta, putem citi datele din contul de consumator de date din găleata din contul de producător de date. Vom rula doar un simplu COUNT(*)
din nou. Inlocuieste <APPLICATION_ID>
, <DATA_CONSUMER_JOB_ROLE>
, și <DATA_CONSUMER_LOG_BUCKET>
cu valorile din fila Ieșiri din stiva AWS CloudFormation creată în al doilea cont.
Și înlocuiți <DATA_PRODUCER_BUCKET>
cu găleata din primul tău cont.
Așteptați ca lucrarea să ajungă la o stare finalizată, apoi preluați jurnalul stdout din găleată, înlocuind <APPLICATION_ID>
, <JOB_RUN_ID>
de la jobul de mai sus, și <DATA_CONSUMER_LOG_BUCKET>
.
Dacă sunteți pe o mașină bazată pe Unix și aveți gunzip instalat, apoi puteți utiliza următoarea comandă ca utilizator administrativ.
Rețineți că această comandă folosește numai politicile de rol AWS IAM, nu și Amazon S3 Access Grants.
În caz contrar, puteți utiliza get-tabloul de bord-pentru-job-run comandă și deschideți URL-ul rezultat în browser pentru a vedea jurnalele Driver stdout în fila Executors din Spark UI.
A curăța
Pentru a evita costurile viitoare pentru exemplele de resurse din conturile dvs. AWS, asigurați-vă că urmați următorii pași:
- Trebuie să ștergeți manual spațiul de lucru Amazon EMR Studio creat în prima parte a postării
- Goliți compartimentele Amazon S3 create de stivele AWS CloudFormation
- Asigurați-vă că ștergeți Amazon S3 Access Grants, politicile de resurse și locația S3 Access Grants create în pașii de mai sus utilizând
delete-access-grant
,delete-access-grants-instance-resource-policy
,delete-access-grants-location
, șidelete-access-grants-instance
comenzi. - Ștergeți stivele AWS CloudFormation create în fiecare cont
Comparație cu AWS IAM Role Mapping
În 2018, EMR a introdus maparea rolurilor EMRFS ca o modalitate de a oferi autorizare la nivel de stocare prin configurarea EMRFS cu mai multe roluri IAM. Deși eficientă, maparea rolurilor a necesitat gestionarea locală a utilizatorilor sau a grupurilor din clusterul dvs. EMR, pe lângă menținerea mapărilor dintre acele identități și rolurile lor IAM corespunzătoare. In combinatie cu rolurile de rulare pe EMR pe EC2 si roluri de locuri de munca pentru EMR pe EKS și EMR fără server, acum este mai ușor să acordați acces la datele dvs. de pe S3 direct principalului relevant, în funcție de job.
Concluzie
În această postare, v-am arătat cum să configurați și să utilizați Amazon S3 Access Grants cu Amazon EMR pentru a gestiona cu ușurință accesul la date pentru sarcinile dvs. de lucru Amazon EMR. Cu S3 Access Grants și EMR, puteți configura cu ușurință accesul la datele de pe S3 pentru identitățile IAM sau folosind directorul corporativ din IAM Identity Center ca sursă de identitate. S3 Access Grants este acceptat în EMR pe EC2, EMR pe EKS și EMR Serverless începând cu EMR versiunea 6.15.0.
Pentru a afla mai multe, vezi Granturile de acces S3 și documentație EMR și nu ezitați să puneți orice întrebări în comentarii!
Despre autor
Damon Cortesi este avocat principal pentru dezvoltatori cu Amazon Web Services. El creează instrumente și conținut pentru a ajuta la ușurarea vieții inginerilor de date. Când nu lucrează din greu, el încă construiește conducte de date și împarte jurnalele în timpul liber.
- Distribuție de conținut bazat pe SEO și PR. Amplifică-te astăzi.
- PlatoData.Network Vertical Generative Ai. Împuterniciți-vă. Accesați Aici.
- PlatoAiStream. Web3 Intelligence. Cunoștințe amplificate. Accesați Aici.
- PlatoESG. carbon, CleanTech, Energie, Mediu inconjurator, Solar, Managementul deșeurilor. Accesați Aici.
- PlatoHealth. Biotehnologie și Inteligență pentru studii clinice. Accesați Aici.
- Sursa: https://aws.amazon.com/blogs/big-data/use-amazon-emr-with-s3-access-grants-to-scale-spark-access-to-amazon-s3/
- :are
- :este
- :nu
- :Unde
- $UP
- 1
- 10
- 100
- 107
- 11
- 1232
- 15%
- 20
- 2018
- 500
- 7
- 8
- a
- Despre Noi
- mai sus
- acces
- managementul accesului
- Acces la date
- accesibil
- accesarea
- Cont
- Conturi
- recunoaște
- peste
- Acțiune
- acțiuni
- plus
- adresa
- administrativ
- avocat
- din nou
- înainte
- TOATE
- permite
- permite
- de-a lungul
- de asemenea
- Amazon
- Amazon EC2
- Serviciul Amazon Elastic Kubernetes
- Amazon EMR
- Amazon Web Services
- an
- analiști
- Google Analytics
- analiza
- și
- anunța
- O alta
- Orice
- Apache
- Apache Spark
- aplicație
- aplicatii
- aproximativ
- arhitectură
- SUNT
- AS
- cere
- asociate
- asuma
- At
- autorizare
- disponibil
- evita
- AWS
- Formarea AWS Cloud
- înapoi
- bază
- BE
- deveni
- înainte
- Început
- de mai jos
- Beneficiile
- Mai bine
- între
- browser-ul
- construiește
- afaceri
- dar
- buton
- by
- CAN
- caz
- Centru
- Schimbare
- Modificări
- verificat
- Alege
- clic
- client
- Cloud
- Grup
- cod
- combinaţie
- combinând
- Comun
- Completă
- Terminat
- complex
- Calcula
- configurat
- configurarea
- Conectați
- consumator
- Consumatorii
- conţinut
- continua
- Control
- converti
- Istoria
- Corespunzător
- Cheltuieli
- crea
- a creat
- creează
- Crearea
- scrisori de acreditare
- personalizat
- clienţii care
- de date
- accesul la date
- descentralizată
- Mod implicit
- implicite
- implementa
- desfășurarea
- Dezvoltator
- diferit
- direct
- do
- documentaţie
- făcut
- jos
- Descarca
- şofer
- e
- fiecare
- mai ușor
- cu ușurință
- uşor
- efect
- Eficace
- apariție
- permite
- Punct final
- aplica
- inginer
- inginerii
- Îmbunătăţeşte
- asigura
- medii
- eroare
- Eter (ETH)
- Chiar
- exemple
- a executa
- Cădea
- Modă
- simţi
- puțini
- Domenii
- Fișier
- Fişiere
- filtrare
- În cele din urmă
- Găsi
- termina
- First
- urma
- următor
- Pentru
- Gratuit
- din
- viitor
- poartă
- genera
- obține
- Da
- Go
- merge
- am
- acordarea
- acordate
- subvenții
- grup
- Grupului
- la indemana
- Greu
- Avea
- he
- ajutor
- extrem de
- lui
- Stup
- Cum
- Cum Pentru a
- HTML
- HTTPS
- i
- IAM
- ID
- identitățile
- Identitate
- gestionarea identității și accesului
- ID-uri
- if
- import
- important
- in
- tot mai mult
- individ
- informații
- instanță
- in schimb
- integrare
- interactiv
- interfaţă
- în
- introdus
- IT
- Loc de munca
- Locuri de munca
- jpg
- doar
- Cheie
- Kubernetes
- mai tarziu
- Ultimele
- lansa
- AFLAȚI
- Părăsi
- nivelurile de
- ca
- LIMITĂ
- Linie
- Locuiește
- la nivel local
- locaţie
- log
- Logare
- maşină
- mentine
- face
- administra
- administrare
- de conducere
- manual
- multe
- Hartă
- cartografiere
- Mai..
- ochiurilor de plasă
- minut
- minute
- mai mult
- multiplu
- trebuie sa
- nume
- necesar
- Nevoie
- reţea
- Nou
- următor
- Nu.
- nota
- caiet
- notebook-uri
- acum
- of
- on
- dată
- ONE
- afară
- deschide
- Opţiuni
- or
- comandă
- organizație
- Altele
- al nostru
- producție
- iesiri
- exterior
- propriu
- pagină
- parte
- special
- Model
- modele
- permisiune
- permisiuni
- Loc
- Plato
- Informații despre date Platon
- PlatoData
- mulţumit
- Politicile
- Politica
- Post
- în prealabil
- Principal
- directori
- privat
- producător
- Producătorii
- furniza
- prevăzut
- furnizorul
- furnizori
- furnizează
- furnizarea
- public
- scop
- interogări
- Întrebări
- Rapid
- ajunge
- Citeste
- Cititor
- se referă
- regiune
- înregistrare
- eliberaţi
- rămas
- înlocui
- solicita
- necesar
- resursă
- Resurse
- răspuns
- rezultând
- Rol
- rolurile
- Traseul
- Alerga
- ruleaza
- acelaşi
- Economisiți
- Scară
- scenariu
- scenarii
- domeniu
- scenariu
- Al doilea
- secunde
- Secret
- Secțiune
- sigur
- securitate
- vedea
- selecta
- serverless
- serviciu
- Servicii
- Sesiunile
- set
- instalare
- configurarea
- Distribuie
- să
- Arăta
- a arătat
- indicat
- parte
- asemănător
- simplu
- simplitate
- Simplifică
- situații
- fragment
- So
- unele
- Sursă
- Scânteie
- specific
- specific
- șpalturi
- SQL
- stivui
- Stive
- început
- Pornire
- începe
- Stat
- Declarație
- Stare
- paşi
- Încă
- depozitare
- studio
- prezenta
- subrețele
- succes
- Suportat
- sigur
- sistem
- Lua
- ia
- șablon
- temporar
- test
- acea
- lor
- apoi
- Acestea
- ei
- acest
- aceste
- Prin
- timp
- la
- Unelte
- Traducere
- încerca
- Două
- tip
- Tipuri
- ui
- în
- URL-ul
- utilizare
- utilizat
- Utilizator
- utilizatorii
- utilizări
- folosind
- folosi
- valoare
- Valori
- versiune
- de
- Vizualizare
- Virtual
- umbla
- mers
- vrea
- Cale..
- we
- Vreme
- web
- servicii web
- BINE
- Ce
- Ce este
- cand
- care
- în timp ce
- voi
- fereastră
- cu
- Apartamente
- fabrică
- scrie
- scriitor
- yaml
- an
- tu
- Ta
- te
- zephyrnet