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

无法从ECS触发SageMaker TrainJob:NoCredentialsError凭证问题求助

解决ECS Fargate上Flask调用SageMaker TrainJob的NoCredentialsError问题
  • 检查ECS任务执行角色配置
    确保你的ECS Fargate任务关联了正确的任务执行角色,且该角色拥有调用SageMaker的权限(比如AmazonSageMakerFullAccess或自定义权限)。同时,角色的信任策略必须允许ECS服务扮演它,信任策略示例:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "ecs-tasks.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    
  • 验证SageMaker执行角色的信任策略
    你代码中指定的AmazonSageMaker-ExecutioRole-20221019T223514角色,需要允许ECS任务角色扮演它,否则ECS任务无法将该角色传递给SageMaker。在角色的信任策略中添加ECS任务角色的ARN:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::你的账号ID:role/ECS任务角色名称"
          },
          "Action": "sts:AssumeRole"
        },
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "sagemaker.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    

    另外注意你代码里的角色名称拼写:Executio少了一个n,应该是Execution?如果是笔误会导致找不到角色,间接引发凭据问题。

  • 确保boto3自动获取任务角色凭据
    不要在代码中硬编码AWS凭据,ECS Fargate任务会自动通过实例元数据服务提供角色凭据。检查代码中是否有设置AWS_ACCESS_KEY_ID或AWS_SECRET_ACCESS_KEY的环境变量,这些会干扰boto3自动获取凭据。同时确保使用的boto3版本支持从ECS任务角色获取凭据(建议使用最新稳定版)。

  • 检查任务定义的IAM角色配置
    在ECS任务定义中,确认"任务执行角色"和"任务角色"都正确配置。如果你的Flask应用需要调用AWS服务,应该使用任务角色,而任务执行角色主要负责拉取镜像等操作。确保任务角色拥有必要的SageMaker权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:05:21