Windows环境下Elastic Beanstalk初始化失败:eb init报签名过期错误
嘿,我之前也踩过这个坑!这个错误本质是AWS的API签名验证对时间同步要求特别严格——你的本地系统时间和AWS服务器时间差超过5分钟的话,就会触发这个「签名过期」的报错。给你几个亲测有效的解决步骤:
先搞定系统时间同步(最关键!)
这是绝大多数情况下的元凶。右键点击任务栏右下角的时间,选择「调整日期/时间」,确保「自动设置时间」和「自动设置时区」是打开的。要是开着还是不准,直接点「立即同步」按钮强制同步。同步完记得把当前的命令行窗口(不管是cmd还是PowerShell)关掉重开,再跑eb init试试,大概率就好了。仔细核对你的凭证是否正确
虽然报错指向时间问题,但也别大意——确保你输入的访问密钥和秘密密钥没有打错,比如大小写、多余空格,或者复制的时候少了字符。实在不确定的话,去IAM控制台重新生成一对新的密钥,再输入试试。排查代理/VPN的干扰
如果你机器开了代理或者VPN,有可能会影响时间同步,或者因为网络延迟导致签名验证时时间差被放大。暂时关掉这些工具,再尝试eb init,看看问题是否消失。手动配置AWS凭证文件
如果上面的方法都没解决,那可以绕开eb init的输入步骤,手动配置凭证文件:
在Windows里,凭证文件路径是C:\Users\<你的用户名>\.aws\credentials,如果没有.aws文件夹就自己新建一个。文件内容按下面的格式写:[default] aws_access_key_id = 你的访问密钥 aws_secret_access_key = 你的秘密密钥保存之后再运行
eb init,它会自动读取这个文件里的凭证,不用再手动输入了。
基本上按这个顺序排查,问题就能解决。毕竟AWS的签名机制对时间精度要求真的很高,同步时间是最直接的解决办法。
内容的提问来源于stack exchange,提问作者Anoop K George

