小编Joh*_*ley的帖子

谷歌云服务帐户 VS。最终用户帐户

我目前正在学习 GCP,需要在 VM 实例中运行 python notebook。打开 VM 的外壳时,我运行了以下代码:

sudo install python-pip
pip install --upgrade google-api-python-client
pip install --upgrade google-cloud-datastore
gcloud auth application-default login
Run Code Online (Sandbox Code Playgroud)

然后我加载了我的 python 笔记本。运行此代码以启动笔记本时:

python mynotebook.py
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

/home/rnby87/.local/lib/python2.7/site-packages/google/auth/_default.py:66: UserWarning: Your application has authenticated using end user credentials from Google Cloud SDK. We recommend that most server applications use service accounts instead. If your application continues to use end user credentials from Cloud SDK, you might receive a "quota exceeded" or "API not enabled" error. For more information about …
Run Code Online (Sandbox Code Playgroud)

python google-cloud-datastore google-cloud-platform gcloud google-cloud-iam

2
推荐指数
1
解决办法
2616
查看次数

如何在 Google Run 应用程序中安装存储桶?

我的最终目标是在容器内安装一个存储桶,以便使用 google run 进行部署。

为了挂载存储桶,我使用了需要特权容器的 gcsfuse。(https://github.com/maciekrb/gcs-fuse-sample 等...)

使用 VirtualMachine 我会使用:

gcloud compute instances create-with-container \
    [...] \
    --container-privileged
Run Code Online (Sandbox Code Playgroud)

使用谷歌运行时:

gcloud beta run deploy [...] 
Run Code Online (Sandbox Code Playgroud)

但是好像没有这个选项。

任何提示将不胜感激。

google-cloud-platform google-cloud-run

2
推荐指数
1
解决办法
1003
查看次数

如何使用服务帐户从Python代码访问GCP云功能?

我部署了一个简单的 GCP 云函数,它返回“Hello World!”。我需要这个功能得到授权。我取消标记“允许未经身份验证的调用”复选框,因此只有经过身份验证的调用才能调用此代码。我还创建了服务帐户并分配了下一个角色: - Cloud Functions Invoker - Cloud Functions Service Agent

我的代码:

from google.oauth2 import service_account
from google.auth.transport.urllib3 import AuthorizedHttp

if __name__ == '__main__':
    credentials = service_account.Credentials.from_service_account_file('service-account.json',
        scopes=['https://www.googleapis.com/auth/cloud-platform'],
        subject='service-acc@<project_id>.iam.gserviceaccount.com')
    authed_session = AuthorizedHttp(credentials)
    response = authed_session.urlopen('POST', 'https://us-central1-<project_id>.cloudfunctions.net/main')
    print(response.data)
Run Code Online (Sandbox Code Playgroud)

我收到了回复:

b'\n<html><head>\n<meta http-equiv="content-type" content="text/html;charset=utf-8">\n<title>401 Unauthorized</title>\n</head>\n<body text=#000000 bgcolor=#ffffff>\n<h1>Error: Unauthorized</h1>\n<h2>Your client does not have permission to the requested URL <code>/main</code>.</h2>\n<h2></h2>\n</body></html>\n'

Run Code Online (Sandbox Code Playgroud)

如何获得授权?

service-accounts google-cloud-platform google-cloud-functions google-iam google-cloud-iam

2
推荐指数
1
解决办法
3167
查看次数

Google OAuth2 的 RSA 私钥/公钥

我正在使用 Google Cloud Platform 的服务帐户进行服务器到服务器的身份验证。根据Google 的文档,请求令牌 (JWT) 必须基于 RSA SHA-256 算法,因此使用 RSA 认证的私钥进行签名,并使用其各自的公钥进行解码。

我如何让 google api 知道公钥?

我知道 Google 有自己的RSA 证书,但我不知道如何准确使用它们。

那么,我应该使用什么 RSA 私钥/公钥来进行 google 的 oauth2 令牌编码?

这是代码的摘录:

import jwt from 'jsonwebtoken'
const axios = require('axios')
const fs = require('fs')
const {
  google
} = require('googleapis')

// oauth2 token uri
const GSUITE_AUD = 'https://oauth2.googleapis.com/token'

const payload = {
  iss: 'example@example.iam.gserviceaccount.com',
  scope: 'https://www.googleapis.com/auth/admin.directory.user',
  aud: GSUITE_AUD,
}

const options = {
  algorithm: 'RS256',
  expiresIn: '10m'
}

const …
Run Code Online (Sandbox Code Playgroud)

node.js oauth-2.0 google-cloud-platform google-cloud-iam google-workspace

2
推荐指数
1
解决办法
4911
查看次数

Google Cloud 组织权限 - 尽管拥有所有者身份,但仍无法启动共享 VPC

尽管我是所有者和组织的高层角色,但我在启动共享 vpc 时被命令行和控制台阻止。以下是错误消息 -

“projects/******-core-dev”需要“compute.organizations.enableXpnHost”权限

q- 那我怎么启用它???

和...

用户[ @ .com]没有权限访问组织[ ***:setOrgPolicy](或者它可能不存在):调用者没有权限

非常感谢任何帮助。

google-cloud-platform google-iam google-cloud-iam google-cloud-networking

2
推荐指数
1
解决办法
2089
查看次数

如何从 GCE 实例中的容器优化操作系统获取启动脚本日志?

我正在使用这个启动脚本运行一个容器优化的计算实例:

#!/bin/bash

mkdir /home/my-app
cd /home/my-app
export HOME=/home/my-app

docker-credential-gcr configure-docker


docker run --rm --log-driver=gcplogs --name my-app --security-opt seccomp=./config.json gcr.io/my-project/my-app:latest
Run Code Online (Sandbox Code Playgroud)

--log-driver--name标志根据设定GCP社会导向搬运工文档

但是我看不到容器启动的日志。

此外,当我通过 SSH 连接到实例并运行 command 时logger "hello from logger",我没有看到它显示在云记录器中。我尝试将其转换为高级过滤器并删除除“来自记录器的hello”字符串过滤器之外的所有过滤器。

如何正确设置日志记录?我bunyan在我的 NodeJS 应用程序中使用,但是当应用程序失败时,我完全看不到?我很想拥有journalctl云记录器中的所有日志。或者,至少startup-scriptjournalctl. 现在我正在通过 SSH 连接到实例并运行journalctl -r | grep startup-script.

更新

访问范围设置正确:

Stackdriver Logging API: Write Only
Stackdriver Logging API: Write Only
Run Code Online (Sandbox Code Playgroud)

我正在使用默认的计算引擎服务帐户。这是我使用以下命令创建此 VM 的命令:

gcloud compute instance-templates create $APP_ID-template \ …
Run Code Online (Sandbox Code Playgroud)

google-compute-engine google-cloud-platform stackdriver google-cloud-stackdriver google-container-optimized-os

2
推荐指数
1
解决办法
546
查看次数

2
推荐指数
1
解决办法
882
查看次数

迁移 App Engine 使用 Google Cloud Load Balancer 导致约 1 小时的停机时间

概述

我在 App Engine 上有一个具有自定义域和 Google 提供的 SSL 证书的实例,但现在我需要在其前面放置一个 Google Cloud Load Balancer。

我按照此处的说明进行操作(进行了调整以针对 App Engine 而不是 Cloud Run 执行此操作): https: //cloud.google.com/load-balancing/docs/https/setting-up-https-serverless

我首先执行了该指南中的步骤,然后更新了 GoDaddy 中的 DNS 记录以指向负载均衡器的 IP。

问题

问题是,在我更新 GoDaddy DNS 记录以指向负载均衡器的 IP 后,花了将近一个小时才再次可访问。当尝试通过浏览器或代码访问该网站时,我收到 SSL 错误。

配置 SSL 证书

核心问题似乎是负载均衡器的 SSL 证书停留在 的状态,PROVISIONING并且域停留在 的状态FAILED_NOT_VISIBLE,对此文档说:

该网域的 DNS 记录无法解析为 Google Cloud 负载均衡器的 IP 地址。要解决此问题,请更新 DNS A/AAAA 记录以指向负载均衡器的 IP 地址。

https://cloud.google.com/load-balancing/docs/ssl-certificates/troubleshooting#domain-status

这些文档是这样说的PROVISIONING

Google Cloud 正在与证书颁发机构合作颁发证书。配置 Google 管理的证书最多可能需要 60 分钟

https://cloud.google.com/load-balancing/docs/ssl-certificates/google-management-certs#verify-target-proxy

我可以做些什么来避免/最大限度地减少这一小时的停机时间?

我仍然需要对我的生产项目执行此操作。也许如果我交换步骤的顺序(在创建 SSL 证书之前将 DNS 记录指向 …

dns google-app-engine google-cloud-platform google-cloud-load-balancer google-cloud-http-load-balancer

2
推荐指数
1
解决办法
460
查看次数

如何继承访问权限以查看属于 GCP 组织的所有项目?

我目前被列为 Google Workspace 管理员,但由于某种原因,我似乎仍然无法执行某些操作,例如创建文件夹来组织项目。我们使用 terraform 生成一些项目,生成的项目仅授予对权限中直接指定的项目的访问权限。

我看到网站上引用的继承权限/访问权限。我们如何设置它,以便我和其他一些人始终继承访问权限以查看为组织创建的每个项目?

google-cloud-platform terraform google-iam google-cloud-iam terraform-provider-gcp

2
推荐指数
1
解决办法
1704
查看次数

如何将 netlify 徽章放在 README.md 上?

我很难将我的 netlify 徽章集中在自述文件中,使用p“中心”对齐的标签似乎不起作用。正确的方法是什么?

这是我到目前为止的代码:

<p align="center">
    
[![Netlify Status](https://api.netlify.com/api/v1/badges/bc438b2e-9f12-4bbe-987e-d36fcef20a2f/deploy-status)](https://app.netlify.com/sites/darienmiller/deploys)
</p>
Run Code Online (Sandbox Code Playgroud)

Netlify 状态

markdown github github-flavored-markdown readme

2
推荐指数
1
解决办法
1230
查看次数