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

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 EMR Amazon-Anwendungen von SageMaker Studio aus zu ermöglichen

In diesem Abschnitt beschreiben wir detailliert die Rollen und Berechtigungen, die erforderlich sind, um EMR serverlose Anwendungen von SageMaker Studio aus aufzulisten und eine Verbindung zu ihnen herzustellen. Dabei werden Szenarien berücksichtigt, in denen Studio und die EMR serverlosen 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 sich Studio und Ihre EMR serverlosen Anwendungen in demselben AWS Konto (Einzelkonto) oder in separaten Konten (kontoübergreifendes Konto) 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 serverlosen Jobausführungsumgebungen verwendet werden, um auf andere AWS Dienste und Ressourcen zuzugreifen, die während der Laufzeit benötigt werden, wie Amazon S3 für den Datenzugriff, CloudWatch für die Protokollierung, den Zugriff auf den AWS Glue Datenkatalog oder andere Dienste, die Ihren Workload-Anforderungen entsprechen. Wir empfehlen, diese Rollen in dem Konto zu erstellen, auf dem die EMR serverlosen Anwendungen ausgeführt werden.

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

      Anmerkung

      Sie können mehrere RBAC Rollen für Ihre EMR serverlose 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 Ausführungsrolle: Die Ausführungsrolle, mit der Sie bestimmte Aufgaben ausführen können SageMaker , 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 Der SageMaker Ausführungsrolle wird auch die spezielle Berechtigung zugewieseniam:PassRole, die es ermöglicht, temporäre Ausführungsrollen SageMaker zur Laufzeit an die EMR serverlosen Anwendungen zu übergeben. Diese Rollen geben den EMR serverlosen Anwendungen die Berechtigungen, die sie benötigen, um mit anderen AWS Ressourcen zu interagieren, während sie ausgeführt werden.

  • Voraussichtliche Rollen (auch als Dienstzugriffsrollen bezeichnet):

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

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 serverlosen Anwendungen verfügt, unabhängig davon, ob sie im selben Konto oder für verschiedene Konten bereitgestellt werden.

Einzelnes Konto

Die folgenden Diagramme veranschaulichen die Rollen und Berechtigungen, die erforderlich sind, um EMR serverlose 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 erforderlich sind, um EMR serverlose Anwendungen von Studio aus aufzulisten und zu verbinden, wenn Studio und die Anwendungen demselben AWS Konto angehören.

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

  1. Schritt 1: Rufen Sie den ARN Amazon S3 S3-Bucket 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 in Ihrem Konto mindestens eine Rolle zur Ausführung von Job Runtime EMR für Ihre Serverless-Anwendung (siehe Abbildung mit dem Anwendungsfall „Einzelkonto“ oben). EMRServerlessRuntimeExecutionRoleA 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 serverlosen Anwendungen 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 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-Rollen für EMR Serverless finden Sie Beispiele für Laufzeitrichtlinien für eine EMR serverlose 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.

      { "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 die SageMaker Ausführungsrolle ab, die ARN von Ihrem privaten Bereich verwendet wird.

    Informationen zu Spaces und Ausführungsrollen in SageMaker finden Sie unterGrundlegendes zu Domänenbereichsberechtigungen und Ausführungsrollen.

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

    Anmerkung

    Alternativ SageMaker können Benutzer, die noch nicht damit vertraut sind, ihren Einrichtungsprozess vereinfachen, indem sie automatisch eine neue SageMaker 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ü im linken Navigationsbereich der SageMakerKonsole 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 unter Welche ML-Aktivitäten werden Benutzer ausführen? die Option EMR Serverlose Studio-Anwendungen ausführen aus. Geben Sie dann den Namen Ihres Amazon S3 S3-Buckets und die Job-Runtime-Ausführungsrolle an, die Ihre EMR serverlose 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 serverlosen Anwendungen hinzu. Mit dem SageMaker Rollenmanager können Sie Ihrer EMR serverlosen Anwendung nur eine Runtime-Rolle zuweisen, und die Anwendung muss in demselben Konto ausgeführt werden, in dem Studio bereitgestellt wird, wobei eine Runtime-Rolle verwendet wird, die innerhalb desselben Kontos erstellt wurde.

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

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

    2. Wählen Sie Rollen und suchen Sie dann anhand des Namens im Suchfeld nach Ihrer Ausführungsrolle. Der Rollenname ist der letzte Teil vonARN, 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 JSONRegisterkarte die Amazon EMR Serverless-Berechtigungen hinzu, die EMR serverlosen Zugriff und Betrieb ermöglichen. Einzelheiten zum Richtliniendokument finden Sie unter EMRServerlose Richtlinien unter. Referenzrichtlinien Ersetzen Sie das region, accountID, und hat bestanden EMRServerlessAppRuntimeRole(s) mit ihren tatsächlichen Werten, bevor Sie die Liste der Anweisungen in die Inline-Richtlinie Ihrer Rolle kopieren.

      Anmerkung

      Sie können beliebig viele ARN Zeichenfolgen von Runtime-Rollen 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 den region and 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 Domain 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 serverlosen Anwendung herstellen. JupyterLab Sie können die SageMaker 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 ein JupyterLab Notebook nicht mit einer EMR serverlosen Anwendung verbinden.

    SageMaker console

    Gehen Sie mithilfe der SageMaker Konsole wie folgt vor, um Ihre Runtime-Rollen Ihrem Benutzerprofil oder Ihrer Domain zuzuordnen:

    1. Navigieren Sie zur SageMaker 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 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 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 Ihre EMR Serverless Runtime-Ausführungsrollen hinzu. ARNs

    4. Wählen Sie Absenden aus.

    Wenn Sie das nächste Mal eine Verbindung zu einer EMR serverlosen 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 von einem privaten Bereich aus mit der SageMaker Ausführungsrolle gestartet wurde, deren Berechtigungen Sie aktualisiert haben, 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 Rollen für die EMR serverlose Runtime-Ausführung zu, die Sie zuvor erstellt haben.

    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))

Kontoübergreifend

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

Das Diagramm zeigt die Rollen und Berechtigungen, die erforderlich sind, um EMR serverlose Anwendungen von Studio aus aufzulisten und zu verbinden, 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 serverlosen 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 serverlose Anwendung ausgeführt wird, das auch als vertrauenswürdiges Konto bezeichnet wird:

  1. Schritt 1: Erstellen Sie mindestens eine Rolle für die Ausführung von Jobs zur Runtime-Ausführung für Ihre EMR serverlose 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 detaillierte Anweisungen zum Erstellen einer neuen Runtime-Ausführungsrolle für Ihre EMR serverlosen Anwendungen 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 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 EMR serverlose Runtime-Rolle finden Sie unter Job runtime roles for 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.

      { "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), AssumableRole um den Zugriff auf EMR serverlose Ressourcen 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 für das EMR Serverless-Konto erhalten.

    Gehen Sie wie folgt vor, um detaillierte Anweisungen zum Erstellen eines neuen Kontos AssumableRole in EMR Ihrem 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 JSONRegisterkarte die Amazon EMR Serverless-Berechtigungen hinzu, die EMR serverlosen Zugriff und Betrieb ermöglichen. Einzelheiten zum Richtliniendokument finden Sie unter EMRServerlose Richtlinien unter. Referenzrichtlinien Ersetzen Sie die Werte 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 beliebig viele ARN Zeichenfolgen von Runtime-Rollen 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.

      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 IAMRolle erstellen (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 Ausführungsrolle, die auf Ihre EMR serverlosen Anwendungen zugreift, mit den erforderlichen Berechtigungen für den Zugriff auf Ressourcen im vertrauenswürdigen Konto.

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

    Informationen zu Spaces und Ausführungsrollen in SageMaker finden Sie unterGrundlegendes zu Domänenbereichsberechtigungen und Ausführungsrollen.

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

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

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

    2. Wählen Sie Rollen und suchen Sie dann anhand des Namens im Suchfeld nach Ihrer Ausführungsrolle. Der Rollenname ist der letzte Teil vonARN, 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 JSONRegisterkarte die Inline-Richtlinie hinzu, die der Rolle Berechtigungen zum Aktualisieren 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 es 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 serverlosen Anwendung herstellen. JupyterLab Sie können die SageMaker 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 ein JupyterLab Notebook nicht mit einer EMR serverlosen Anwendung verbinden.

    SageMaker console

    Gehen Sie mithilfe der SageMaker Konsole wie folgt vor, um Ihre Runtime-Rollen Ihrem Benutzerprofil oder Ihrer Domain zuzuordnen:

    1. Navigieren Sie zur SageMaker 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 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 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 serverlosen 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 von einem privaten Bereich aus mit der SageMaker Ausführungsrolle gestartet wurde, deren Berechtigungen Sie aktualisiert haben, den folgenden Befehl in einem Terminal aus. Ersetzen Sie die domainIDuser-profile-name,studio-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 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 EMR serverloser Anwendungen innerhalb des EMR Amazon-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

  • EMRServerlose Richtlinien: Diese Richtlinie ermöglicht die Verwaltung EMR serverloser Anwendungen, einschließlich Auflisten, Erstellen (mit den erforderlichen SageMaker Tags), Starten, Beenden, Abrufen von Details, Löschen, Zugreifen auf Livy-Endpunkte und Abrufen von Dashboards zur Auftragsausführung. Sie ermöglicht auch die Übergabe der erforderlichen Runtime-Rolle für EMR serverlose Anwendungen an den Dienst.

    • EMRServerlessListApplications: Ermöglicht die ListApplications Aktion für alle EMR serverlosen 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 emr-serverless.amazonaws.com service übergeben wird.

    • EMRServerlessCreateApplicationAction: Erlaubt die CreateApplication TagResource Endaktionen für EMR serverlose Ressourcen in der angegebenen Region und dem angegebenen AWS Konto. Es erfordert jedoch, dass die Ressourcen, die erstellt oder markiert werden, über bestimmte 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 für EMR serverlose Ressourcen in der angegebenen Region und dem angegebenen 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 (StartApplicationStopApplication,, GetApplication DeleteApplicationAccessLivyEndpoints, undGetDashboardForJobRun) für EMR serverlose Ressourcen, aber 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 Tags in den EMR serverlosen Anwendungen, um sicherzustellen, dass nur Amazon EMR Serverless-Ressourcen verwaltet werden können, die einer bestimmten SageMaker Domain, 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 Domänen, Benutzerprofilen und Bereichen innerhalb der angegebenen Region und AWS des angegebenen Kontos.

    { "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/*" ] } ] }