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

Github Actions配置AWS凭证报错及令牌过期、用户类型疑问

问题解答

1. 会话令牌过期是预期行为吗?

是。你使用的IAM Identity Center(原AWS SSO)生成的会话令牌属于临时凭证,这类凭证本身就有有效期(默认最长12小时,无法设置更长),过期后必须重新通过SSO门户获取。把临时凭证手动存到GitHub Secrets里,自然会定期失效,这不是适合自动化场景的用法。

2. 为什么官方教程没提及会话令牌?

因为GitHub官方教程默认使用的是传统IAM用户的长期访问密钥(自管理访问密钥)。这类密钥不会自动过期(除非手动禁用/轮换),配置一次后就能长期用于自动化工作流,所以教程里不需要涉及会话令牌的内容。你之前误用了IAM Identity Center的临时凭证,才出现需要频繁更新的问题。

3. IAM Identity Center用户 vs 传统IAM用户的区别

你的推测完全正确:

  • IAM Identity Center用户:属于集中式身份管理体系,只能通过SSO门户获取临时凭证,这类用户没有自己的长期访问密钥,因此找不到「Security credentials」按钮是正常的——这个功能仅对传统IAM用户开放。
  • 传统IAM用户:是独立的IAM实体,支持创建长期访问密钥,适合GitHub Actions这类需要稳定凭证的自动化场景。

正确解决方案步骤

  • 让管理员在AWS IAM控制台创建一个新的传统IAM用户,不要使用IAM Identity Center用户。
  • 给该IAM用户授予ECR操作的必要权限,建议遵循最小权限原则,比如添加以下权限:
    • ecr:GetAuthorizationToken
    • ecr:BatchCheckLayerAvailability
    • ecr:GetDownloadUrlForLayer
    • ecr:BatchGetImage
    • ecr:InitiateLayerUpload
    • ecr:UploadLayerPart
    • ecr:CompleteLayerUpload
    • ecr:PutImage
  • 进入该IAM用户的「Security credentials」标签页,生成Access Key ID和Secret Access Key(这就是长期访问密钥)。
  • 将这两个密钥添加到GitHub仓库的Secrets中(比如命名为AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY)。
  • 修改GitHub Actions配置文件,使用长期密钥配置AWS凭证,示例如下:
- 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: 你的ECR所在区域 # 替换为实际区域,比如cn-north-1

注意事项

  • 长期访问密钥需妥善保管,避免泄露,建议每90天轮换一次。
  • 始终遵循最小权限原则,不要给IAM用户授予超出需求的权限。

内容的提问来源于stack exchange,提问作者A-Abe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 21:35:05