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

如何延长FargateCluster(Dask Cloud Provider)的角色令牌时长或刷新会话

解决Dask FargateCluster令牌时长仅6小时的问题

核心原因

Dask FargateCluster默认使用boto3的默认会话,即便IAM角色已设置12小时最大会话时长,若未显式指定会话时长,boto3会采用6小时默认值,且AWS配置文件的seconds_duration可能未被Dask底层客户端读取。

解决方案

1. 显式配置boto3会话时长并传入集群

手动创建指定12小时(43200秒)会话时长的boto3客户端,覆盖Dask默认的会话配置:

import boto3

# 通过STS获取带12小时时长的临时凭证
sts_client = boto3.client('sts')
assumed_role = sts_client.assume_role(
    RoleArn=f"arn:aws:iam::{aws_account_id}:role/{your_assumed_role_name}",
    RoleSessionName="DaskFargateSession",
    DurationSeconds=43200  # 该值不能超过角色设置的最大会话时长
)

# 用临时凭证创建ECS客户端
ecs_client = boto3.client(
    'ecs',
    aws_access_key_id=assumed_role['Credentials']['AccessKeyId'],
    aws_secret_access_key=assumed_role['Credentials']['SecretAccessKey'],
    aws_session_token=assumed_role['Credentials']['SessionToken'],
    region_name='eu-west-2'
)

# 初始化FargateCluster时传入自定义客户端
cluster = FargateCluster(
    cloudwatch_logs_group="{project}_log_group",
    cluster_name_template="{project}-{uuid}",
    environment={"DEFAULT_GSF_VERSION": gsf_version},
    image=f"{aws_account_id}.dkr.ecr.eu-west-2.amazonaws.com/{project}:latest",
    n_workers=9,
    scheduler_cpu=4096,
    scheduler_mem=30720,
    scheduler_timeout="240 minutes",
    security_groups=[aws_security_group_id],
    task_role_arn=f"arn:aws:iam::{aws_account_id}:role/{project}ECSTaskRole",
    worker_cpu=4096,
    worker_mem=30720,
    worker_extra_args=algorithm_extra_cluster_args,
    fargate_use_private_ip=use_private_ip,
    vpc=vpc,
    subnets=subnets,
    skip_cleanup=True,
    platform_version="LATEST",
    shutdown_on_close=True,
    mount_points=mount_points,
    volumes=volumes,
    client=ecs_client  # 传入自定义ECS客户端
)
cluster.adapt(minimum=9, maximum=80)

2. 验证IAM角色配置

  • 确认目标IAM角色的最大会话时长已设为12小时(43200秒),可在IAM控制台角色详情页的“信任关系”标签上方查看该设置。
  • 检查角色的信任策略,允许调用sts:AssumeRole时指定DurationSeconds,示例策略:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::{your_account_id}:user/{your_local_user}"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "NumericLessThanEquals": {
          "sts:DurationSeconds": 43200
        }
      }
    }
  ]
}

3. 令牌刷新说明

  • 若集群需运行超过12小时,需手动编写定时逻辑刷新STS临时凭证,并更新Dask集群的客户端配置。
  • Fargate任务自身的角色凭证由AWS ECS自动刷新,无需干预;但本地启动集群时使用的假设角色凭证,需自行处理过期后的刷新操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 09:35:39