在运行一些脚本的Docker映像中,在脚本的末尾,我使用bq
命令将数据附加到BigQuery表中。当我不在Docker中运行时,这一切都可以在脱机状态下正常工作,因为我的本地开发环境已经设置了正确的身份验证。
问题是如何设置身份验证,以便在执行docker run -t my-image
时可以从docker中运行bq
。
另外,在我将它上传到gcr.io注册表并在cloud run中作为作业运行之后,我如何进行身份验证?
查找身份验证文档(例如https://cloud.google.com/docs/authentication/provide-credentials-adc)就像一个迷宫,而且在Google上搜索也不会找到非常有用的结果
2条答案
按热度按时间tpgth1q71#
从最近的项目a make...(如果您更熟悉,所有命令在GCP控制台UI中都有等效命令)
假设:
1.了解IAM,
1.所述停靠器容器运行模拟专用IAM服务帐户(SA)的服务。
创建服务帐户(SA)并将Docker映像部署为运行服务--------------
SA必须具有访问或编辑BQ数据集和表格的角色(参考:https://cloud.google.com/bigquery/docs/控制对资源的访问-iam#授予对表或视图的访问权限)
您可以将BQ配置下载到您的开发机器的json文件中...
对于数据集----------------------------------
然后更新文件以包括BQ角色..(<SERVICE_ACCOUNT_EMAIL>替换为您的SA电子邮件<BQ_ROLE_1>和<BQ_ROLE_2>您的角色)。:
最后更新策略:
对于表格-----------------------------
然后更新文件以包括BQ角色,例如:
最后更新策略:
在您的服务代码中(使用NodeJS创建的示例):
5rgfhyps2#
在GCP CloudRun上,这非常简单,在作业的设置页面中,您可以选择一个服务帐户来运行映像。只要该服务拥有bigquery的访问权限,它就应该工作。
离线 Docker 。还不确定。