使用GitHub Actions对接CodeBuild运行工作流报安全令牌无效如何解决
错误原因
你触发报错的核心原因是临时凭证参数缺失、重复配置的静态凭证覆盖了有效临时凭证:使用aws-actions/configure-aws-credentials搭配role-to-assume参数时,会生成包含AWS_SESSION_TOKEN的临时访问凭证,而你手动配置的静态AK/SK没有对应token,同时多余的凭证传递逻辑进一步导致权限校验失败。
解决方案
按以下步骤调整你的工作流配置即可:
- 第一步:移除
Run CodeBuild步骤下重复定义的AWS凭证类环境变量,不需要手动传入AK/SK、区域、角色信息 - 第二步:删除
env-vars-for-codebuild列表里的AWS凭证相关参数,aws-codebuild-run-build会自动使用前一步生成的有效凭证调用API - 第三步:确认IAM角色信任策略允许你的IAM用户扮演该角色,且角色拥有
codebuild:StartBuild权限 - 第四步:检查GitHub仓库中配置的
AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_ROLE_TO_ASSUME密钥无拼写错误、无多余字符、未过期
修正后的工作流配置示例
name: 'GitHub Actions For CodeBuild' on: pull_request: branches: - test env: tf_version: 'latest' tg_version: 'latest' jobs: deploy: name: 'Build and Deploy' runs-on: ubuntu-latest steps: - name: 'checkout' uses: actions/checkout@v2 - 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_TO_ASSUME }} role-duration-seconds: 3600 - name: Run CodeBuild uses: aws-actions/aws-codebuild-run-build@v1 with: project-name: CodeBuild buildspec-override: stage/dev-env/buildspec.yml env-vars-for-codebuild: | TF_INPUT env: TF_INPUT: false
补充说明:如果你的CodeBuild构建脚本内部需要使用AWS权限,直接给CodeBuild项目本身绑定对应IAM角色即可,不需要从GitHub Actions侧传递凭证,既可以降低权限泄露风险,也能避免凭证校验错误。
内容的提问来源于stack exchange,提问作者dcloud
相关产品推荐
相关产品推荐

