SageMaker处理作业enable_network_isolation参数作用及网络问题咨询
SageMaker Network Isolation 配置详解及凭证错误解决
1. enable_network_isolation=True 的具体含义
当启用该参数时,SageMaker处理作业会进入完全网络隔离模式:
- 作业容器被强制禁止访问任何公网资源,哪怕所在子网配置了NAT网关也无法突破限制。
- 仅允许通过预先配置的VPC Endpoints访问AWS服务,无法通过常规的AWS公网API端点调用服务。
- SageMaker控制平面不会自动向作业容器注入IAM角色的临时凭证,容器内部没有默认的AWS凭证可用。
2. 指定私有子网/安全组时,True/False 的差异
设为 False(默认值)
- 作业部署到指定的私有子网,可通过子网的路由规则访问公网(如果子网配置了NAT网关),或通过VPC Endpoints访问AWS服务。
- SageMaker自动为容器注入作业执行角色的临时凭证,脚本中调用AWS API(如S3、模型注册表)时无需手动配置凭证,boto3会自动获取。
- 作业可与VPC内其他资源(如EC2、RDS)通信,只要安全组规则允许。
设为 True
- 作业完全隔离,彻底阻断所有公网访问,子网的NAT网关配置会被忽略。
- 仅能通过VPC Endpoints访问AWS服务,必须提前在VPC中创建对应服务的端点(如S3、SageMaker模型注册表),且端点策略需允许作业执行角色访问。
- 容器内无默认IAM凭证注入,脚本直接调用AWS API会触发
NoCredentialsError——这就是你遇到的问题。 - 仅允许与VPC内同安全组/规则允许的资源通信,切断与SageMaker控制平面的常规凭证传递通道。
3. 解决 NoCredentialsError 的方案
如果你必须启用enable_network_isolation=True,需要完成以下配置:
- 创建必要的VPC Endpoints:
- 为S3创建Gateway Endpoint(关联存储模型的S3桶所在区域)
- 为SageMaker模型注册表创建Interface Endpoint(
com.amazonaws.<你的区域>.sagemaker.model-registry) - 为SageMaker API创建Interface Endpoint(
com.amazonaws.<你的区域>.sagemaker)
- 配置权限:
- 确保作业的执行IAM角色拥有访问目标S3桶、模型注册表的权限。
- 为上述VPC Endpoints添加策略,允许该IAM角色通过端点访问对应服务。
- 脚本内配置凭证:
由于容器无默认凭证,需手动通过环境变量传递临时凭证,或在脚本中使用boto3.Session指定有权限的IAM角色ARN(需确保角色信任关系允许SageMaker服务调用)。
如果你的场景不需要严格的完全隔离,建议将enable_network_isolation设为False——在私有子网+安全组的配置下,已经可以通过子网路由和安全组规则控制访问范围,同时能自动获取凭证,避免额外配置成本。
内容的提问来源于stack exchange,提问作者ezail
相关产品推荐
相关产品推荐

