Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从dict而不是文件路径设置[“谷歌应用程序”凭据_Python_Google Cloud Storage_Airflow - Fatal编程技术网

Python 从dict而不是文件路径设置[“谷歌应用程序”凭据

Python 从dict而不是文件路径设置[“谷歌应用程序”凭据,python,google-cloud-storage,airflow,Python,Google Cloud Storage,Airflow,我试图从dict设置环境变量,但在连接时出现错误 #服务帐户拉入包含带有服务帐户凭据的json dict的变量 service\u account=Variable.get('google\u cloud\u credentials') os.environ[“谷歌应用程序凭据”]=str(服务帐户) 错误 阅读时,如果我使用并指向文件,则没有问题 os.environ["GOOGLE_APPLICATION_CREDENTIALS"]=/file/path/service

我试图从dict设置环境变量,但在连接时出现错误

#服务帐户拉入包含带有服务帐户凭据的json dict的变量
service\u account=Variable.get('google\u cloud\u credentials')
os.environ[“谷歌应用程序凭据”]=str(服务帐户)
错误

阅读时,如果我使用并指向文件,则没有问题

os.environ["GOOGLE_APPLICATION_CREDENTIALS"]=/file/path/service_account.json

我想知道是否有一种方法可以将dict对象转换为类似于操作系统路径的对象?我不想将json文件存储在容器上,airflow/google文档一点也不清楚。

Python stringio包允许您创建一个以字符串为后盾的类似文件的对象,但这在这里没有帮助,因为此环境变量的使用者需要的是文件路径,而不是类似文件的对象。我认为你不可能做你想做的事。您不想将凭据放在文件中有什么原因吗?

是的,项目负责人告诉我不要这样做。他们不希望文件存储在除气流变量或连接之外的任何位置。本质上,我正在创建一个KubernetesPodOperator来运行python CLI,该CLI将上传到S3和Google云存储。他们希望为操作符设置环境变量,如
env={'GOOGLE\u应用程序\u凭据]:variable.get('GOOGLE\u cloud\u凭据')
Airflow documentation和Google documentation确实不清楚。@Sql\u Pete\u Belfast如果您安装一个RAM磁盘并将凭据存储在那里,您的领导会接受吗?这意味着它存储在RAM中,而不是磁盘中,如果您将它放在变量中,它就会存储在磁盘中(尽管它是一个文件路径,这可能会被认为是一个更大的安全风险)。
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]=/file/path/service_account.json