执行GitHub Actions工作流时遇AWS角色会话时长错误求助
GitHub Actions AWS凭证配置报错排查
核心问题
你遇到的Error: The requested DurationSeconds exceeds the MaxSessionDuration set for this role错误,大概率是因为工作流的AWS凭证配置存在遗漏,导致实际使用的身份并非你预期的IAM角色。
排查与修复步骤
1. 补全角色ARN配置
你的configure-aws-credentials步骤缺少role-to-assume参数——这是扮演指定IAM角色的必填项。当前配置只提供了AK/SK,Action会直接使用该凭证对应的IAM用户身份,而非你设置了1小时会话时长的那个角色。
修正后的配置需添加目标角色ARN:
steps: - uses: actions/checkout@v4 - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: us-east-2 role-to-assume: arn:aws:iam::xxxx:role/xxxx # 替换为你CLI中使用的角色ARN role-session-name: GithubActions role-duration-seconds: 3600 role-skip-session-tagging: true
2. 验证目标角色的会话时长配置
再次确认目标角色的MaxSessionDuration确实为3600秒,避免控制台配置未生效或选错角色:
aws iam get-role --role-name YOUR_TARGET_ROLE_NAME --query 'Role.MaxSessionDuration'
若返回值不是3600,重新在IAM控制台修改并等待5-10分钟让配置生效。
3. 检查IAM用户的权限与限制
提供AK/SK的IAM用户需具备sts:AssumeRole权限,且自身的会话时长限制不能低于你设置的3600秒。可通过以下命令查看用户配置:
aws iam get-user --user-name YOUR_IAM_USER_NAME
同时检查是否存在AWS组织SCP策略限制了会话时长。
4. 验证Action版本兼容性
若上述步骤无效,尝试锁定configure-aws-credentials到具体稳定版本(如v4.0.1),或降级到v3版本,排除版本bug影响。
内容的提问来源于stack exchange,提问作者Sound Therapy
相关产品推荐
相关产品推荐

