使用GitHub Actions配置AWS凭证遇无效安全令牌错误的求助
解决AWS凭证配置报错及后续步骤完善
一、"The security token included in the request is invalid." 报错排查
这个错误核心原因集中在角色扮演的权限或配置匹配问题上,以下是关键排查点:
确认角色ARN格式正确
存储在secrets.ROLE中的值必须是完整的AWS角色ARN,示例格式:arn:aws:iam::123456789012:role/your-ecr-push-role若仅填写角色名称(如
your-ecr-push-role),AWS无法识别目标角色,直接返回无效令牌错误。检查IAM用户的角色扮演权限
持有AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY的IAM用户,必须被授予sts:AssumeRole权限。给该用户添加如下IAM权限策略:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::123456789012:role/your-ecr-push-role" } ] }验证目标角色的信任策略
要扮演的目标角色(即secrets.ROLE对应的角色),其信任策略必须允许上述IAM用户作为可信实体申请扮演它。修改目标角色的信任策略为:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/your-github-actions-user" }, "Action": "sts:AssumeRole" } ] }替换其中的用户ARN和角色ARN为你的实际值。
排查临时凭证异常
极少数场景下,若角色会话时长设置过短(默认1小时),可能导致凭证提前过期。可在configure-aws-credentials步骤中添加role-duration-seconds参数,设置合适时长(如3600)。
二、后续步骤的完善建议
你给出的后续步骤缺少关键执行命令,需补充完整:
1. ECR登录步骤(确保区域匹配)
若你的ECR仓库不在us-west-2,需给amazon-ecr-login步骤指定区域:
- name: Login to Amazon ECR id: login-ecr uses: aws-actions/amazon-ecr-login@v1 with: region: us-west-2
2. 构建、打标签并推送镜像步骤
添加具体Docker命令,完整配置如下:
- name: Build, tag, and push image to Amazon ECR env: ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} ECR_REPOSITORY: test IMAGE_TAG: test_new run: | docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG . docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
若Dockerfile不在工作流根目录,需在docker build命令中用-f指定路径(如docker build -f ./path/to/Dockerfile -t ...)。
内容的提问来源于stack exchange,提问作者ray
相关产品推荐
相关产品推荐

