使用Phillips-Labs terraform-aws-github-runner无法创建EC2实例求助
解决terraform-aws-github-runner模块EC2实例未创建及SSL解码错误问题
针对"error:1E08010C:DECODER routines::unsupported"解码错误的排查与修复
- 确认Secrets Manager中存储的PEM私钥格式完整:必须包含首尾的
-----BEGIN RSA PRIVATE KEY-----和-----END RSA PRIVATE KEY-----标记,且标记行无多余空格、无首尾空行。可以直接在Secrets Manager控制台查看原始内容,避免复制粘贴时引入格式问题。 - 检查Terraform读取私钥的逻辑:确保模块通过
aws_secretsmanager_secret_version获取的secret_string没有被额外转义(比如将换行符转成\n字符串而非实际换行)。可以在Lambda日志中打印读取到的私钥内容,对比原始PEM文件验证一致性。 - 排除私钥本身的兼容性问题:使用
openssl rsa -in <your-key-file> -check命令本地验证私钥有效性,确认无损坏或格式错误。
针对GHES API URL异常的修复
- 核对Terraform配置中的
ghes_api_url参数:必须严格遵循https://<你的GHES域名>/api/v3/格式,确保末尾斜杠存在,且域名无误,无多余字符(比如空格、拼写错误)。 - 验证Lambda环境变量中的GHES URL:查看Lambda函数的环境变量配置,确认模块传递的API URL与你配置的参数完全一致,避免模块内部拼接时出现格式偏差。
其他关键排查步骤
- 检查Lambda的IAM权限:确保执行角色拥有
ec2:RunInstances、ec2:CreateTags、secretsmanager:GetSecretValue等必要权限,同时具备访问EC2实例相关资源(比如子网、安全组、AMI)的权限。 - 查看Lambda完整执行日志:除了解码错误,重点查找是否有GHES API调用失败、runner注册令牌获取失败等关联错误,这些是导致EC2实例无法创建的直接原因。
- 手动验证GHES API访问:使用存储的私钥和对应令牌,通过curl命令测试GHES API连通性,命令示例:
curl -H "Authorization: token <你的令牌>" --key <本地私钥文件> https://<GHES域名>/api/v3/orgs/<你的组织>/runners,确认API能正常返回数据,排除端点或密钥验证问题。
内容的提问来源于stack exchange,提问作者Justin Kruse
相关产品推荐
相关产品推荐

