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

GitHub Actions无法连接AWS进行Terraform部署问题求助

解决GitHub Actions中AWS凭证加载失败的问题

针对你遇到的Credentials could not be loaded, please check your action inputs: Could not load credentials from any providers错误,给你几个排查方向和解决办法:

1. 先确认仓库Secrets配置是否正确

  • 如果用AWS访问密钥:
    检查AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY这两个Secrets是否确实存在于仓库的Settings > Secrets and variables > Actions里,名字完全匹配(大小写敏感),值有没有复制错误(比如少了字符、多了空格)。
  • 如果用IAM角色:
    确认AWS_ROLE_ARN这个Secret里的ARN格式正确,比如arn:aws:iam::123456789012:role/your-role-name,没有拼写错误。

2. 检查Action的参数配置

情况一:用访问密钥+Assume Role

如果你的Action同时指定了访问密钥和role-to-assume,要确保:

  • 访问密钥对应的IAM用户拥有sts:AssumeRole权限,并且目标角色的信任策略允许该用户assume:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/your-iam-user"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    
  • Action配置示例:
    - name: Configure AWS Credentials
      uses: aws-actions/configure-aws-credentials@v1
      with:
        aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
        aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
        aws-region: us-east-1 # 替换成你的区域
        role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
        role-session-name: GitHubActions-Deployment
    

情况二:用OIDC角色(推荐,不需要存储访问密钥)

如果用OIDC方式,不需要配置访问密钥,但必须先完成AWS OIDC提供商的配置:

  1. 在AWS IAM中创建OIDC提供商,受众填sts.amazonaws.com,提供商URL填https://token.actions.githubusercontent.com
  2. 给IAM角色配置信任策略,限制只允许你的仓库访问:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Federated": "arn:aws:iam::123456789012:oidc-provider/token.actions.githubusercontent.com"
          },
          "Action": "sts:AssumeRoleWithWebIdentity",
          "Condition": {
            "StringEquals": {
              "token.actions.githubusercontent.com:aud": "sts.amazonaws.com",
              "token.actions.githubusercontent.com:sub": "repo:你的GitHub用户名/你的仓库名:ref:refs/heads/main"
            }
          }
        }
      ]
    }
    
  3. GitHub Actions里的配置要先获取OIDC token,再配置凭证:
    - name: Get OIDC ID Token
      id: id-token
      uses: actions/github-script@v6
      with:
        script: |
          const token = await core.getIDToken();
          core.setOutput('token', token);
    
    - name: Configure AWS Credentials via OIDC
      uses: aws-actions/configure-aws-credentials@v1
      with:
        role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
        aws-region: us-east-1 # 替换成你的区域
        role-session-name: GitHubActions-OIDC-Session
        web-identity-token-file: ${{ steps.id-token.outputs.token }}
    

3. 检查IAM权限和策略冲突

  • 不管用哪种方式,确保最终用来部署的身份(要么是IAM用户,要么是assumed的角色)拥有Terraform部署所需的所有权限(比如S3、EC2、CloudFormation等权限)。
  • 如果是OIDC方式,检查信任策略里的sub条件是否正确,比如分支是不是你当前触发Action的分支(比如main还是dev),仓库名有没有写错。

4. 调试验证

在配置完AWS凭证的步骤后,加一个测试步骤来确认凭证是否生效:

- name: Verify AWS Credentials
  run: aws sts get-caller-identity

如果这个步骤成功,说明凭证配置没问题,问题可能出在Terraform的配置上;如果还是失败,看日志里的详细错误信息,比如是不是角色ARN错误、信任策略不匹配等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 20:35:03