
该错误源于 twill 2.x 默认使用 amazon s3 作为媒体库存储后端,但未配置有效 s3 凭据时,系统仍尝试访问 aws 实例元数据服务(imds),导致连接超时;解决方法是显式切换为本地存储。
该错误源于 twill 2.x 默认使用 amazon s3 作为媒体库存储后端,但未配置有效 s3 凭据时,系统仍尝试访问 aws 实例元数据服务(imds),导致连接超时;解决方法是显式切换为本地存储。
当你在使用 Twill CMS(v2.x)登录后台时遇到如下错误:
Error retrieving credentials from the instance profile metadata service. (cURL error 28: Connection timed out after 1011 milliseconds for http://169.254.169.254/latest/meta-data/iam/security-credentials/)
这并非真正的“网络连接失败”,而是一个配置误导性错误:Twill 2.x 在未明确指定存储类型的情况下,默认启用 s3 端点,并尝试通过 AWS IMDS 自动获取 IAM 角色凭证——即使你根本不在 AWS 环境中运行(例如本地 XAMPP、Docker 或普通 VPS)。该请求会因目标地址 169.254.169.254 不可达而超时(仅 1011ms),最终中断页面渲染(常见于 dashboard.blade.php 模板中调用媒体库资源时)。
✅ 正确解决方案是禁用远程存储自动探测,强制使用本地文件系统。只需在项目根目录的 .env 文件中添加两行配置:
MEDIA_LIBRARY_ENDPOINT_TYPE=local FILE_LIBRARY_ENDPOINT_TYPE=local
? 注意:这两项需同时设置。
MEDIA_LIBRARY_ENDPOINT_TYPE控制图片/视频等媒体上传行为,FILE_LIBRARY_ENDPOINT_TYPE控制文档类附件(如 PDF、ZIP)上传行为。仅设其一可能导致部分功能仍触发 S3 初始化逻辑。
配置完成后,执行以下命令清空配置缓存(Laravel/Twill 依赖此步骤使 .env 变更生效):
php artisan config:clear
如已部署至生产环境,建议额外执行:
php artisan view:clear php artisan cache:clear
⚠️ 补充说明:
- 此问题在 Twill 3.0+ 已默认修复——新版本将
local设为媒体与文件库的默认端点类型,彻底规避 IMDS 调用; - 若你确需使用 S3,请务必完整配置
AWS_*环境变量(如AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,AWS_DEFAULT_REGION,AWS_BUCKET),并确保网络可访问对应区域的 S3 endpoint; - 本地开发强烈推荐使用
local模式,既避免权限/网络问题,也提升调试效率和安全性。
遇到类似集成问题时,欢迎加入 Twill 官方 Discord 获取实时支持,或在 GitHub Discussions 中提交场景复现,帮助团队持续优化开箱体验。


















