如何使用Python编程启动IAP tunnel 无需通过subprocess执行bash命令
支持方案
可以直接使用谷歌官方的google-cloud-iap Python SDK完成IAP隧道的创建,无需调用subprocess执行gcloud命令,该SDK底层直接调用IAP的公共API,和gcloud CLI的底层实现逻辑一致。
前置准备
- 安装依赖包:
pip install google-cloud-iap google-auth - 确保当前使用的GCP身份拥有
roles/iap.tunnelResourceAccessor权限,和gcloud使用时的权限要求完全相同。 - 如果脚本运行时提示找不到凭证,可以手动设置环境变量
GOOGLE_APPLICATION_CREDENTIALS为你的服务账号密钥文件的绝对路径。
核心实现示例
import google.auth from google.cloud.iap_v1.services.iap_tunnel_client import IapTunnelClient # 自动读取本地GCP凭证(支持gcloud默认凭证、服务账号密钥文件等多种凭证形式) credentials, project = google.auth.default() client = IapTunnelClient(credentials=credentials) # 按需替换下列参数:项目ID、VM所在可用区、VM实例名、目标端口、本地监听端口 tunnel_params = { "parent": f"projects/你的项目ID/zones/VM可用区/instances/VM实例名", "destination_port": 22, "local_port": 10022 } # 启动隧道,启动后访问本地127.0.0.1:10022即可直通对应VM的22端口 tunnel = client.create_tunnel(request=tunnel_params)
其他可选方案
如果不想依赖谷歌官方的重型SDK,也可以使用轻量第三方开源库iap-tunnel,功能覆盖基础的隧道创建、保活场景,使用更简单。
内容的提问来源于stack exchange,提问作者Raffaele Piccini
相关产品推荐
相关产品推荐

