今天早上我做了一个 PR,它为我的暂存环境触发了 Cloud Build,但未能将结果部署到 GAE。
错误如下:
错误:(gcloud.app.deploy) PERMISSION_DENIED:您无权充当“[redacted]@appspot.gserviceaccount.com”第 4 步:-“@type”:type.googleapis.com/google.rpc。 ResourceInfo 第 4 步:描述:您无权充当此服务帐户。第 4 步:resourceName:[redacted]@appspot.gserviceaccount.com 第 4 步:resourceType:serviceAccount
当我查看https://console.cloud.google.com/cloud-build/settings/service-account Cloud build 具有以下服务帐户权限ENABLED:
检查https://console.cloud.google.com/iam-admin/iam 我可以看到 cloudbuild 服务帐户具有以下角色:
google-app-engine service-accounts google-cloud-platform google-cloud-build
我试图通过简单的服务帐户登录来使用C#,Google API和Google Analytics(分析)来打败自己.我的公司已经将数据导入到Analytics中,我可以使用他们的查询资源管理器查询信息,但是.Net的入门不会随处可见.我正在使用谷歌生成的带有PKI的json文件,因为文档说这样的服务帐户是与Googla API进行计算机到计算机通信的正确方法.代码snipet:
public static GoogleCredential _cred;
public static string _exePath;
static void Main(string[] args) {
_exePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase).Replace(@"file:\", "");
var t = Task.Run(() => Run());
t.Wait();
}
private static async Task Run() {
try {
// Get active credential
using (var stream = new FileStream(_exePath + "\\Default-GASvcAcct-508d097b0bff.json", FileMode.Open, FileAccess.Read)) {
_cred = GoogleCredential.FromStream(stream);
}
if (_cred.IsCreateScopedRequired) {
_cred.CreateScoped(new string[] { AnalyticsService.Scope.Analytics });
}
// Create the service
AnalyticsService service = new AnalyticsService(
new BaseClientService.Initializer() {
HttpClientInitializer = _cred, …
Run Code Online (Sandbox Code Playgroud) c# google-analytics-api google-oauth google-api-dotnet-client service-accounts
在我的Google Play控制台中,我链接了一个项目.然后我创建了一个服务帐户.尽管如此,在刷新控制台时,仍然会说"没有与您的项目关联的服务帐户".已经等了24个多小时了.所有这一切的目的是收据验证.
android google-api service-accounts receipt-validation google-play-console
假设我有一个some.account@gmail.com
带有项目的Google帐户project-1
(在Google Developer Console中配置为Google App Engine应用程序)和一个包含12..@developer.gserviceaccount.com
属于它的电子邮件地址的服务帐户.
我知道如何使用此服务帐户创建日历并以编程方式操作其条目:我使用Google API客户端库(Java版本,带有服务帐户凭据)在我的Google App Engine应用程序中调用Google Calendar API只是.但是,任何此类创建的日历似乎都由服务帐户明确拥有,而不是由我的Google帐户使用.我从以下观察中得出结论:
My calendars
.Other calendars
| 来访问这样的日历 Add a friend´s calendar
使用服务帐户的电子邮件地址,我可以发送请求,但它永远不会得到答复(可能是因为服务帐户的电子邮件地址不是"真实的"电子邮件地址).CalendarListEntry#hidden
,因此应该应用默认值false
.所以我的问题是:如何在普通的Google Calendar Web UI中访问使用Google Calendar API(以及我的案例中的Java客户端)以编程方式创建的日历和日历条目.例如,服务帐户可以与其拥有的Google帐户共享其日历,还是可以使用UI中的服务帐户凭据直接操作Google帐户的日历.
我意识到在同一主题上有一些先前的问题,但到目前为止它们并没有帮助我解开这个谜团.
google-app-engine google-calendar-api google-account service-accounts
在创建具有权限的Google服务帐户后,如下所示 - 部署失败并显示消息.我无法理解这出错的地方.
====
$ gcloud iam service-accounts get-iam-policy cdemail@appid.iam.gserviceaccount.com
bindings:
- members:
- serviceAccount:cdemail@appid.iam.gserviceaccount.com
role: roles/owner
etag: Bxxxxxxxxg=
Run Code Online (Sandbox Code Playgroud)
====
$ gcloud auth activate-service-account --key-file ../a.json
Activated service account credentials for: [cdemail@appid.iam.gserviceaccount.com]
$ gcloud app deploy
ERROR: (gcloud.app.deploy) You do not have permission to access app [appid].
Run Code Online (Sandbox Code Playgroud) 我想给我的应用程序有限的访问权限来获取不同状态集(可能还有部署)的副本,并在必要时扩大或缩小它们。
我为此创建了 ServiceAccount、Rolebinding 和 Role,但我找不到规则动词的完整列表(“get”、“watch”、“list”、“update”)以及它们的限制是什么,例如我可以使用update
用于缩放还是我需要另一个动词?我在哪里可以找到描述这些动词的列表或表格?
我的 yaml 文件:
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: scaler-role
namespace: {{ .Release.Namespace | quote }}
rules:
- apiGroups: ["apps"]
resources: ["statefulset"]
verbs: ["get", "watch", "list", "update"]
Run Code Online (Sandbox Code Playgroud) 我对此文档页面的理解是,我可以使用Pod配置服务帐户,并希望也可以部署,因此我可以访问Kubernetes 1.6+中的k8s API.为了不改变或使用默认的,我想创建服务帐户并将证书挂载到部署的pod中.
如何在部署示例中实现类似的示例?
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
serviceAccountName: build-robot
automountServiceAccountToken: false
Run Code Online (Sandbox Code Playgroud) 在GCE上运行了一个实例,并且在同一个项目中有一个GCS存储桶.但我无法向其写入数据.如何将数据从VM实例写入存储桶?
我试图制作一个项目,将谷歌存储json文件上传到BigQuery(只是自动完成现在手动完成的事情).
我希望使用"服务帐户",因为我的脚本将每天运行.
阅读完所有关于使用服务帐户的内容后,我仍然在努力进行身份验证.
我想知道是否有人可以检查并指出我错过了什么?
这是我到目前为止所做的:
pip install --upgrade
google-cloud-bigquery
export GOOGLE_APPLICATION_CREDENTIALS=<path_to_service_account_file>
与正确指定键路径现在我试图运行以下python脚本:
from google.cloud import bigquery
bigquery_client = bigquery.Client()
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
google.auth.exceptions.DefaultCredentialsError:无法自动确定凭据.请设置GOOGLE_APPLICATION_CREDENTIALS或明确创建凭据并重新运行该应用程序.有关详细信息,请参阅 https://developers.google.com/accounts/docs/application-default-credentials.
我对python和google云API都很陌生,所以可能错过了一些东西,
不知道是否有人可以指出我上面的步骤中哪里出现了什么/出了什么问题,或者让我明确指出dummys使用服务帐户设置和运行Bigquery的简单脚本?
oauth-2.0 google-bigquery service-accounts google-cloud-platform
我在deployment.yaml文件中使用ImagePullSecrets配置GCR时遇到问题.由于许可,它无法下载容器
Failed to pull image "us.gcr.io/optimal-jigsaw-185903/syncope-deb": rpc error: code = Unknown desc = Error response from daemon: denied: Permission denied for "latest" from request "/v2/optimal-jigsaw-185903/syncope-deb/manifests/latest".
Run Code Online (Sandbox Code Playgroud)
我确信我做错了但我遵循了这个教程(和其他人一样),但仍然没有运气.
https://ryaneschinger.com/blog/using-google-container-registry-gcr-with-minikube/
pod日志同样没用:
"syncope-deb" in pod "syncope-deployment-64479cdcf5-cng57" is waiting to start: trying and failing to pull image
Run Code Online (Sandbox Code Playgroud)
我的部署如下:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
# Unique key of the Deployment instance
name: syncope-deployment
namespace: default
spec:
# 3 Pods should exist at all times.
replicas: 1
# Keep record of 2 revisions for rollback
revisionHistoryLimit: 2 …
Run Code Online (Sandbox Code Playgroud) service-accounts kubernetes google-container-registry minikube
service-accounts ×10
kubernetes ×3
android ×1
c# ×1
deployment ×1
google-api ×1
google-oauth ×1
minikube ×1
oauth-2.0 ×1
rbac ×1