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

Firebase Admin SDK在AWS EC2认证失败:元数据服务器不可用

可能的原因及排查方向
  • 环境变量未正确加载
    EC2实例中GOOGLE_APPLICATION_CREDENTIALS环境变量可能未在Django进程的运行环境中生效:

    • 若你仅在SSH会话临时设置变量,Django服务(如systemd、gunicorn启动的进程)作为独立进程,不会继承该变量。
    • 排查方式:在Django代码中打印os.environ.get('GOOGLE_APPLICATION_CREDENTIALS'),确认是否输出正确路径;或在启动Django的配置文件(如systemd的.service文件)中显式添加该环境变量。
  • google.json文件权限或路径错误

    • 检查EC2上google.json的路径是否与环境变量设置一致,避免本地用相对路径、部署后未改为绝对路径的情况。
    • 确认Django运行用户(如www-data)有读取该文件的权限,可执行chmod 644 google.json调整权限,或修改文件所属组为Django进程的用户组。
  • Firebase SDK初始化逻辑未指定凭证
    若代码未显式指定服务账号凭证,SDK会自动尝试从GCP元数据服务获取认证信息,而EC2不存在该服务,导致报错。正确初始化写法应明确传入凭证:

    import firebase_admin
    from firebase_admin import credentials
    import os
    
    cred = credentials.Certificate(os.environ.get('GOOGLE_APPLICATION_CREDENTIALS'))
    firebase_admin.initialize_app(cred)
    
  • EC2网络限制

    • 检查EC2安全组或NACL是否限制了出站请求,确保实例能正常访问Firebase相关域名,可通过curl https://firebase.google.com测试连通性。
    • SDK可能会尝试访问GCP元数据服务地址169.254.169.254,而EC2上该地址是AWS元数据服务,SDK识别错误引发报错,确保初始化时明确指定服务账号凭证可避免此问题。
  • 依赖包版本不一致
    本地与EC2上的firebase-admin版本可能存在差异,旧版本在非GCP环境的自动认证逻辑可能存在bug。可统一升级到最新版本:

    pip install --upgrade firebase-admin
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 17:12:05