You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Runtime Role从SageMaker Studio连接EMR集群失败:凭证为空

SageMaker Unified Studio连接EMR集群SQL查询凭证失败问题排查

问题背景

尝试从SageMaker Unified Studio连接现有EMR集群,通过JupyterLab运行SQL查询。已完成SageMaker要求的Runtime Role集成配置:

  • 创建EMR安全配置:启用传输中加密,认证设为IAM,授权设为Runtime Role;
  • 使用该安全配置启动EMR集群,按AWS指南配置Access Role;
  • 按官方文档设置Runtime Role。

正常验证场景

  • 可从Unified Studio的JupyterLab终端使用Runtime Role成功提交EMR步骤;
  • 可通过sm_analytics魔法命令连接EMR集群并启动Spark会话。

异常现象

将现有EMR集群添加到Unified Studio项目(填写Access Role ARN、Cluster ARN、Instance Profile ARN)后,在Notebook中使用关联的EMR计算执行基础SQL查询时,出现凭证链失效错误:

[com.amazon.ws.emr.hadoop.fs.guice.UserGroupMappingAWSSessionCredentialsProvider@1f408ab6:
Cannot invoke "com.amazonaws.auth.AWSCredentials.getAWSAccessKeyId()" because "credentials" is null,

com.amazon.ws.emr.hadoop.fs.HadoopConfigurationAWSCredentialsProvider@46e388ec:
Cannot invoke "com.amazonaws.auth.AWSCredentials.getAWSAccessKeyId()" because "credentials" is null,

com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.auth.InstanceProfileCredentialsProvider@28f05b0c:
Internal Server Error (Service: null; Status Code: 500; Error Code: null; Request ID: null; Proxy: null)]

已尝试通过SageMaker→域→用户配置文件→应用配置→Jupyter设置将Runtime Role设为EMR执行角色,但问题未解决。


排查方向与解决方案

1. 验证EMR Instance Profile的权限与信任关系

  • 确认Instance Profile关联的IAM角色具备Spark执行所需的基础权限(如s3:GetObject、ec2:DescribeInstances),且信任策略允许ec2.amazonaws.com扮演该角色;
  • 检查EMR集群的主节点、核心节点是否已正确关联该Instance Profile,可通过EC2控制台查看实例的IAM角色配置。

2. 检查Runtime Role的权限传递配置

  • 确保Runtime Role的信任策略同时允许SageMaker服务和EMR Access Role扮演该角色:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "sagemaker.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        },
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::[你的AWS账号ID]:role/[EMR Access Role名称]"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    
  • 确认Runtime Role拥有访问EMR集群资源(HDFS、关联S3存储)及EMR管理操作(emr:ListClusters、emr:DescribeCluster)的权限。

3. 排查网络与安全组连通性

  • 确认SageMaker域所在VPC与EMR集群VPC存在网络连通(同一VPC或已配置VPC对等连接);
  • 检查EMR主节点安全组是否允许来自SageMaker域的入站流量(包括Spark服务端口7077、HDFS相关端口等)。

4. 检查Unified Studio项目的EMR配置参数

  • 确认添加EMR集群时填写的Access Role ARN是EMR的服务角色(而非Instance Profile角色),Instance Profile ARN是EMR节点使用的实例配置文件;
  • 在Notebook中显式指定Runtime Role启动Spark会话,测试是否能绕过配置问题:
    from pyspark.sql import SparkSession
    spark = SparkSession.builder \
        .config("spark.hadoop.fs.s3a.aws.credentials.provider", "com.amazon.ws.emr.hadoop.fs.auth.RoleBasedAuthAWSCredentialsProvider") \
        .config("spark.hadoop.fs.s3a.role.arn", "[你的Runtime Role ARN]") \
        .getOrCreate()
    

5. 查看日志定位具体问题

  • 登录EMR主节点,查看HDFS或Spark相关日志(如/var/log/hadoop-hdfs/hadoop-hdfs-namenode-*.log、/var/log/spark/spark-history-server-*.log),获取凭证失败的详细触发信息;
  • 检查SageMaker Notebook执行角色是否具备sts:AssumeRole权限来获取Runtime Role的临时凭证。

内容的提问来源于stack exchange,提问作者valzor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 14:51:01