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

EC2上CodeDeploy缺失凭证错误求助

问题排查与解决方案

1. 先解决EC2实例IAM角色关联的不稳定状态

从你提供的实例配置文件关联列表来看,当前实例同时存在disassociating和associating两种状态,说明角色切换操作未完成或出现异常:

  • 等待5-10分钟,让AWS完成角色的关联/取消关联流程,之后确认状态是否变为单一的associated
  • 如果长时间处于异常状态,手动清理并重关联:
    1. 执行命令取消旧关联:aws ec2 disassociate-iam-instance-profile --association-id iip-assoc-RRR
    2. 待旧关联完全取消后,重新关联目标角色:aws ec2 associate-iam-instance-profile --instance-id i-XXX --iam-instance-profile Name=EC2-Role

2. 纠正IAM角色的配置逻辑

你混淆了CodeDeploy服务角色和EC2实例角色的定位:

  • CD_Role是给CodeDeploy服务本身使用的角色,仅需信任codedeploy.amazonaws.com,不需要关联到EC2实例
  • EC2-Role是EC2实例专属角色,信任关系只需要允许ec2.amazonaws.com即可(EC2实例通过该角色获取临时凭证,CodeDeploy Agent借助这些凭证与CodeDeploy服务通信)

EC2-Role的正确配置:

  • 权限无需过度开放,附加AmazonEC2RoleforAWSCodeDeploy托管策略即可(已包含CodeDeploy Agent所需的全部权限,含S3访问权限)
  • 信任关系修正为:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "ec2.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

3. 验证EC2实例的IAM凭证获取能力

登录EC2实例,执行以下命令检查凭证获取情况:

# 检查当前实例关联的IAM角色名称
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/

如果返回EC2-Role名称,继续执行:

# 获取角色的临时凭证详情
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/EC2-Role

若返回包含AccessKeyId、SecretAccessKey、Token的JSON数据,说明凭证获取正常;若返回错误,需重新检查角色关联操作。

4. 检查CodeDeploy Agent状态

登录EC2实例,重启Agent并查看日志:

# 以Amazon Linux 2为例
sudo systemctl restart codedeploy-agent
sudo systemctl status codedeploy-agent
# 实时查看Agent日志
sudo tail -f /var/log/aws/codedeploy-agent/codedeploy-agent.log

确认Agent状态正常且无凭证报错后,重新触发GitHub Actions的部署流程。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 21:31:06