本地JupyterLab关联SageMaker运行任务报错:缺少resource-metadata.json
解决本地JupyterLab关联SageMaker时的元数据文件错误
问题根源
本地JupyterLab环境没有SageMaker托管实例自动生成的/opt/ml/metadata/resource-metadata.json元数据文件,导致扩展无法获取调用SageMaker服务所需的身份和资源信息。
手动配置解决方案
1. 创建元数据文件路径和文件
在本地机器上执行以下命令创建目录和文件:
sudo mkdir -p /opt/ml/metadata sudo touch /opt/ml/metadata/resource-metadata.json
2. 填写正确的元数据参数
编辑resource-metadata.json文件,填入以下内容(根据你的AWS环境替换占位值):
{ "AppType": "JupyterLab", "DomainId": "你的SageMaker Domain ID", "ExecutionRoleArn": "arn:aws:iam::你的AWS账号ID:role/service-role/你的SageMaker执行角色ARN", "ResourceArn": "arn:aws:sagemaker:你的区域:你的AWS账号ID:domain/你的SageMaker Domain ID", "ResourceName": "local-jupyterlab" }
参数说明
- AppType:固定填
"JupyterLab",匹配你的本地环境类型。 - DomainId:登录AWS控制台的SageMaker服务,进入Domain页面获取你的Domain ID(格式如
d-xxxxxxxxxxxx)。如果没有创建SageMaker Domain,需要先创建一个。 - ExecutionRoleArn:这是核心参数,必须是拥有SageMaker服务调用权限的IAM角色ARN。可以在IAM控制台中创建或选择已有的SageMaker执行角色(需包含
AmazonSageMakerFullAccess等必要权限)。 - ResourceArn:本地环境无需指向云端JupyterLab实例,可填写你的SageMaker Domain的ARN,格式为
arn:aws:sagemaker:区域:账号ID:domain/DomainID。 - ResourceName:自定义名称即可,比如
local-jupyterlab。
3. 验证AWS权限配置
确保本地环境已正确配置AWS凭证:
- 通过
aws configure命令配置你的AWS Access Key和Secret Key,或者设置环境变量AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY。 - 配置的凭证必须拥有访问上述ExecutionRoleArn的权限,以及调用SageMaker服务的权限。
内容的提问来源于stack exchange,提问作者danilabagroff
相关产品推荐
相关产品推荐

