本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
從筆記本連線至 Amazon EMR 叢集
如果在 Studio 中透過 Jupyter 筆記本連線至 Amazon EMR 叢集,您可能需要執行其他設定。特別是下面討論的內容涉及兩個問題:
-
將參數傳遞到 Amazon EMR 連線命令。在 SparkMagic 核心中,由於 Papermill 傳遞參數的方式與 SparkMagic 接收參數的方式有所差異,因此您傳遞給 Amazon EMR 連線命令的參數可能無法依預期運作。此限制的解決方法是將參數作為環境變數傳遞。如需與此問題和解決方法相關的詳細資訊,請參閱將參數傳遞至 EMR 連線命令。
-
將使用者憑證傳遞至經過 Kerberos、LDAP 或 HTTP 基本身分驗證的 Amazon EMR 叢集。在互動模式下,Studio 會要求在快顯表單中輸入憑證,您可以在表單中輸入登錄憑證。在非互動式排程筆記本中,您必須 AWS Secrets Manager透過傳遞憑證。如需如何在排程筆記本任務 AWS Secrets Manager 中使用 的詳細資訊,請參閱 將使用者憑證傳遞至經過 Kerberos、LDAP 或 HTTP 基本身分驗證的 Amazon EMR 叢集。
將參數傳遞至 EMR 連線命令
如果您正在搭配 SparkMagic PySpark 和 Spark 核心使用映像,並且想要對 EMR 連線命令進行參數化,請在環境變數欄位中提供參數,而不是在建立工作表單中的參數欄位內 (在其他選項下拉式功能表中) 提供參數。請確定 Jupyter 筆記本中的 EMR 連線命令會將這些參數作為環境變數傳遞。例如,假設您在建立工作時以環境變數的形式傳遞 cluster-id
。您的 EMR 命令看起來應該如下列範例所示:
%%local import os
%sm_analytics emr connect —cluster-id {os.getenv('cluster_id')} --auth-type None
您需要透過此解決方法來滿足 SparkMagic 和 Papermill 的要求。對於背景環境,SparkMagic 核心預期 %%local
魔術命令搭配您定義的任何局部變數使用。但是,Papermill 不會將 %%local
魔術命令與您的覆寫內容一起傳遞。為了解決此 Papermill 限制,您必須在環境變數欄位中將參數作為環境變數提供。
將使用者憑證傳遞至經過 Kerberos、LDAP 或 HTTP 基本身分驗證的 Amazon EMR 叢集
若要建立使用 Kerberos、LDAP 或 HTTP 基本身分驗證的 Amazon EMR 叢集的安全連線,您可以使用 AWS Secrets Manager 將使用者憑證傳遞至連線命令。如需與建立 Secrets Manager 機密相關的資訊,請參閱建立 AWS Secrets Manager
機密。您的秘密必須包含您的使用者名稱和密碼。您可以使用 --secrets
引數傳遞機密,如下列範例所示:
%sm_analytics emr connect --cluster-id j_abcde12345 --auth Kerberos --secret aws_secret_id_123
您的管理員可以使用屬性型存取控制 (ABAC) 方法來設定彈性存取政策,會根據特殊標記指派存取權。您可以設定彈性存取許可,為帳戶中的所有使用者建立單一機密,或為每個使用者建立機密。下列程式碼範例對這些案例進行示範:
為帳戶中的所有使用者建立單一機密
{ "Version" : "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal" : {"AWS" : "arn:aws:iam::
AWS_ACCOUNT_ID
:role/service-role/AmazonSageMaker-ExecutionRole-20190101T012345"}, "Action" : "secretsmanager:GetSecretValue", "Resource" : [ "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID
:secret:aes123-1a2b3c", "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID
:secret:aes456-4d5e6f", "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID
:secret:aes789-7g8h9i" ] } ] }
為每個使用者建立不同的機密
您可以使用 PrincipleTag
標籤為每個使用者建立不同的機密,如下列範例所示:
{ "Version" : "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal" : {"AWS" : "arn:aws:iam::
AWS_ACCOUNT_ID
:role/service-role/AmazonSageMaker-ExecutionRole-20190101T012345"}, "Condition" : { "StringEquals" : { "aws:ResourceTag/user-identity
": "${aws:PrincipalTag/user-identity
}" } }, "Action" : "secretsmanager:GetSecretValue", "Resource" : [ "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID
:secret:aes123-1a2b3c", "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID
:secret:aes456-4d5e6f", "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID
:secret:aes789-7g8h9i" ] } ] }