Stellen Sie von Ihrem Studio-Notebook aus eine Connect zu einem Amazon-EMR-Cluster her
Wenn Sie von Ihrem Jupyter Notebook in Studio aus eine Verbindung zu einem Amazon EMR-Cluster herstellen, müssen Sie möglicherweise zusätzliche Einstellungen vornehmen. In der folgenden Diskussion werden insbesondere zwei Probleme behandelt:
-
Übergeben von Parametern an Ihren Amazon EMR-Verbindungsbefehl. In SparkMagic-Kerneln funktionieren Parameter, die Sie an Ihren Amazon EMR-Verbindungsbefehl übergeben, möglicherweise nicht wie erwartet, da Papermill die Parameter unterschiedlich weitergibt und wie SparkMagic Parameter empfängt. Die Behelfslösung zur Behebung dieser Einschränkung besteht darin, Parameter als Umgebungsvariablen zu übergeben. Weitere Informationen zum Problem und zur Problemumgehung finden Sie unter Übergeben Sie Parameter an Ihren EMR-Verbindungsbefehl.
-
Weitergabe von Benutzeranmeldedaten an Kerberos-, LDAP- oder HTTP Basic Auth-authentifizierte Amazon EMR-Cluster. Im interaktiven Modus fragt Studio in einem Popup-Formular nach Anmeldeinformationen, in das Sie Ihre Anmeldeinformationen eingeben können. In Ihrem nicht-interaktiven Notebook müssen Sie sie durch das AWS Secrets Manager durchreichen. Weitere Informationen zur Verwendung der AWS Secrets Manager in Ihren geplanten Notebook-Aufträgen finden Sie unter Übergeben Sie Benutzeranmeldeinformationen an Ihren Kerberos-, LDAP- oder HTTP Basic Auth-authentifizierten Amazon EMR-Cluster.
Übergeben Sie Parameter an Ihren EMR-Verbindungsbefehl
Wenn Sie Bilder mit den SparkMagic PySpark- und Spark-Kerneln verwenden und Ihren EMR-Verbindungsbefehl parametrisieren möchten, geben Sie Ihre Parameter im Feld Umgebungsvariablen statt im Feld Parameter im Formular Auftrag erstellen (im Dropdown-Menü Zusätzliche Optionen) an. Stellen Sie sicher, dass Ihr EMR-Verbindungsbefehl im Jupyter Notebook diese Parameter als Umgebungsvariablen übergibt. Nehmen wir zum Beispiel an, Sie übergeben cluster-id als Umgebungsvariable, wenn Sie Ihren Auftrag erstellen. Ihr EMR-Verbindungsbefehl sollte wie folgt aussehen:
%%local import os
%sm_analytics emr connect —cluster-id {os.getenv('cluster_id')} --auth-type None
Sie benötigen diese Problemumgehung, um die Anforderungen von SparkMagic und Papermill zu erfüllen. Für den Hintergrundkontext erwartet der SparkMagic-Kernel, dass der %%local magische Befehl allen von Ihnen definierten lokalen Variablen beiliegt. Papermill gibt den %%local magischen Befehl jedoch nicht zusammen mit Ihren Überschreibungen weiter. Um diese Papermill-Einschränkung zu umgehen, müssen Sie Ihre Parameter als Umgebungsvariablen im Feld Umgebungsvariablen angeben.
Übergeben Sie Benutzeranmeldeinformationen an Ihren Kerberos-, LDAP- oder HTTP Basic Auth-authentifizierten Amazon EMR-Cluster
Um eine sichere Verbindung zu einem Amazon EMR-Cluster herzustellen, der Kerberos-, LDAP- oder HTTP Basic Auth-Authentifizierung verwendet, verwenden Sie den Befehl AWS Secrets Manager zur Übergabe von Benutzeranmeldeinformationen an Ihre Verbindung. Informationen zum Erstellen eines Geheimnisses im Secrets Manager finden Sie unter Erstellen eines AWS Secrets Manager-Geheimnisses. Das Secret muss Ihren Benutzernamen und Ihr Passwort enthalten. Sie übergeben das Geheimnis mit dem --secrets Argument, wie im folgenden Beispiel dargestellt:
%sm_analytics emr connect --cluster-id j_abcde12345 --auth Kerberos --secret aws_secret_id_123
Ihr Administrator kann mithilfe einer ABAC-Methode (attribute-based-access-control) eine flexible Zugriffsrichtlinie einrichten, bei der der Zugriff auf speziellen Tags zugewiesen wird. Sie können flexiblen Zugriff einrichten, um ein einzelnes Geheimnis für alle Benutzer im Konto oder ein Geheimnis für jeden Benutzer zu erstellen. Die folgenden Codebeispiele veranschaulichen diese Szenarien:
Erstellen Sie ein einzelnes Geheimnis für alle Benutzer im Konto
Erstellen Sie für jeden Benutzer ein anderes Geheimnis
Mit dem PrincipleTag Tag können Sie für jeden Benutzer ein anderes Geheimnis erstellen, wie im folgenden Beispiel gezeigt: