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

部署Flask应用时如何安全处理Google Ads API所需的YAML文件?

解决Google Ads API令牌安全部署问题的方案

方案一:直接用配置对象初始化客户端(更推荐)

Google Ads Python SDK完全支持不用YAML文件,直接通过字典配置初始化客户端,根本不需要依赖YAML文件。你可以把所有敏感信息存在环境变量里,直接读取构建配置:

import os
from google.ads.googleads.client import GoogleAdsClient

# 从环境变量读取所有配置项
config = {
    "developer_token": os.getenv("GOOGLE_ADS_DEVELOPER_TOKEN"),
    "client_id": os.getenv("GOOGLE_ADS_CLIENT_ID"),
    "client_secret": os.getenv("GOOGLE_ADS_CLIENT_SECRET"),
    "refresh_token": os.getenv("GOOGLE_ADS_REFRESH_TOKEN"),
    "login_customer_id": os.getenv("GOOGLE_ADS_LOGIN_CUSTOMER_ID"),
    "use_proto_plus": True
}

# 直接用配置字典初始化客户端
client = GoogleAdsClient(config=config)

方案二:从环境变量动态生成临时YAML文件

如果确实需要依赖YAML文件的加载方式,可以在应用启动时从环境变量读取配置,动态生成临时YAML文件,用完可自动清理:

import yaml
import os
from tempfile import NamedTemporaryFile
from google.ads.googleads.client import GoogleAdsClient

# 从环境变量读取配置
config = {
    "developer_token": os.getenv("GOOGLE_ADS_DEVELOPER_TOKEN"),
    "client_id": os.getenv("GOOGLE_ADS_CLIENT_ID"),
    "client_secret": os.getenv("GOOGLE_ADS_CLIENT_SECRET"),
    "refresh_token": os.getenv("GOOGLE_ADS_REFRESH_TOKEN"),
    "login_customer_id": os.getenv("GOOGLE_ADS_LOGIN_CUSTOMER_ID"),
    "use_proto_plus": True
}

# 生成临时YAML文件(存在render的临时目录,重启自动清理)
with NamedTemporaryFile(mode='w', suffix='.yaml', delete=False) as f:
    yaml.dump(config, f)
    temp_config_path = f.name

# 用临时文件初始化客户端
client = GoogleAdsClient.load_from_storage(temp_config_path)

# 可选:使用后删除临时文件
os.unlink(temp_config_path)

render.com部署注意事项

  • 所有敏感配置项都在render.com的「Environment」->「Variables」面板添加,不要硬编码或提交到代码仓库。
  • 本地开发时可以用python-dotenv库加载.env文件模拟环境变量,部署时直接用平台提供的变量即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 00:05:58