Richten Sie die Berechtigungen ein, um das Auflisten und Starten von Amazon EMR-Anwendungen von Studio aus SageMaker zu ermöglichen - Amazon SageMaker KI

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.

Richten Sie die Berechtigungen ein, um das Auflisten und Starten von Amazon EMR-Anwendungen von Studio aus SageMaker zu ermöglichen

In diesem Abschnitt beschreiben wir detailliert die Rollen und Berechtigungen, die erforderlich sind, um EMR Serverless-Anwendungen von SageMaker Studio aus aufzulisten und eine Verbindung zu diesen herzustellen. Dabei werden Szenarien berücksichtigt, in denen Studio und die EMR Serverless-Anwendungen im selben AWS Konto oder in verschiedenen Konten bereitgestellt werden.

Die Rollen, denen Sie die erforderlichen Berechtigungen hinzufügen müssen, hängen davon ab, ob Studio und Ihre EMR Serverless-Anwendungen sich in demselben AWS Konto (Einzelkonto) oder in separaten Konten (Cross Account) befinden. Es gibt zwei Arten von Rollen:

  • Ausführungsrollen:

    • Runtime-Ausführungsrollen (Role-Based Access Control-Rollen), die von EMR Serverless verwendet werden: Dies sind die IAM-Rollen, die von den EMR Serverless-Auftragsausführungsumgebungen verwendet werden, um auf andere AWS Dienste und Ressourcen zuzugreifen, die während der Laufzeit benötigt werden, z. B. Amazon S3 für den Datenzugriff, für die Protokollierung, CloudWatch den Zugriff auf den AWS Glue Datenkatalog oder andere Dienste, die Ihren Workload-Anforderungen entsprechen. Wir empfehlen, diese Rollen in dem Konto zu erstellen, in dem die EMR Serverless-Anwendungen ausgeführt werden.

      Weitere Informationen zu Runtime-Rollen finden Sie unter Job Runtime Roles im EMR Serverless User Guide.

      Anmerkung

      Sie können mehrere RBAC-Rollen für Ihre EMR Serverless-Anwendung definieren. Diese Rollen können auf den Zuständigkeiten und Zugriffsebenen basieren, die von verschiedenen Benutzern oder Gruppen innerhalb Ihrer Organisation benötigt werden. Weitere Informationen zu RBAC-Berechtigungen finden Sie unter Bewährte Sicherheitsmethoden für Amazon Amazon EMR Serverless.

    • SageMaker KI-Ausführungsrolle: Die Ausführungsrolle, mit der SageMaker KI bestimmte Aufgaben ausführen kann, z. B. das Lesen von Daten aus Amazon S3 S3-Buckets, das Schreiben von Protokollen in und den Zugriff auf andere AWS Dienste, die Ihr Workflow möglicherweise benötigt. CloudWatch Die SageMaker AI-Ausführungsrolle verfügt auch über die spezielle Berechtigung, die es der SageMaker KI ermöglichtiam:PassRole, temporäre Runtime-Ausführungsrollen an die EMR Serverless-Anwendungen zu übergeben. Diese Rollen geben den serverlosen EMR-Anwendungen die Berechtigungen, die sie benötigen, um mit anderen AWS Ressourcen zu interagieren, während sie ausgeführt werden.

  • Voraussichtliche Rollen (auch als Service Access Roles bezeichnet):

    • Dies sind die IAM-Rollen, die die Ausführungsrolle von SageMaker KI übernehmen kann, um Vorgänge im Zusammenhang mit der Verwaltung von EMR-Anwendungen ohne Server auszuführen. Diese Rollen definieren die Berechtigungen und Zugriffsrichtlinien, die für das Auflisten, Herstellen einer Verbindung oder Verwaltung von EMR Serverless-Anwendungen erforderlich sind. Sie werden in der Regel in kontenübergreifenden Szenarien verwendet, in denen sich die serverlosen EMR-Anwendungen in einem anderen AWS Konto als der SageMaker AI-Domäne befinden. Eine dedizierte IAM-Rolle für Ihre serverlosen EMR-Anwendungen hilft dabei, dem Prinzip der geringsten Rechte zu folgen und sicherzustellen, dass Amazon EMR nur über die erforderlichen Berechtigungen verfügt, um Ihre Jobs auszuführen und gleichzeitig andere Ressourcen in Ihrem Konto zu schützen. AWS

Wenn Sie diese Rollen richtig verstehen und konfigurieren, können Sie sicherstellen, dass SageMaker Studio über die erforderlichen Berechtigungen für die Interaktion mit EMR Serverless-Anwendungen verfügt, unabhängig davon, ob sie im selben Konto oder für verschiedene Konten bereitgestellt werden.

Ein einziges Konto

Die folgenden Diagramme veranschaulichen die Rollen und Berechtigungen, die erforderlich sind, um EMR Serverless-Anwendungen von Studio aus aufzulisten und eine Verbindung zu ihnen herzustellen, wenn Studio und die Anwendungen im selben AWS Konto bereitgestellt werden.

Das Diagramm zeigt die Rollen und Berechtigungen, die zum Auflisten und Verbinden von EMR Serverless-Anwendungen aus Studio erforderlich sind, wenn Studio und die Anwendungen sich im selben AWS Konto befinden.

Wenn Ihre Amazon EMR-Anwendungen und Studio auf demselben AWS Konto bereitgestellt werden, gehen Sie wie folgt vor:

  1. Schritt 1: Rufen Sie den ARN des Amazon S3 S3-Buckets ab, den Sie für Datenquellen verwenden, und geben Sie Daten in der Amazon S3 S3-Konsole aus.

    Informationen darüber, wie Sie einen Bucket anhand seines Namens finden, finden Sie unter Zugreifen auf einen Amazon S3 S3-Bucket und Auflisten. Informationen zum Erstellen eines Amazon S3 S3-Buckets finden Sie unter Bucket erstellen.

  2. Schritt 2: Erstellen Sie mindestens eine Job-Runtime-Ausführungsrolle für Ihre EMR Serverless-Anwendung in Ihrem Konto (das EMRServerlessRuntimeExecutionRoleA Anwendungsfalldiagramm für ein einzelnes Konto oben). Wählen Sie Benutzerdefinierte Vertrauensrichtlinie als vertrauenswürdige Entität aus. Fügen Sie die für Ihren Job erforderlichen Berechtigungen hinzu. Sie benötigen mindestens vollen Zugriff auf einen Amazon S3 S3-Bucket sowie Erstellungs- und Lesezugriff auf den AWS Glue Datenkatalog.

    Gehen Sie wie folgt vor, um detaillierte Anweisungen zum Erstellen einer neuen Runtime-Ausführungsrolle für Ihre EMR Serverless-Anwendungen zu erstellen:

    1. Navigieren Sie zur IAM-Konsole.

    2. Wählen Sie im linken Navigationsbereich Richtlinie und dann Richtlinie erstellen aus.

    3. Fügen Sie die für Ihre Runtime-Rolle erforderlichen Berechtigungen hinzu, geben Sie der Richtlinie einen Namen und wählen Sie dann Richtlinie erstellen aus.

      Unter Job Runtime Roles for EMR Serverless finden Sie Beispiele für Laufzeitrichtlinien für eine EMR Serverless Runtime-Rolle.

    4. Wählen Sie im linken Navigationsbereich Rollen und anschließend Rolle erstellen aus.

    5. Wählen Sie auf der Seite Rolle erstellen die Option Benutzerdefinierte Vertrauensrichtlinie als vertrauenswürdige Entität aus.

    6. Fügen Sie das folgende JSON-Dokument in den Abschnitt Benutzerdefinierte Vertrauensrichtlinie ein und wählen Sie dann Weiter aus.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "emr-serverless.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    7. Fügen Sie auf der Seite „Berechtigungen hinzufügen“ die Richtlinie hinzu, die Sie erstellt haben, und wählen Sie dann Weiter aus.

    8. Geben Sie auf der Seite „Überprüfen“ einen Namen für die Rolle ein, z. B. EMRServerlessAppRuntimeRoleA und eine optionale Beschreibung.

    9. Prüfen Sie die Rollendetails und wählen Sie Create Role (Rolle erstellen).

    Mit diesen Rollen können Sie und Ihre Teamkollegen eine Verbindung zu derselben Anwendung herstellen, wobei jeweils eine Runtime-Rolle verwendet wird, deren Umfang über Berechtigungen verfügt, die Ihrer individuellen Zugriffsebene auf Daten entsprechen.

    Anmerkung

    Die Spark-Sitzungen funktionieren unterschiedlich. Spark-Sitzungen werden auf der Grundlage der in Studio verwendeten Ausführungsrolle isoliert, sodass Benutzer mit unterschiedlichen Ausführungsrollen separate, isolierte Spark-Sitzungen haben. Wenn Sie die Quellidentität für Ihre Domain aktiviert haben, erfolgt darüber hinaus eine weitere Isolierung von Spark-Sitzungen über verschiedene Quellidentitäten hinweg.

  3. Schritt 3: Rufen Sie den ARN der SageMaker KI-Ausführungsrolle ab, die von Ihrem privaten Bereich verwendet wird.

    Informationen zu Bereichen und Ausführungsrollen in SageMaker KI finden Sie unterGrundlegendes zu Domainbereichsberechtigungen und Ausführungsrollen.

    Weitere Informationen zum Abrufen des ARN der Ausführungsrolle von SageMaker AI finden Sie unterHolen Sie sich Ihre Ausführungsrolle.

    Anmerkung

    Alternativ können SageMaker KI-Neulinge ihren Einrichtungsprozess vereinfachen, indem sie automatisch eine neue SageMaker KI-Ausführungsrolle mit den entsprechenden Berechtigungen erstellen. Überspringen Sie in diesem Fall die Schritte 3 und 4. Stattdessen können Benutzer entweder:

    • Wählen Sie beim Erstellen einer neuen Domain im Domain-Menü in der linken Navigationsleiste der SageMaker AI-Konsole die Option Für Organisationen einrichten.

    • Erstellen Sie im Rollenmanager-Menü der Konsole eine neue Ausführungsrolle und fügen Sie die Rolle dann einer vorhandenen Domäne oder einem vorhandenen Benutzerprofil hinzu.

    Wählen Sie beim Erstellen der Rolle die Option Studio EMR Serverless Applications ausführen unter Welche ML-Aktivitäten werden Benutzer ausführen? Geben Sie dann den Namen Ihres Amazon S3 S3-Buckets und die Job-Runtime-Ausführungsrolle an, die Ihre EMR Serverless-Anwendung verwenden soll (Schritt 2).

    Der SageMaker Rollenmanager fügt der neuen Ausführungsrolle automatisch die erforderlichen Berechtigungen zum Ausführen und Herstellen einer Verbindung zu EMR-Anwendungen hinzu. Mit dem SageMaker Rollenmanager können Sie Ihrer serverlosen EMR-Anwendung nur eine Runtime-Rolle zuweisen, und die Anwendung muss in demselben Konto ausgeführt werden, in dem Studio bereitgestellt wird, und zwar mit einer Runtime-Rolle, die in demselben Konto erstellt wurde.

  4. Schritt 4: Ordnen Sie der SageMaker AI-Ausführungsrolle, die auf Ihre EMR Serverless-Anwendung zugreift, die folgenden Berechtigungen zu.

    1. Öffnen Sie unter https://console.aws.amazon.com/sagemaker/ die IAM-Konsole.

    2. Wählen Sie Rollen aus und suchen Sie dann anhand des Namens im Suchfeld nach Ihrer Ausführungsrolle. Der Rollenname ist der letzte Teil des ARN nach dem letzten Schrägstrich (/).

    3. Folgen Sie dem Link zu Ihrer Rolle.

    4. Wählen Sie Berechtigungen hinzufügen und dann Inline-Richtlinie erstellen aus.

    5. Fügen Sie auf der Registerkarte JSON die Amazon EMR Serverless-Berechtigungen hinzu, die EMR Serverless-Zugriff und -Operationen ermöglichen. Einzelheiten zum Richtliniendokument finden Sie unter EMR Serverless Policies unter. Referenzrichtlinien Ersetzen Sie die regionaccountID, und übergeben EMRServerlessAppRuntimeRole (s) durch ihre tatsächlichen Werte, bevor Sie die Liste der Anweisungen in die Inline-Richtlinie Ihrer Rolle kopieren.

      Anmerkung

      Sie können so viele ARN-Zeichenfolgen von Runtime-Rollen wie nötig in die Berechtigung aufnehmen und diese durch Kommas trennen.

    6. Wählen Sie Weiter und geben Sie dann einen Richtliniennamen ein.

    7. Wählen Sie Create Policy (Richtlinie erstellen) aus.

    8. Wiederholen Sie den Schritt Inline-Richtlinie erstellen, um eine weitere Inline-Richtlinie hinzuzufügen, die der Rolle Berechtigungen zur Aktualisierung der Domänen, Benutzerprofile und Bereiche gewährt. Einzelheiten zum SageMakerUpdateResourcesPolicy Richtliniendokument finden Sie unter Richtlinie für Aktionen zur Aktualisierung von Domänen, Benutzerprofilen und Bereichen unterReferenzrichtlinien. Ersetzen Sie die region und accountID durch ihre tatsächlichen Werte, bevor Sie die Liste der Anweisungen in die Inline-Richtlinie Ihrer Rolle kopieren.

  5. Schritt 5:

    Ordnen Sie die Liste der Runtime-Rollen Ihrem Benutzerprofil oder Ihrer Domäne zu, sodass Sie die Rollenliste visuell durchsuchen und die Rolle auswählen können, die Sie verwenden möchten, wenn Sie eine Verbindung zu einer EMR Serverless-Anwendung herstellen. JupyterLab Sie können die SageMaker AI-Konsole oder das folgende Skript verwenden. Anschließend greifen alle Ihre Apache Spark- oder Apache Hive-Jobs, die von Ihrem Notebook aus erstellt wurden, nur auf die Daten und Ressourcen zu, die den Richtlinien entsprechen, die der ausgewählten Runtime-Rolle zugeordnet sind.

    Wichtig

    Wenn Sie diesen Schritt nicht abschließen, können Sie kein JupyterLab Notebook mit einer EMR Serverless-Anwendung verbinden.

    SageMaker AI console

    So verknüpfen Sie Ihre Runtime-Rollen mithilfe der SageMaker AI-Konsole mit Ihrem Benutzerprofil oder Ihrer Domain:

    1. Navigieren Sie zur SageMaker AI-Konsole unter https://console.aws.amazon.com/sagemaker/.

    2. Wählen Sie im linken Navigationsbereich die Domäne aus und wählen Sie dann die Domäne mit der SageMaker AI-Ausführungsrolle aus, deren Berechtigungen Sie aktualisiert haben.

      • So fügen Sie Ihrer Domain Ihre Runtime-Rollen hinzu: Navigieren Sie auf der Registerkarte „App-Konfigurationen“ der Seite mit den Domain-Details zu dem JupyterLabAbschnitt.

      • So fügen Sie Ihre Runtime-Rollen zu Ihrem Benutzerprofil hinzu: Wählen Sie auf der Seite mit den Domain-Details den Tab Benutzerprofile aus und wählen Sie das Benutzerprofil mit der SageMaker AI-Ausführungsrolle aus, deren Berechtigungen Sie aktualisiert haben. Navigieren Sie auf der Registerkarte App-Konfigurationen zum JupyterLabAbschnitt.

    3. Wählen Sie Bearbeiten und fügen Sie die ARNs Ihrer EMR Serverless Runtime Execution Rollen hinzu.

    4. Wählen Sie Absenden aus.

    Wenn Sie das nächste Mal eine Verbindung zu einer EMR Serverless-Anwendung herstellen JupyterLab, sollten die Runtime-Rollen in einem Drop-down-Menü zur Auswahl angezeigt werden.

    Python script

    Führen Sie in einer JupyterLab Anwendung, die mithilfe der SageMaker AI-Ausführungsrolle, deren Berechtigungen Sie aktualisiert haben, von einem privaten Bereich aus gestartet wurde, den folgenden Befehl in einem Terminal aus. Ersetzen Sie die domainIDuser-profile-name,studio-accountID, und EMRServerlessRuntimeExecutionRole (s) durch ihre richtigen Werte. Dieser Codeausschnitt aktualisiert die Benutzerprofileinstellungen für ein bestimmtes Benutzerprofil (client.update_userprofile) oder Domäneneinstellungen (client.update_domain) und ordnet insbesondere die zuvor erstellten EMR Serverless Runtime-Ausführungsrollen zu.

    import botocore.session import json sess = botocore.session.get_session() client = sess.create_client('sagemaker') client.update_userprofile( DomainId="domainID", UserProfileName="user-profile-name", DefaultUserSettings={ 'JupyterLabAppSettings': { 'EmrSettings': { 'ExecutionRoleArns': ["arn:aws:iam::studio-accountID:role/EMRServerlessRuntimeExecutionRoleA", "arn:aws:iam::studio-accountID:role/EMRServerlessRuntimeExecutionRoleAA"] } } }) resp = client.describe_domain(DomainId="domainID") resp['CreationTime'] = str(resp['CreationTime']) resp['LastModifiedTime'] = str(resp['LastModifiedTime']) print(json.dumps(resp, indent=2))

Kontenübergreifend

Die folgenden Diagramme veranschaulichen die Rollen und Berechtigungen, die erforderlich sind, um serverlose EMR-Anwendungen von Studio aus aufzulisten und eine Verbindung zu diesen herzustellen, wenn Studio und die Anwendungen in unterschiedlichen AWS Konten bereitgestellt werden.

Das Diagramm zeigt die Rollen und Berechtigungen, die zum Auflisten und Verbinden von EMR Serverless-Anwendungen aus Studio erforderlich sind, wenn Studio und die Anwendungen in unterschiedlichen AWS Konten gespeichert sind.

Weitere Informationen zum Erstellen einer Rolle für ein AWS Konto finden Sie unter https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html Erstellen einer IAM-Rolle (Konsole).

Bevor Sie loslegen:

Wenn Ihre EMR Serverless-Anwendungen und Studio in separaten AWS Konten bereitgestellt werden, konfigurieren Sie die Berechtigungen für beide Konten.

Auf dem EMR Serverless-Konto

Gehen Sie wie folgt vor, um die erforderlichen Rollen und Richtlinien für das Konto zu erstellen, auf dem Ihre EMR Serverless-Anwendung ausgeführt wird, das auch als vertrauenswürdiges Konto bezeichnet wird:

  1. Schritt 1: Erstellen Sie mindestens eine Job-Runtime-Ausführungsrolle für Ihre EMR Serverless-Anwendung in Ihrem Konto (die EMRServerlessRuntimeExecutionRoleB im obigen kontoübergreifenden Diagramm). Wählen Sie Benutzerdefinierte Vertrauensrichtlinie als vertrauenswürdige Entität aus. Fügen Sie die für Ihren Job erforderlichen Berechtigungen hinzu. Sie benötigen mindestens vollen Zugriff auf einen Amazon S3 S3-Bucket sowie Erstellungs- und Lesezugriff auf den AWS Glue Datenkatalog.

    Gehen Sie wie folgt vor, um eine neue Runtime-Ausführungsrolle für Ihre EMR Serverless-Anwendungen zu erstellen:

    1. Navigieren Sie zur IAM-Konsole.

    2. Wählen Sie im linken Navigationsbereich Richtlinie und dann Richtlinie erstellen aus.

    3. Fügen Sie die für Ihre Runtime-Rolle erforderlichen Berechtigungen hinzu, geben Sie der Richtlinie einen Namen und wählen Sie dann Richtlinie erstellen aus.

      Beispiel-Laufzeitrichtlinien für eine serverlose EMR-Laufzeitrolle finden Sie unter Job-Runtime-Rollen für Amazon EMR Serverless.

    4. Wählen Sie im linken Navigationsbereich Rollen und dann Rolle erstellen aus.

    5. Wählen Sie auf der Seite Rolle erstellen die Option Benutzerdefinierte Vertrauensrichtlinie als vertrauenswürdige Entität aus.

    6. Fügen Sie das folgende JSON-Dokument in den Abschnitt Benutzerdefinierte Vertrauensrichtlinie ein und wählen Sie dann Weiter aus.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "emr-serverless.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    7. Fügen Sie auf der Seite „Berechtigungen hinzufügen“ die Richtlinie hinzu, die Sie erstellt haben, und wählen Sie dann Weiter aus.

    8. Geben Sie auf der Seite „Überprüfen“ einen Namen für die Rolle ein, z. B. EMRServerlessAppRuntimeRoleB und eine optionale Beschreibung.

    9. Prüfen Sie die Rollendetails und wählen Sie Create Role (Rolle erstellen).

    Mit diesen Rollen können Sie und Ihre Teamkollegen eine Verbindung zu derselben Anwendung herstellen, wobei jeweils eine Runtime-Rolle verwendet wird, deren Umfang über Berechtigungen verfügt, die Ihrer individuellen Zugriffsebene auf Daten entsprechen.

    Anmerkung

    Die Spark-Sitzungen funktionieren unterschiedlich. Spark-Sitzungen sind auf der Grundlage der in Studio verwendeten Ausführungsrolle isoliert, sodass Benutzer mit unterschiedlichen Ausführungsrollen separate, isolierte Spark-Sitzungen haben. Wenn Sie die Quellidentität für Ihre Domain aktiviert haben, erfolgt darüber hinaus eine weitere Isolierung der Spark-Sitzungen über verschiedene Quellidentitäten hinweg.

  2. Schritt 2: Erstellen Sie eine benutzerdefinierte IAM-Rolle AssumableRole mit dem Namen der folgenden Konfiguration:

    • Berechtigungen: Erteilen Sie den die erforderlichen Berechtigungen (Amazon EMR Serverless-Richtlinien), um den Zugriff auf EMR Serverless-Ressourcen AssumableRole zu ermöglichen. Diese Rolle wird auch als Access-Rolle bezeichnet.

    • Vertrauensstellung: Konfigurieren Sie die Vertrauensrichtlinie soAssumableRole, dass die Ausführungsrolle (Die SageMakerExecutionRole im kontoübergreifenden Diagramm) von dem Studio-Konto aus übernommen werden kann, für das Zugriff erforderlich ist.

    Durch die Übernahme der Rolle kann Studio temporären Zugriff auf die erforderlichen Berechtigungen im EMR Serverless-Konto erhalten.

    Gehen Sie folgendermaßen vor, um detaillierte Anweisungen zum Erstellen eines neuen AssumableRole in Ihrem EMR AWS Serverless-Konto zu erhalten:

    1. Navigieren Sie zur IAM-Konsole.

    2. Wählen Sie im linken Navigationsbereich Richtlinie und dann Richtlinie erstellen aus.

    3. Fügen Sie auf der Registerkarte JSON die Amazon EMR Serverless-Berechtigungen hinzu, die EMR Serverless-Zugriff und -Operationen ermöglichen. Einzelheiten zum Richtliniendokument finden Sie unter EMR Serverless Policies unter. Referenzrichtlinien Ersetzen Sie die regionaccountID, und übergeben EMRServerlessAppRuntimeRole (s) durch ihre tatsächlichen Werte, bevor Sie die Liste der Anweisungen in die Inline-Richtlinie Ihrer Rolle kopieren.

      Anmerkung

      EMRServerlessAppRuntimeRoleHier ist die in Schritt 1 erstellte Rolle für die Ausführung der Job-Runtime (die Rolle EMRServerlessAppRuntimeRoleB im Cross-Account-Diagramm oben). Sie können so viele ARN-Zeichenfolgen von Runtime-Rollen wie nötig in die Berechtigung aufnehmen und diese durch Kommas trennen.

    4. Wählen Sie Weiter und geben Sie dann einen Richtliniennamen ein.

    5. Wählen Sie Create Policy (Richtlinie erstellen) aus.

    6. Wählen Sie im linken Navigationsbereich Rollen und dann Rolle erstellen aus.

    7. Wählen Sie auf der Seite Rolle erstellen die Option Benutzerdefinierte Vertrauensrichtlinie als vertrauenswürdige Entität aus.

    8. Fügen Sie das folgende JSON-Dokument in den Abschnitt Benutzerdefinierte Vertrauensrichtlinie ein und wählen Sie dann Weiter aus.

      studio-accountErsetzen Sie es durch die Studio-Konto-ID und AmazonSageMaker-ExecutionRole durch die Ausführungsrolle, die von Ihrem JupyterLab Bereich verwendet wird.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::studio-account:role/service-role/AmazonSageMaker-ExecutionRole" }, "Action": "sts:AssumeRole" } ] }
    9. Fügen Sie auf der Seite „Berechtigungen hinzufügen“ die Berechtigung hinzu, die EMRServerlessAppRuntimeRoleB Sie in Schritt 2 erstellt haben, und wählen Sie dann Weiter aus.

    10. Geben Sie auf der Seite „Überprüfen“ einen Namen für die Rolle ein, z. B. AssumableRole und eine optionale Beschreibung.

    11. Prüfen Sie die Rollendetails und wählen Sie Create Role (Rolle erstellen).

    Weitere Informationen zum Erstellen einer Rolle für ein AWS Konto finden Sie unter Erstellen einer IAM-Rolle (Konsole).

Auf dem Studio-Konto

Aktualisieren Sie auf dem Konto, auf dem Studio bereitgestellt wird, das auch als vertrauenswürdiges Konto bezeichnet wird, die SageMaker AI-Ausführungsrolle, die auf Ihre EMR Serverless-Anwendungen zugreift, mit den erforderlichen Berechtigungen für den Zugriff auf Ressourcen im vertrauenden Konto.

  1. Schritt 1: Rufen Sie den ARN der SageMaker KI-Ausführungsrolle ab, die von Ihrem Bereich verwendet wird.

    Informationen zu Bereichen und Ausführungsrollen in SageMaker KI finden Sie unterGrundlegendes zu Domainbereichsberechtigungen und Ausführungsrollen.

    Weitere Informationen zum Abrufen des ARN der Ausführungsrolle von SageMaker AI finden Sie unterHolen Sie sich Ihre Ausführungsrolle.

  2. Schritt 2: Ordnen Sie der SageMaker AI-Ausführungsrolle, die auf Ihre EMR Serverless-Anwendung zugreift, die folgenden Berechtigungen zu.

    1. Öffnen Sie unter https://console.aws.amazon.com/iam/ die IAM-Konsole.

    2. Wählen Sie Rollen aus und suchen Sie dann anhand des Namens im Suchfeld nach Ihrer Ausführungsrolle. Der Rollenname ist der letzte Teil des ARN nach dem letzten Schrägstrich (/).

    3. Folgen Sie dem Link zu Ihrer Rolle.

    4. Wählen Sie Berechtigungen hinzufügen und dann Inline-Richtlinie erstellen aus.

    5. Fügen Sie auf der Registerkarte JSON die Inline-Richtlinie hinzu, die der Rolle Berechtigungen zur Aktualisierung der Domänen, Benutzerprofile und Bereiche gewährt. Einzelheiten zum SageMakerUpdateResourcesPolicy Richtliniendokument finden Sie unter Richtlinie für Aktionen zur Aktualisierung von Domänen, Benutzerprofilen und Bereichen unterReferenzrichtlinien. Ersetzen Sie die region und accountID durch ihre tatsächlichen Werte, bevor Sie die Liste der Anweisungen in die Inline-Richtlinie Ihrer Rolle kopieren.

    6. Wählen Sie Weiter und geben Sie dann einen Richtliniennamen ein.

    7. Wählen Sie Create Policy (Richtlinie erstellen) aus.

    8. Wiederholen Sie den Schritt Inline-Richtlinie erstellen, um eine weitere Richtlinie hinzuzufügen, die der Ausführungsrolle die Rechte erteilt, die Aktionen anzunehmen AssumableRole und dann auszuführen, die gemäß der Zugriffsrichtlinie der Rolle zulässig sind.

      emr-accountErsetzen Sie durch die Amazon EMR Serverless-Konto-ID und AssumableRole durch den Namen der angenommenen Rolle, die im Amazon EMR Serverless-Konto erstellt wurde.

      { "Version": "2012-10-17", "Statement": { "Sid": "AllowSTSToAssumeAssumableRole", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::emr-account:role/AssumableRole" } }
  3. Schritt 3:

    Ordnen Sie die Liste der Runtime-Rollen Ihrer Domäne oder Ihrem Benutzerprofil zu, sodass Sie die Rollenliste visuell durchsuchen und die Rolle auswählen können, die Sie verwenden möchten, wenn Sie eine Verbindung zu einer EMR Serverless-Anwendung herstellen. JupyterLab Sie können die SageMaker AI-Konsole oder das folgende Skript verwenden. Anschließend greifen alle Ihre Apache Spark- oder Apache Hive-Jobs, die von Ihrem Notebook aus erstellt wurden, nur auf die Daten und Ressourcen zu, die den Richtlinien entsprechen, die der ausgewählten Runtime-Rolle zugeordnet sind.

    Wichtig

    Wenn Sie diesen Schritt nicht abschließen, können Sie kein JupyterLab Notebook mit einer EMR Serverless-Anwendung verbinden.

    SageMaker AI console

    So verknüpfen Sie Ihre Runtime-Rollen mithilfe der SageMaker AI-Konsole mit Ihrem Benutzerprofil oder Ihrer Domain:

    1. Navigieren Sie zur SageMaker AI-Konsole unter https://console.aws.amazon.com/sagemaker/.

    2. Wählen Sie im linken Navigationsbereich die Domäne aus und wählen Sie dann die Domäne mit der SageMaker AI-Ausführungsrolle aus, deren Berechtigungen Sie aktualisiert haben.

      • So fügen Sie Ihrer Domain Ihre Runtime-Rollen hinzu: Navigieren Sie auf der Registerkarte „App-Konfigurationen“ der Seite mit den Domain-Details zu dem JupyterLabAbschnitt.

      • So fügen Sie Ihre Runtime-Rollen zu Ihrem Benutzerprofil hinzu: Wählen Sie auf der Seite mit den Domain-Details den Tab Benutzerprofile aus und wählen Sie das Benutzerprofil mit der SageMaker AI-Ausführungsrolle aus, deren Berechtigungen Sie aktualisiert haben. Navigieren Sie auf der Registerkarte App-Konfigurationen zum JupyterLabAbschnitt.

    3. Wählen Sie Bearbeiten und fügen Sie die Rollen ARNs Ihrer angenommenen Rolle und EMR Serverless Runtime Execution hinzu.

    4. Wählen Sie Absenden aus.

    Wenn Sie das nächste Mal eine Verbindung zu einer EMR Serverless-Anwendung herstellen JupyterLab, sollten die Runtime-Rollen in einem Drop-down-Menü zur Auswahl angezeigt werden.

    Python script

    Führen Sie in einer JupyterLab Anwendung, die mithilfe der SageMaker AI-Ausführungsrolle, deren Berechtigungen Sie aktualisiert haben, von einem privaten Bereich aus gestartet wurde, den folgenden Befehl in einem Terminal aus. Ersetzen SiedomainID, user-profile-namestudio-accountID, und EMRServerlessRuntimeExecutionRole durch die entsprechenden Werte. Dieser Codeausschnitt aktualisiert die Benutzerprofileinstellungen für ein bestimmtes Benutzerprofil (client.update_userprofile) oder Domäneneinstellungen (client.update_domain) innerhalb einer SageMaker AI-Domain. Insbesondere werden die Runtime-Ausführungsrollen für Amazon EMR Serverless festgelegt, die Sie zuvor erstellt haben. Außerdem kann die JupyterLab Anwendung eine bestimmte IAM-Rolle (AssumableRole) für die Ausführung von serverlosen EMR-Anwendungen innerhalb des Amazon EMR-Kontos übernehmen.

    import botocore.session import json sess = botocore.session.get_session() client = sess.create_client('sagemaker') client.update_userprofile( DomainId="domainID", UserProfileName="user-profile-name", DefaultUserSettings={ 'JupyterLabAppSettings': { 'EmrSettings': { 'AssumableRoleArns': ["arn:aws:iam::emr-accountID:role/AssumableRole"], 'ExecutionRoleArns': ["arn:aws:iam::emr-accountID:role/EMRServerlessRuntimeExecutionRoleA", "arn:aws:iam::emr-accountID:role/AnotherRuntimeExecutionRole"] } } }) resp = client.describe_user_profile(DomainId="domainID", UserProfileName=user-profile-name") resp['CreationTime'] = str(resp['CreationTime']) resp['LastModifiedTime'] = str(resp['LastModifiedTime']) print(json.dumps(resp, indent=2))

Referenzrichtlinien

  • Serverlose EMR-Richtlinien: Diese Richtlinie ermöglicht die Verwaltung serverloser EMR-Anwendungen, einschließlich der Auflistung, Erstellung (mit erforderlichen SageMaker KI-Tags), Starten, Stoppen, Abrufen von Details, Löschen, Zugreifen auf Livy-Endpunkte und Abrufen von Dashboards zur Auftragsausführung. Es ermöglicht auch die Übergabe der erforderlichen EMR-Serverless-Anwendungslaufzeitrolle an den Dienst.

    • EMRServerlessListApplications: Ermöglicht die ListApplications Aktion für alle EMR Serverless-Ressourcen in der angegebenen Region und AWS dem angegebenen Konto.

    • EMRServerlessPassRole: Ermöglicht die Übergabe der angegebenen Runtime-Rolle (n) im angegebenen AWS Konto, jedoch nur, wenn die Rolle an den übergeben wird. emr-serverless.amazonaws.com service

    • EMRServerlessCreateApplicationAction: Erlaubt die TagResource Aktionen CreateApplication und Aktionen für EMR Serverless-Ressourcen in der angegebenen Region und AWS dem angegebenen Konto. Es erfordert jedoch, dass die Ressourcen, die erstellt oder markiert werden, über spezifische Tag-Schlüssel (sagemaker:domain-arn, undsagemaker:space-arn) verfügensagemaker:user-profile-arn, deren Werte ungleich Null sind.

    • EMRServerlessDenyTaggingAction: Die UntagResource Aktionen TagResource und auf serverlosen EMR-Ressourcen in der angegebenen Region und AWS Konto, falls für die Ressourcen keiner der angegebenen Tag-Schlüssel (sagemaker:domain-arnsagemaker:user-profile-arn, undsagemaker:space-arn) gesetzt ist.

    • EMRServerlessActions: Erlaubt verschiedene Aktionen (StartApplication,StopApplication,GetApplication, DeleteApplicationAccessLivyEndpoints, undGetDashboardForJobRun) auf serverlosen EMR-Ressourcen, jedoch nur, wenn für die Ressourcen die angegebenen Tag-Schlüssel (sagemaker:domain-arnsagemaker:user-profile-arn, undsagemaker:space-arn) auf Werte ungleich Null gesetzt sind.

    Die im bereitgestellten JSON-Dokument definierte IAM-Richtlinie gewährt diese Berechtigungen, beschränkt diesen Zugriff jedoch auf das Vorhandensein bestimmter SageMaker KI-Tags in den EMR Serverless-Anwendungen, um sicherzustellen, dass nur Amazon EMR Serverless-Ressourcen verwaltet werden können, die einer bestimmten SageMaker KI-Domäne, einem bestimmten Benutzerprofil und einem bestimmten Bereich zugeordnet sind.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "EMRServerlessListApplications", "Effect": "Allow", "Action": [ "emr-serverless:ListApplications" ], "Resource": "arn:aws:emr-serverless:region:accountID:/*" }, { "Sid": "EMRServerlessPassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::accountID:EMRServerlessAppRuntimeRole", "Condition": { "StringLike": { "iam:PassedToService": "emr-serverless.amazonaws.com" } } }, { "Sid": "EMRServerlessCreateApplicationAction", "Effect": "Allow", "Action": [ "emr-serverless:CreateApplication", "emr-serverless:TagResource" ], "Resource": "arn:aws:emr-serverless:region:accountID:/*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": [ "sagemaker:domain-arn", "sagemaker:user-profile-arn", "sagemaker:space-arn" ] }, "Null": { "aws:RequestTag/sagemaker:domain-arn": "false", "aws:RequestTag/sagemaker:user-profile-arn": "false", "aws:RequestTag/sagemaker:space-arn": "false" } } }, { "Sid": "EMRServerlessDenyTaggingAction", "Effect": "Deny", "Action": [ "emr-serverless:TagResource", "emr-serverless:UntagResource" ], "Resource": "arn:aws:emr-serverless:region:accountID:/*", "Condition": { "Null": { "aws:ResourceTag/sagemaker:domain-arn": "true", "aws:ResourceTag/sagemaker:user-profile-arn": "true", "aws:ResourceTag/sagemaker:space-arn": "true" } } }, { "Sid": "EMRServerlessActions", "Effect": "Allow", "Action": [ "emr-serverless:StartApplication", "emr-serverless:StopApplication", "emr-serverless:GetApplication", "emr-serverless:DeleteApplication", "emr-serverless:AccessLivyEndpoints", "emr-serverless:GetDashboardForJobRun" ], "Resource": "arn:aws:emr-serverless:region:accountID:/applications/*", "Condition": { "Null": { "aws:ResourceTag/sagemaker:domain-arn": "false", "aws:ResourceTag/sagemaker:user-profile-arn": "false", "aws:ResourceTag/sagemaker:space-arn": "false" } } } ] }
  • Richtlinie für Aktionen zur Aktualisierung von Domänen, Benutzerprofilen und Bereichen: Die folgende Richtlinie gewährt Berechtigungen zur Aktualisierung von SageMaker KI-Domänen, Benutzerprofilen und Bereichen innerhalb der angegebenen Region und des angegebenen Kontos. AWS

    { "Version": "2012-10-17", "Statement": [ { "Sid": "SageMakerUpdateResourcesPolicy", "Effect": "Allow", "Action": [ "sagemaker:UpdateDomain", "sagemaker:UpdateUserprofile", "sagemaker:UpdateSpace" ], "Resource": [ "arn:aws:sagemaker:region>:accountID:domain/*", "arn:aws:sagemaker:region:accountID:user-profile/*" ] } ] }