我正在使用bq命令行工具从Bigquery表中进行查询.当我登录并开箱即运行查询过程时,有没有办法让服务帐户身份验证保持不变?
我做的步骤:
运行以下命令验证服务帐户:
gcloud auth activate-service-account --key-file /somekeyFile.p12 someServiceAccount.gserviceaccount.com
Run Code Online (Sandbox Code Playgroud)从bigquery表查询,这很好用:
bq --project_id=formal-cascade-571 query "select * from dw_test.clokTest"
Run Code Online (Sandbox Code Playgroud)但后来我从框中退出,然后重新登录.当我再次查询Bigquery表时:
bq --project_id=formal-cascade-571 query "select * from dw_test.clokTest"
Run Code Online (Sandbox Code Playgroud)
它给了我错误:
您当前的有效帐户[someServiceAccount.gserviceaccount.com]没有任何有效凭据.
即使我传入私钥文件:
bq --service_account=someServiceAccount.gserviceaccount.com --service_account_credential_file=~/clok_cred.txt --service_account_private_key_file=/somekeyFile.p12 --project_id=formal-cascade-571 query "select * from dw_test.clokTest"
Run Code Online (Sandbox Code Playgroud)
它给出了同样的错误:
您当前的有效帐户[someServiceAccount.gserviceaccount.com]没有任何有效凭据.
因此,每次我需要通过以下方式重新验证我的服务帐户:
gcloud auth activate-service-account
Run Code Online (Sandbox Code Playgroud)
有没有办法让经过身份验证的服务帐户凭据保持不变?
谢谢您的帮助.
首先,我希望使用纯粹的gcloud命令来实现我的目标 - 而不是GCE接口 - 所以请不要使用GUI提供答案!
我从连接到VM实例的磁盘创建了一个映像.为了做到这一点,我必须根据用于创建图像的Google文档删除该实例.之后,我使用图像重新创建了我的实例.
除了http和https流量现在在实例中被禁用之外,几乎所有内容似乎都完美地从该过程完成!我无法再浏览VM上托管的网站.我也无法通过ping域名来获得响应.
当我查看GCE gui(只是看 - 不修改任何内容!)时,我可以看到实例没有检查"允许http流量"和"允许https流量"的复选框.似乎必须与我的问题有关.
我检查了服务器上的防火墙规则(ipTables),以及与VM关联的Google网络.这些中的任何一个都没有错(并且VM肯定与该网络相关联).如果我在服务器上使用tcpdump监听端口80并浏览到我的域,我可以看到请求到达服务器,因此它们不会被传入的防火墙阻止.我也明确地重新启动了Apache,只是确保不是问题所在.
那么,我是否需要做一些事情来解除端口80和443的传出?这可能是SELinux的事吗?由于图像应该完全代表磁盘上的内容,因此不应该如此.看来这必须在GCE方面......
如果这些复选框不在服务器上编辑iptables或在Google网络上编辑防火墙规则,那么这些复选框实际上对该实例做了什么?什么是设置这些开关的gcloud命令,或者理想情况下使用实例create命令指定?
我对如何在kubernetes中设置错误报告感到困惑,因此在Google Cloud Console/Stackdriver"错误报告"中可以看到错误?
根据文档 https://cloud.google.com/error-reporting/docs/setting-up-on-compute-engine, 我们需要启用流畅的"转发输入插件",然后从我们的应用程序发送异常数据.我认为如果我们自己设置了流畅的设置,这种方法会有效,但它已经预先安装在只运行gcr.io/google_containers/fluentd-gcp docker image的pod中的每个节点上.
我们如何在这些pod上启用前向输入并确保节点上的每个pod都可以使用http端口?我们还需要确保在向集群添加更多节点时默认使用此配置.
任何帮助将不胜感激,可能是我从错误的角度看待这一切?
我一直是appcfg.py的长期用户,我甚至在它上面构建了一些bash脚本.
我们应该切换到gcloud app部署吗?将appcfg.py被弃用?如果是,那么时间表是什么?
为什么没有yaml文件向后兼容的宽限期?切换到gcloud app部署我得到:
[application]字段在文件[.../app.yaml]中指定.gcloud不使用此字段,必须将其删除.应该
gcloud config set project MY_PROJECT通过--project在单个命令执行上设置标志来指定项目名称.
和
错误:[version]字段在文件[.../app.yaml]中指定.gcloud不使用此字段,必须将其删除.默认情况下会自动生成版本,但也可以通过
--version在各个命令执行时设置标志来手动指定.
我这样说,因为这可能是模块/服务字段:
警告:不推荐使用应用程序.yaml文件中的"module"参数.请改用"service"参数.
你如何上传queue.yaml中,dispatch.yaml和cron.yaml与gcloud应用程序部署?
部署应用程序的两种方式有什么区别?
我对需要注意的警告和事情很感兴趣:
FLAGS --promote促进部署的版本以接收所有流量.默认为True.
这意味着w/gcloud app部署应用程序将被部署,新版本将被设置为活动版...这正是appcfg.py执行操作的相反方式,因为您必须调用set_default_version将版本标记为活性.
这引出了我的最后一个问题:如果我选择不通过使用其中任何一个来激活它
$ gcloud config set app/promote_by_default false
要么
使用--no-promote禁用.
我是否必须重新部署w /默认值,以便我可以将其激活?
我正在尝试从AWS Lambda函数访问Google Cloud API,但我不知道如何进行身份验证.Google云端文档(https://cloud.google.com/docs/authentication)中的身份验证指南要求我下载凭据JSON文件并使用应用程序默认凭据,但是任何使用过托管函数的人都已经知道了是您不需要管理服务器或运行时环境,因此Lambda不允许我在运行代码的环境中存储任意文件.
我可以在本地使用Cloud SDK来获取访问令牌,但它会过期,所以我不能在我的函数中使用它作为永久解决方案.
我是否有办法获得一个访问令牌,我可以无限期地在我的代码中使用它来调用Google Cloud API?还有其他解决方案吗?
amazon-web-services google-cloud-platform gcloud aws-lambda google-cloud-nl
突然间,当我尝试运行任何gcloud命令时,我开始收到"Permission Denied"问题gcloud components update- 如果我跑了就避免了这个问题,sudo gcloud components update但我不清楚为什么突然需要sudo命令?我实际上一直在尝试运行GCMLE实验并且它有相同的错误/警告,因此我尝试更新组件并仍然遇到此问题.我已经旅行了几天,并且由于几天前这些相同的命令工作,所以没有做任何改变.此外,我没有改变我的操作系统(Mac High Sierra 10.13.3) - Google方面是否有任何可能解释这种行为变化的变化?永久解决此警告的最佳做法是什么?
(conda-env) MacBook-Pro:user$ gcloud components update
WARNING: Could not setup log file in /Users/$USERNAME/.config/gcloud/logs, (IOError: [Errno 13] Permission denied: u'/Users/$USERNAME/.config/gcloud/logs/2018.03.10/XX.XX.XX.XXXXXX.log')
Run Code Online (Sandbox Code Playgroud)
在sudo gcloud components update我能够启动GCMLE实验之后,我也得到了相同的警告(虽然我的工作现在成功提交).
WARNING: Could not setup log file in /Users/#USERNAME/.config/gcloud/logs, (IOError: [Errno 13] Permission denied: u'/Users/$USERNAME/.config/gcloud/logs/2018.03.10/XX.XX.XX.XXXXXX.log')
Run Code Online (Sandbox Code Playgroud) 我已经运行gcloud auth login,gcloud auth configure-docker,gcloud components install docker-credential-gcr,gcloud config set project gcp-project-id-example.
我之前已经推到了这个存储库所以我有点惊讶它现在不工作了吗?我已通过身份验证,gcloud auth login我的用户拥有完整的编辑权限.
sudo gcloud docker -- push eu.gcr.io/gcp-project-id-example/pipelinebuild:latest
WARNING: `gcloud docker` will not be supported for Docker client versions above 18.03.
As an alternative, use `gcloud auth configure-docker` to configure `docker` to
use `gcloud` as a credential helper, then use `docker` as you would for non-GCR
registries, e.g. `docker pull gcr.io/project-id/my-image`. Add
`--verbosity=error` to silence this warning: …Run Code Online (Sandbox Code Playgroud) 我遇到了这个错误将近一个小时,但找到了一个解决方案,导致了一个令人担忧的困境。该解决方案让我们意识到,当任务队列中有一个任务要由要替换的服务器版本提供服务时,无法运行 gcloud app deploy。
错误是:ERROR: (gcloud.app.deploy) Error Response: [9] Cloud build XXXXXXXXXXXX status: FAILURE那个 xxxx 部分是一些自动生成的 base64 值。
解决方法是:删除任务队列中的所有任务
问题:是否有解决方法或者我必须在部署之前删除任务队列中的所有任务(就像我所做的那样)?
详细信息:服务器是用 nodejs 编写的。
google-app-engine task-queue google-tasks-api google-cloud-platform gcloud
我了解gcloud使用源 ( .)根目录中指定的 Dockerfile作为命令:
gcloud builds submit --tag gcr.io/[PROJECT_ID]/quickstart-image .
但我正在尝试指定用于构建映像的 Dockerfile,但我没有找到任何有关如何执行此操作的资源,我不知道这是否可行。
gcloud ×10
docker ×2
kubernetes ×2
aws-lambda ×1
fluentd ×1
linux ×1
stackdriver ×1
task-queue ×1