Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verwendung von Trusted Identity Propagation mit Amazon SageMaker Unified Studio
Dieses Tutorial zeigt, wie Sie eine serverlose EMR-Anwendung mit Trusted Identity Propagation (TIP) einrichten. Anschließend fragen Sie mithilfe von identitätsbasierten Zugriffskontrollen über Amazon Unified Studio eine Beispieltabelle ab. SageMaker Bei dieser Konfiguration führt EMR Serverless die Spark-Abfragen jedes Benutzers mit seiner eigenen IAM Identity Center-Identität aus, und Lake Formation erzwingt benutzerspezifische Berechtigungen für Glue Data Catalog-Tabellen. AWS
TIP wird in interaktiven EMR Studio-Workloads nicht unterstützt
Interaktive Workloads über EMR Studio unterstützen Trusted Identity Propagation mit EMR Serverless nicht. Verwenden Sie Amazon SageMaker Unified Studio als kundenorientierte Anwendung für interaktive Workloads. TIP-enabled
Kosten
In diesem Tutorial werden AWS Dienste verwendet, für die möglicherweise Gebühren anfallen, darunter EMR Serverless, AWS Lake Formation AWS IAM Identity Center, Amazon Simple Storage Service und Amazon Unified Studio. SageMaker Um laufende Gebühren zu vermeiden, folgen Sie den Schritten zur Bereinigung am Ende dieses Tutorials. Preisinformationen finden Sie auf der Preisseite für jeden Service.
Voraussetzungen und Einrichtung
Führen Sie die folgenden Schritte aus, um alle erforderlichen Ressourcen einzurichten, bevor Sie Daten mit Trusted Identity Propagation abfragen.
Schritt 1: IAM Identity Center einrichten
-
Aktivieren Sie IAM Identity Center in Ihrem AWS Konto. Eine IAM Identity Center-Instanz kann pro Konto nur in einer einzigen Region existieren.
Wichtig
Notieren Sie, in welcher Region Ihr IAM Identity Center bereitgestellt wird. Alle nachfolgenden Ressourcen (Lake Formation, EMR Serverless, AWS Glue) müssen in derselben Region erstellt werden. Wenn sich Ihr IAM Identity Center beispielsweise in us-west-2 befindet, müssen sich alle Ressourcen ebenfalls in us-west-2 befinden.
-
Stellen Sie Benutzer und Gruppen für IAM Identity Center bereit, entweder manuell oder durch Synchronisieren über einen externen Identitätsanbieter (wie Okta oder Microsoft Entra ID).
-
Notieren Sie sich den ARN Ihrer IAM Identity Center-Instanz. Sie werden es in den nachfolgenden Schritten benötigen. Sie finden es in der IAM Identity Center-Konsole unter Einstellungen.
Führen Sie Folgendes aus, um Ihre Instance programmgesteuert zu finden:
aws sso-admin list-instances --regionyour-regionBeispielausgabe:
{ "Instances": [ { "InstanceArn": "arn:aws:sso:::instance/ssoins-1234567890abcdef", "IdentityStoreId": "d-1234567890", "OwnerAccountId": "123456789012", "Status": "ACTIVE" } ] }
Schritt 2: Lake Formation mit IAM Identity Center konfigurieren
-
Öffnen Sie die Lake Formation-Konsole.
-
Richten Sie einen Data Lake-Administrator ein.
Wichtig
Stellen Sie sicher, dass die IAM-Rolle oder der IAM-Benutzer, den Sie zum Ausführen dieser Befehle verwenden, als Data Lake-Administrator in Lake Formation hinzugefügt wurde. Andernfalls erhalten Sie beim Erstellen von Datenbanken oder Tabellen die Fehlermeldung „Unzureichende Lake Formation-Berechtigungen (en)“. So fügst du deine Rolle als Administrator hinzu:
aws lakeformation put-data-lake-settings \ --data-lake-settings '{ "DataLakeAdmins": [ {"DataLakePrincipalIdentifier": "arn:aws:iam::account-id:role/your-role"} ], "CreateDatabaseDefaultPermissions": [], "CreateTableDefaultPermissions": [], "Parameters": {"CROSS_ACCOUNT_VERSION": "3", "SET_CONTEXT": "TRUE"} }' -
Erstellen Sie die IAM Identity Center-Integration für Lake Formation mithilfe des Instanz-ARN, den Sie in Schritt 1 notiert haben:
aws lakeformation create-lake-formation-identity-center-configuration \ --catalog-idaccount-id\ --instance-arn "arn:aws:sso:::instance/ssoins-instance-id" -
Erstellen Sie eine IAM-Rolle für die Standortregistrierung in Lake Formation. Verwenden Sie die dienstgebundene Rolle nicht für die Weitergabe vertrauenswürdiger Identitäten. Weitere Informationen finden Sie unter AWS Lake Formation mit IAM Identity Center einrichten.
Vertrauensrichtlinie:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lakeformation.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:SetContext" ] } ] }sts: SetContext ist erforderlich
Die Vertrauensrichtlinie muss Folgendes enthalten
sts:SetContext, was für die Verbreitung vertrauenswürdiger Identitäten erforderlich ist. Bei der vom Standardassistenten erstellten IAM-Rolle handelt es sich um eine dienstbezogene Rolle, die Folgendes nicht umfasst.sts:SetContextWenn Sie zuvor einen Standort mit der dienstverknüpften Rolle registriert haben, müssen Sie ihn erneut mit einer benutzerdefinierten Rolle registrieren, die Folgendes umfasst:sts:SetContextBerechtigungsrichtlinie (gewährt Zugriff auf den Amazon S3-Datenstandort):
{ "Version": "2012-10-17", "Statement": [ { "Sid": "LakeFormationDataAccessPermissionsForS3", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::your-data-bucket/*" ] }, { "Sid": "LakeFormationDataAccessPermissionsForS3ListBucket", "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::your-data-bucket" ] } ] }Erstellen Sie die Rolle und fügen Sie die Richtlinie hinzu:
aws iam create-role \ --role-name LFLocationRegistrationRole \ --assume-role-policy-document file://lf-trust-policy.json \ --description "Lake Formation location registration role with sts:SetContext for TIP" aws iam put-role-policy \ --role-name LFLocationRegistrationRole \ --policy-name LFDataAccessPolicy \ --policy-document file://lf-permissions-policy.json -
Registrieren Sie Ihren Amazon S3-Datenstandort mit der von Ihnen erstellten Rolle bei Lake Formation:
aws lakeformation register-resource \ --resource-arn "arn:aws:s3:::your-data-bucket" \ --role-arn "arn:aws:iam::account-id:role/LFLocationRegistrationRole" -
Erstellen Sie im AWS Glue-Datenkatalog eine Datenbank und eine Tabelle, die auf Ihre Beispieldaten verweisen.
-
Gewähren Sie IAM Identity Center-Benutzern oder -Gruppen Berechtigungen sowohl für die Datenbank als auch für die Tabelle.
Wichtig
Sie müssen zusätzlich zu SELECT und DESCRIBE für die Tabelle DESCRIBE für die Datenbank gewähren. Ohne Berechtigungen auf Datenbankebene erscheint die Datenbank nicht in den SHOW DATABASES-Ergebnissen, wenn der identitätsbasierte Zugriff verwendet wird.
Verwenden der Konsole:
Wählen Sie in der Lake Formation-Konsole Data Lake-Berechtigungen > Gewähren aus.
Wählen Sie unter Principals die Option IAM Identity Center-Benutzer und -Gruppen und dann Ihren Benutzer oder Ihre Gruppe aus.
Wählen Sie unter Ressourcen für den benannten Datenkatalog Ihre Datenbank aus.
Wählen Sie unter Datenbankberechtigungen die Option Beschreiben aus.
Wählen Sie Grant (Erteilen).
Wiederholen Sie die Schritte 1 bis 5, wählen Sie diesmal die Tabelle aus und gewähren Sie unter Tabelle die Berechtigungen „Auswählen“ und „Beschreiben“.
Verwenden von AWS CLI:
Wichtig
Das Hauptkennungsformat für IAM Identity Center-Benutzer in Lake Formation Grants lautet:
arn:aws:identitystore:::user/<UserId>. Beachten Sie den dreifachen Doppelpunkt (:::). Es wurde keine Region oder kein Konto angegeben. Holen Sie sich das UserId aus dem Identity Store:# List users to get their UserIds aws identitystore list-users --identity-store-ididentity-store-id--regionyour-region# Grant DESCRIBE on the database aws lakeformation grant-permissions \ --principal '{"DataLakePrincipalIdentifier": "arn:aws:identitystore:::user/UserId"}' \ --permissions '["DESCRIBE"]' \ --resource '{"Database": {"DatabaseName": "tip_tutorial_db", "CatalogId": "account-id"}}' # Grant SELECT and DESCRIBE on the table aws lakeformation grant-permissions \ --principal '{"DataLakePrincipalIdentifier": "arn:aws:identitystore:::user/UserId"}' \ --permissions '["SELECT","DESCRIBE"]' \ --resource '{"Table": {"DatabaseName": "tip_tutorial_db", "Name": "employees", "CatalogId": "account-id"}}'
Schritt 3: Erstellen Sie die TIP-enabled EMR Serverless-Anwendung
Stellen Sie sicher, dass Ihre IAM-Rolle über die erforderlichen IAM Identity Center-Berechtigungen verfügt, um die Anwendung zu erstellen:
"sso:DescribeInstance", "sso:CreateApplication", "sso:DeleteApplication", "sso:PutApplicationAuthenticationMethod", "sso:PutApplicationAssignmentConfiguration", "sso:PutApplicationGrant", "sso:PutApplicationAccessScope"
Erstellen Sie die Anwendung mit vertrauenswürdiger Identitätsweitergabe, aktiviertem Apache Livy-Endpunkt und konfiguriertem AWS Glue-Datenkatalog als Metastore:
aws emr-serverless create-application \ --release-label emr-7.8.0 \ --type "SPARK" \ --identity-center-configuration '{"identityCenterInstanceArn": "arn:aws:sso:::instance/ssoins-instance-id"}' \ --interactive-configuration '{"livyEndpointEnabled":true}' \ --runtime-configuration '[{"classification": "spark-defaults", "properties": {"spark.sql.catalogImplementation": "hive", "spark.hadoop.hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory"}}]'
Wichtig
AWS CLI Versionsanforderung: Die --runtime-configuration Flags--identity-center-configuration,--interactive-configuration, und erfordern AWS CLI v2.15+. Wenn Sie die Fehlermeldung „Unbekannte Optionen“ erhalten, aktualisieren Sie entweder Ihr AWS CLI oder verwenden Sie Python Boto3 (v1.35+) als Alternative:
import boto3 session = boto3.Session(profile_name='your-profile', region_name='your-region') client = session.client('emr-serverless') response = client.create_application( name='tip-tutorial-app', releaseLabel='emr-7.8.0', type='SPARK', identityCenterConfiguration={ 'identityCenterInstanceArn': 'arn:aws:sso:::instance/ssoins-instance-id' }, interactiveConfiguration={ 'livyEndpointEnabled': True }, runtimeConfiguration=[ { 'classification': 'spark-defaults', 'properties': { 'spark.sql.catalogImplementation': 'hive', 'spark.hadoop.hive.metastore.client.factory.class': 'com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory' } } ] ) print(response['applicationId'])
Metastore-Konfiguration von Glue Data Catalog
Die runtimeConfiguration Einstellung für spark.sql.catalogImplementation und die AWS Glue-Metastore-Factory-Klasse stellen sicher, dass Spark-Sitzungen auf alle Tabellentypen (CSV, Parquet, ORC, Iceberg) im AWS Glue-Datenkatalog zugreifen können. Ohne diese Konfiguration sind möglicherweise nur Iceberg-Tabellen sichtbar.
Der Apache Livy-Endpunkt ist für TIP erforderlich
Vertrauenswürdige Identitätsverbreitung erfordert--interactive-configuration '{"livyEndpointEnabled":true}'. TIP ist nur für den Apache Livy-Endpunkt aktiviert.
Wenn Sie nicht über die erforderlichen IAM Identity Center-Berechtigungen verfügen, erstellen Sie die Anwendung ohne den --identity-center-configuration Parameter und bitten Sie Ihren IAM Identity Center-Administrator, TIP später mithilfe der Update-Anwendungs-API zu aktivieren:
aws emr-serverless update-application \ --application-idapplication-id\ --identity-center-configuration '{"identityCenterInstanceArn": "arn:aws:sso:::instance/ssoins-instance-id"}'
Schritt 4: Konfigurieren Sie die Rolle zur Auftragsausführung
Die Vertrauensrichtlinie der Rolle zur Auftragsausführung muss Folgendes beinhaltensts:SetContext, damit EMR Serverless die Anmeldeinformationen um die Identität des Benutzers erweitern kann:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "emr-serverless.amazonaws.com" }, "Action": ["sts:AssumeRole", "sts:SetContext"] } ] }
Erstellen Sie die Rolle:
aws iam create-role \ --role-name emr-serverless-tip-job-role \ --assume-role-policy-document file://trust-policy.json \ --description "EMR Serverless job execution role with TIP support"
Fügen Sie Berechtigungen für die Downstream-Dienste hinzu, auf die der Job zugreifen wird. Die Rolle benötigt die Berechtigungen Lake Formation, AWS Glue, Amazon S3 und Amazon CloudWatch Logs:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "LakeFormationAndGlueAccess", "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess", "glue:GetTable", "glue:GetTables", "glue:GetDatabase", "glue:GetDatabases", "glue:GetPartitions" ], "Resource": "*" }, { "Sid": "S3DataAccess", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::your-data-bucket", "arn:aws:s3:::your-data-bucket/*" ] }, { "Sid": "CloudWatchLogsAccess", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": "arn:aws:logs:us-east-1:111122223333:*" } ] }
S3-Berechtigungen sind zusätzlich zu den Lake Formation-Berechtigungen erforderlich
Die Amazon S3-Berechtigungen (s3:GetObject,s3:PutObject,s3:ListBucket) für Ihren Daten-Bucket sind zusätzlich zu den Lake Formation- und AWS Glue-Berechtigungen erforderlich. Die s3:PutObject Erlaubnis ist für Spark Scratch- und Shuffle-Daten erforderlich. Ohne Amazon S3-Berechtigungen können Spark-Jobs beim Lesen der zugrunde liegenden Datendateien oder beim Schreiben temporärer Daten mit der Fehlermeldung „Zugriff verweigert“ fehlschlagen.
CloudWatch Protokollberechtigungen sind erforderlich
Amazon CloudWatch Logs-Berechtigungen sind für die Bereitstellung von Spark-Treibern und Executor-Protokollen erforderlich. Ohne sie können Spark-Sitzungen möglicherweise nicht gestartet werden.
Fügen Sie die Richtlinie an die Rolle an:
aws iam put-role-policy \ --role-name emr-serverless-tip-job-role \ --policy-name tip-lakeformation-access \ --policy-document file://permissions-policy.json
Gewähren Sie Lake Formation Berechtigungen für die Rolle zur Auftragsausführung:
Für die Rolle zur Auftragsausführung sind außerdem Lake Formation-Berechtigungen für die Datenbank und die Tabelle erforderlich. Dies gilt zusätzlich zu den Zuschüssen, die dem IAM Identity Center-Benutzer gewährt werden.
# Grant DESCRIBE on the database to the job role aws lakeformation grant-permissions \ --principal '{"DataLakePrincipalIdentifier": "arn:aws:iam::account-id:role/emr-serverless-tip-job-role"}' \ --permissions '["DESCRIBE"]' \ --resource '{"Database": {"DatabaseName": "tip_tutorial_db", "CatalogId": "account-id"}}' # Grant SELECT and DESCRIBE on the table to the job role aws lakeformation grant-permissions \ --principal '{"DataLakePrincipalIdentifier": "arn:aws:iam::account-id:role/emr-serverless-tip-job-role"}' \ --permissions '["SELECT","DESCRIBE"]' \ --resource '{"Table": {"DatabaseName": "tip_tutorial_db", "Name": "employees", "CatalogId": "account-id"}}'
Weitere Downstream-Servicekonfigurationen finden Sie unter Verwenden von Lake Formation mit EMR Serverless und Verwenden von Amazon S3 Access Grants mit EMR Serverless.
Fragen Sie Daten mit Trusted Identity Propagation über Amazon Unified Studio ab SageMaker
Nachdem Sie die Einrichtung abgeschlossen haben, können Sie Daten mithilfe Ihrer TIP-enabled EMR-Serverless-Anwendung als Rechenleistung in einem Amazon SageMaker Unified Studio-Projekt abfragen. EMR Serverless führt die Abfragen jedes Benutzers mit seiner eigenen IAM Identity Center-Identität aus, und Lake Formation erzwingt die benutzerspezifischen Berechtigungen.
Voraussetzungen
Eine TIP-enabled EMR Serverless-Anwendung (abgeschlossen in Schritt 3 oben).
Eine Amazon SageMaker Unified Studio-Domain, die mit der IAM Identity Center-Authentifizierung konfiguriert ist.
Lake Formation-Berechtigungen, die Ihrem IAM Identity Center-Benutzer oder Ihrer IAM Identity Center-Gruppe für die Zieldatenbank und -Tabelle erteilt wurden (abgeschlossen in Schritt 2 oben).
Schritt 5: Erstellen Sie ein Amazon SageMaker Unified Studio-Projekt mit aktiviertem TIP
Melden Sie sich mit Ihren IAM Identity Center-Anmeldeinformationen bei Amazon SageMaker Unified Studio an.
Erstellen Sie ein neues Projekt oder öffnen Sie ein vorhandenes Projekt.
Stellen Sie in den Projekteinstellungen sicher, dass das Profil
truein den Blueprint-Parametern aufenableTrustedIdentityPropagationPermissionseingestellt ist.
Schritt 6: Fügen Sie die EMR-Anwendung Serverless als Compute hinzu
Die Rechenkonfiguration für das Amazon SageMaker Unified Studio-Projekt unterstützt derzeit nicht das Hinzufügen einer vorhandenen EMR-Serverless-Anwendung über die Konsole. Verwenden Sie den AWS CLI , um die Verbindung herzustellen:
aws datazone create-connection \ --domain-identifierdomain-id\ --name "my-emr-serverless-connection" \ --environment-identifierenvironment-id\ --props '{ "sparkEmrProperties": { "computeArn": "arn:aws:emr-serverless:region:account-id:/applications/application-id", "runtimeRole": "arn:aws:iam::account-id:role/emr-serverless-tip-job-role" } }'
Ersetzen Sie die folgenden Werte:
: Ihre Amazon SageMaker Unified Studio-Domain-ID.domain-id: Die Umgebungs-ID für Ihr Projekt (verwenden Sie die Tooling-Umgebung).environment-id: Die EMR Serverless-Anwendungs-ID aus Schritt 3.application-id: Die Rolle zur Auftragsausführung aus Schritt 4.emr-serverless-tip-job-role
Wichtig
Die create-connection API erfordert, dass der Aufrufer Mitglied des DataZone Projekts ist. Wenn Sie eine erhaltenAccessDeniedException, fügen Sie Ihre IAM-Rolle als Projektmitwirkender hinzu, bevor Sie die Verbindung herstellen:
import boto3 session = boto3.Session(profile_name='your-profile', region_name='your-region') client = session.client('datazone') client.create_project_membership( domainIdentifier='domain-id', projectIdentifier='project-id', designation='PROJECT_CONTRIBUTOR', member={'userIdentifier': 'arn:aws:iam::account-id:role/your-role'} )
Konfigurieren Sie die DataZone Benutzerrolle des Projekts für EMR Serverless Access.
Die DataZone Benutzerrolle für die Projektumgebung muss über Berechtigungen für die Interaktion mit der EMR Serverless-Anwendung verfügen. Fügen Sie der Rolle die folgende Inline-Richtlinie hinzu (der Rollenname folgt dem Musterdatazone_usr_role_<project-id>_<environment-id>):
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:GetApplication", "emr-serverless:StartApplication", "emr-serverless:StopApplication", "emr-serverless:ListApplications", "emr-serverless:AccessLivyEndpoints", "emr-serverless:StartJobRun", "emr-serverless:GetJobRun", "emr-serverless:ListJobRuns", "emr-serverless:CancelJobRun", "emr-serverless:GetDashboardForJobRun" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::111122223333:role/emr-serverless-tip-job-role", "Condition": { "StringLike": { "iam:PassedToService": "emr-serverless.amazonaws.com" } } } ] }
Gewähren Sie Lake Formation Berechtigungen DataZone für die Benutzerrolle:
# Grant DESCRIBE on the database aws lakeformation grant-permissions \ --principal '{"DataLakePrincipalIdentifier": "arn:aws:iam::account-id:role/datazone_usr_role_project-id_environment-id"}' \ --permissions '["DESCRIBE"]' \ --resource '{"Database": {"DatabaseName": "tip_tutorial_db", "CatalogId": "account-id"}}' # Grant SELECT and DESCRIBE on the table aws lakeformation grant-permissions \ --principal '{"DataLakePrincipalIdentifier": "arn:aws:iam::account-id:role/datazone_usr_role_project-id_environment-id"}' \ --permissions '["SELECT","DESCRIBE"]' \ --resource '{"Table": {"DatabaseName": "tip_tutorial_db", "Name": "employees", "CatalogId": "account-id"}}'
Beschränkung der Konsole für serverlose EMR-Verbindungen
Amazon SageMaker Unified Studio unterstützt derzeit das Hinzufügen vorhandener Amazon EMR zu EC2-Clustern über die Konsolen-Rechenkonfiguration. Verwenden Sie für serverlose EMR-Anwendungen die AWS CLI oben gezeigte Methode.
Schritt 7: Fragen Sie eine Beispieltabelle ab
Öffnen Sie einen JupyterLab IDE-Bereich in Ihrem Amazon SageMaker Unified Studio-Projekt.
Wählen Sie die EMR-Verbindung ohne Server als Rechenleistung für die Notebook-Ausführung aus.
Führen Sie in einer neuen Notebook-Zelle die folgenden PySpark Abfragen aus:
%%pyspark my-emr-serverless-connection spark.sql("SHOW DATABASES").show() %%pyspark my-emr-serverless-connection spark.sql("SELECT * FROM tip_tutorial_db.employees LIMIT 10").show()Stellen Sie sicher, dass die Abfrage Daten zurückgibt. Dies bestätigt, dass Ihre IAM Identity Center-Identität an Lake Formation weitergegeben wurde und der Zugriff auf der Grundlage Ihrer Identität gewährt wurde.
Die Anwendung konnte gestartet werden
Wenn Sie nach dem Herstellen der Verbindung zum ersten Mal eine Zelle ausführen, startet EMR Serverless die Anwendung (Kaltstart). Dies kann 2 bis 3 Minuten dauern. Nachfolgende Zellen werden innerhalb von Sekunden ausgeführt, solange die Sitzung aktiv ist.
Fehler mit „Zugriff verweigert“ beheben
Wenn Sie die Fehlermeldung „Zugriff verweigert“ erhalten, überprüfen Sie Folgendes:
Ihrem IAM Identity Center-Benutzer oder Ihrer SELECT/DESCRIBE IAM Identity Center-Gruppe wurde DESCRIBE für die Datenbank und die Tabelle in Lake Formation erteilt.
Die Rolle zur Auftragsausführung verfügt über
lakeformation:GetDataAccessAWS Glue Data Catalog-Berechtigungen.Die DataZone Benutzerrolle hat Lake Formation-Berechtigungen für die Datenbank und die Tabelle.
Der Amazon S3-Standort Lake Formation ist mit einer benutzerdefinierten Rolle registriert, die Folgendes umfasst
sts:SetContext(nicht die serviceverknüpfte Rolle).
Fehlerbehebung
| Fehler | Ursache | Korrigieren |
|---|---|---|
AccessDeniedException: emr-serverless:GetApplication |
Der DataZone Benutzerrolle fehlen EMR Serverless-Berechtigungen. | Fügen Sie der DataZone Benutzerrolle die EMR Serverless-Inline-Richtlinie hinzu (siehe Schritt 6). |
| Beim Warten darauf, dass die Anwendung den Status GESTARTET erreicht, ist das Zeitlimit überschritten | Der Kaltstart der EMR-Serverless-App überschreitet das Standard-Timeout. | Re-run die Zelle. Die App startet weiterhin im Hintergrund und ist beim nächsten Versuch bereit. |
| Sitzung wurde nicht gefunden. Aufgrund eines Timeouts im Leerlauf bereinigt. | Die Spark-Sitzung konnte aufgrund unzureichender Berechtigungen für die Rolle zur Auftragsausführung nicht gestartet werden. | Stellen Sie sicher, dass die Rolle zur Auftragsausführung über Amazon S3-, Amazon CloudWatch Logs-, AWS Glue- und Lake Formation-Berechtigungen verfügt (siehe Schritt 4). |
| Ungenügende Lake Formation-Berechtigung (en): Erforderlich. Beschreibung in der Datenbank | Ihre Identität oder Rolle verfügt nicht über Lake Formation-Berechtigungen auf Datenbankebene. | Gewähren Sie dem IAM Identity Center-Benutzer, der Rolle zur Auftragsausführung und DataZone der Benutzerrolle DESCRIBE für die Datenbank. |
TABLE_OR_VIEW_NOT_FOUND |
Die Spark-Sitzung ist nicht für die Verwendung des AWS Glue-Datenkatalogs konfiguriert. | Stellen Sie sicher, dass die EMR-Serverless-Anwendung auch die AWS Glue-Metastore-Factory-Klasse enthält spark.sql.catalogImplementation=hive runtimeConfiguration (siehe Schritt 3). |
AccessDeniedException: CreateConnection |
Der Anrufer ist kein Mitglied des Projekts. DataZone | Fügen Sie Ihre Rolle als Projektmitwirkender hinzu, bevor Sie anrufen create-connection (siehe Schritt 6). |
Bereinigen von Ressourcen
Um laufende Gebühren zu vermeiden, sollten Sie die Ressourcen löschen, die Sie für dieses Tutorial erstellt haben:
Löschen Sie die EMR Serverless-Anwendung.
Entfernen Sie die Amazon SageMaker Unified Studio-Verbindung und löschen Sie das Amazon SageMaker Unified Studio-Projekt (und die Domain, falls Sie es nur für dieses Tutorial erstellt haben).
Widerrufen Sie die von Ihnen erteilten Lake Formation-Berechtigungen und melden Sie den Amazon S3-Datenstandort ab.
Löschen Sie die IAM-Rollen, die Sie in Schritt 2 und Schritt 4 erstellt haben.
Löschen Sie alle Amazon S3-Testbuckets und Beispieldaten.
Nächste Schritte
Um die Identitätsweitergabe in zu überprüfen CloudTrail, suchen Sie im EMR Serverless-Service
sts:SetContextnachAssumeRoleEreignissen.Um den Zugriff für verschiedene Benutzer einzuschränken, erstellen Sie zusätzliche IAM Identity Center-Benutzer und gewähren Sie ihnen unterschiedliche Lake Formation-Berechtigungen für dieselbe Tabelle (z. B. Filterung auf Spalten- oder Zeilenebene).
Bei Produktionsbereitstellungen sollten Sie die Amazon S3- und AWS Glue-Berechtigungen der Rolle zur Auftragsausführung auf bestimmte Ressourcen beschränken, anstatt Platzhalter zu verwenden.
Weitere Informationen zur Verwendung von EMR Serverless mit Amazon SageMaker Unified Studio finden Sie unter EMR Serverless in Amazon Unified Studio. SageMaker