我在一个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该文件?
我们目前正在尝试为一些需要大量存储的工作负载演示谷歌云平台。我们正在尝试使用谷歌云存储,但在使用 gcsfuse 安装存储桶时遇到问题。我目前能够以 root 用户身份挂载我的测试桶(设置了 allow_other 选项),但非 root 用户只有读取权限。
我尝试过和检查过的事情:
gcloud config list | grep account已获得此存储分区的所有者访问权限这是控制台输出 - 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) 我认为这样做会很直接,但我无法让它工作:
我正在尝试将文件从服务器 (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
我有一个 gke 集群,节点位于 3 个不同的区域但位于同一区域。我想对我的 Pod 使用永久性磁盘。但是 pod 是在所有 3 个区域中随机创建的。如何使用 gcePD(所有节点通用)。或者我可以在 pod 部署 (Yaml) 文件中添加存储桶吗?如果它是 podssible .请建议我怎么做?
google-cloud-storage google-cloud-platform google-kubernetes-engine
我正在尝试使用 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)
我可以获得存储桶中的对象列表......所以我不明白发生了什么,关于我应该做什么的任何线索?
基本上,我的问题是:保持 Google Cloud Storage 存储桶数据安全的最佳方法是什么?
我知道使用对象版本控制是您可以采取的第一个措施,以防止意外删除数据。但是,我还想保留异地备份(本地备份或在其他提供商(如 S3)上)。有没有推荐的方法来做到这一点?
我正在寻找的一个方向是保持增量,rsync就像我的存储桶的本地副本一样。我希望gsutil能够有一个sync命令(就像s3cmd那样),但似乎没有。
备份到另一个像 S3 这样的云提供商也很方便,但据我所知,唯一的方法是将所有数据下载到一个实例(在 Google 或 Amazon 数据中心),然后将其上传到目标存储桶. 但这将再次需要增量同步。
我是一个特定项目的项目所有者,该项目有一个包含数百个演出对象的存储桶。我最近通过一个失败的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)这到底是怎么回事?
我不小心删除了存储桶上的“Storage Legacy Bucket Owner”权限,现在即使我是项目所有者并且我创建了存储桶,我也根本无法访问它。我有什么追索权?
现在似乎根本没有人对存储桶拥有权限,因此甚至无法将其删除。奇怪的是,谷歌云存储允许你进入一个不能被任何人访问或删除的存储桶的状态。如果我删除整个项目,存储桶会被删除吗?那是我唯一的选择吗?
有没有办法可以定期将一个存储桶备份到另一个存储桶中,以便万一文件从一个存储桶中删除,它们始终可以从另一个存储桶中恢复?