标签: google-cloud-storage

在谷歌云 gsutil 中使用 JSON 密钥


我在一个key.json文件中有一个 ssh 私钥,我想使用此凭据通过 gsutil 访问存储桶。

我似乎找不到任何关于如何包含 json 密钥作为身份验证方法的信息,只有“私有”和“秘密”字段。

文件结构为:

{
  "private_key_id":
  "private_key": "-----BEGIN PRIVATE KEY-- ...
   "client_email":
   "client_id":
  "type": "service_account"
}
Run Code Online (Sandbox Code Playgroud)

我如何使用gsutil该文件?

google-cloud-storage google-cloud-platform gsutil

21
推荐指数
2
解决办法
2万
查看次数

Google Cloud:检查磁盘空间使用情况

如何在不查看每个磁盘的情况下检查 Google Persistent Disk 的已用磁盘空间?

在此处输入图片说明

google-compute-engine google-cloud-storage

15
推荐指数
3
解决办法
3万
查看次数

在谷歌计算实例上使用 gcsfuse 作为非 root 用户的权限错误

我们目前正在尝试为一些需要大量存储的工作负载演示谷歌云平台。我们正在尝试使用谷歌云存储,但在使用 gcsfuse 安装存储桶时遇到问题。我目前能够以 root 用户身份挂载我的测试桶(设置了 allow_other 选项),但非 root 用户只有读取权限。

我尝试过和检查过的事情:

  • 将挂载点设置为 777。挂载存储桶时会覆盖 Perms。
  • 显示的用户gcloud config list | grep account已获得此存储分区的所有者访问权限
  • 我正在测试的 VM 具有对所有 Google Cloud 服务的完整 API 访问权限

这是控制台输出 - Catting and touching animal.txt 以更新时间戳。

root@vm-00 cloud]# grep bucket /etc/fstab
test_bucket_00 /data/cloud/tb-00 gcsfuse  rw,allow_other
[root@vm-00 cloud]# mount tb-00
Calling gcsfuse with arguments: -o rw -o allow_other test_bucket_00 /data/cloud/tb-00
Using mount point: /data/cloud/tb-00
Opening GCS connection...
Opening bucket...
Mounting file system...
File system has been successfully mounted.
[root@vm-00 cloud]# mount …
Run Code Online (Sandbox Code Playgroud)

fuse google-cloud-storage google-cloud-platform gcsfuse

10
推荐指数
1
解决办法
1万
查看次数

如何从命令行使用服务帐户访问谷歌云存储桶?

我认为这样做会很直接,但我无法让它工作:

我正在尝试将文件从服务器 (GCE) 推送到谷歌云存储桶。为了避免gsutil在服务器上授予命令太多权限,我在我的 google 项目的凭据部分创建了一个“服务帐户”。

在存储桶中,gs://mybucket我已将具有 OWNER 权限的服务帐户的电子邮件地址作为 USER 添加到存储桶中。

在服务器上,我像这样激活了服务帐户:

$gcloud auth activate-service-account --key-file <path-to-keyfile> myservice

$gcloud auth list
Credentialed accounts:
 - 1234567890@project.gserviceaccount.com
 - myservice (active)

To set the active account, run:
  $ gcloud config set account <account>
Run Code Online (Sandbox Code Playgroud)

所以到目前为止一切似乎都很好。但是,访问存储桶失败:

$gsutil cp tempfile gs://mybucket
CommandException: Error retrieving destination bucket gs://mybucket/: [('PEM routines', 'PEM_read_bio', 'no start line')]

$gsutil cp tempfile gs://mybucket/tempfile
Failure: [('PEM routines', 'PEM_read_bio', 'no start line')].
Run Code Online (Sandbox Code Playgroud)

当然,我确实验证了存储桶的 ACL 确实将服务帐户显示为 OWNER。我也在不同操作系统的不同机器上尝试过这个。结果一样。不用说,我自己无法理解错误消息。我将不胜感激任何建议。此要点中的详细错误日志。

更新:

删除 …

google-app-engine cloud-storage oauth google-cloud-storage google-cloud-platform

8
推荐指数
2
解决办法
2万
查看次数

我可以将 Google 云存储桶挂载到 Pod 作为永久性磁盘。如果是如何?

我有一个 gke 集群,节点位于 3 个不同的区域但位于同一区域。我想对我的 Pod 使用永久性磁盘。但是 pod 是在所有 3 个区域中随机创建的。如何使用 gcePD(所有节点通用)。或者我可以在 pod 部署 (Yaml) 文件中添加存储桶吗?如果它是 podssible .请建议我怎么做?

google-cloud-storage google-cloud-platform google-kubernetes-engine

8
推荐指数
1
解决办法
1万
查看次数

服务帐号没有 storage.buckets.get 访问存储桶的权限

我正在尝试使用 python 获取项目中的存储桶列表:

from google.cloud import storage

storage_client = storage.Client(project='[project-id]')
bucket = storage_client.get_bucket([bucket-name])

blobs = bucket.list_blobs()

for blob in blobs:
    print(blob.name)
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误:

[service-account-ID]-compute@developer.gserviceaccount.com does not have storage.buckets.get access to [bucket-name]
Run Code Online (Sandbox Code Playgroud)

无论如何,如果我尝试使用 gsutil(使用相同的服务帐户):

gsutil ls gs://[bucket-name]
Run Code Online (Sandbox Code Playgroud)

我可以获得存储桶中的对象列表......所以我不明白发生了什么,关于我应该做什么的任何线索?

oauth google-cloud-storage google-cloud-platform

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

备份 Google Cloud Storage 存储分区

基本上,我的问题是:保持 Google Cloud Storage 存储桶数据安全的最佳方法是什么?

我知道使用对象版本控制是您可以采取的第一个措施,以防止意外删除数据。但是,我还想保留异地备份(本地备份或在其他提供商(如 S3)上)。有没有推荐的方法来做到这一点?

我正在寻找的一个方向是保持增量,rsync就像我的存储桶的本地副本一样。我希望gsutil能够有一个sync命令(就像s3cmd那样),但似乎没有。

备份到另一个像 S3 这样的云提供商也很方便,但据我所知,唯一的方法是将所有数据下载到一个实例(在 Google 或 Amazon 数据中心),然后将其上传到目标存储桶. 但这将再次需要增量同步。

backup google-app-engine google-cloud-storage

7
推荐指数
1
解决办法
1970
查看次数

为什么我是项目所有者却无法访问云存储对象?

我是一个特定项目的项目所有者,该项目有一个包含数百个演出对象的存储桶。我最近通过一个失败的gcloud rsync的发现,也有我的桶的一些对象,我可以list,但不cp还是acl get等等,无论从命令行,也没有从云控制台。

例如:

gsutil acl get gs://$MYBUCKET/$SOMEOBJECT  
AccessDeniedException: Access denied. Please ensure you have OWNER permission on gs://$MYBUCKET/$SOMEOBJECT  
Run Code Online (Sandbox Code Playgroud)

我有

  • 已验证我已通过身份验证为正确的用户 ( gcloud auth list)
  • 验证我在项目的角色/所有者成员部分 ( gcloud projects get-iam-policy $PROJECT_ID)
  • 验证存储桶属于项目(实体“project-owners-$PROJECT_ID”具有 projectNumber $PROJECT_ID 和角色 OWNER)。
  • 尽管我是该项目的创建者,但在 google 云控制台中出现了同样的问题

这到底是怎么回事?

google-cloud-storage

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

失去对 Google Cloud Storage Bucket 的权限

我不小心删除了存储桶上的“Storage Legacy Bucket Owner”权限,现在即使我是项目所有者并且我创建了存储桶,我也根本无法访问它。我有什么追索权?

现在似乎根本没有人对存储桶拥有权限,因此甚至无法将其删除。奇怪的是,谷歌云存储允许你进入一个不能被任何人访问或删除的存储桶的状态。如果我删除整个项目,存储桶会被删除吗?那是我唯一的选择吗?

permissions google-cloud-storage

7
推荐指数
1
解决办法
2425
查看次数

备份 Google Cloud Storage Bucket

有没有办法可以定期将一个存储桶备份到另一个存储桶中,以便万一文件从一个存储桶中删除,它们始终可以从另一个存储桶中恢复?

google-cloud-storage google-cloud-platform

7
推荐指数
1
解决办法
9455
查看次数