nwl*_*wly 14 google-cloud-platform
我获得了一个 Google Cloud Storage 存储桶地址 ( gs://some_bucket_name),我已被授予读取访问权限。该存储桶属于另一个项目。有什么办法可以查到bucket所属的项目名称或id吗?
您可以使用 Storage JSON API获取存储桶项目编号。更具体地说,您可以请求GET https://storage.googleapis.com/storage/v1/b/<BUCKET_NAME>. 有关更多详细信息并测试此请求,请查看此文档: https: //cloud.google.com/storage/docs/json_api/v1/buckets/get
获得项目编号后,您可以使用资源管理器 APIgcloud获取项目 ID 和/或名称
以下是获取存储桶的project_id和名称的完整示例:
authorization flow
# the user <ACCOUNT> must have these permission
# storage.buckets.get
# resourcemanager.projects.get on the bucket project
gcloud auth login <ACCOUNT>
BUCKET_NAME=<BUCKET_NAME>
ACCESS_TOKEN=$(gcloud auth print-access-token)
PROJECT_NUMBER=$(curl -s -H "Authorization: Bearer ${ACCESS_TOKEN}" https://storage.googleapis.com/storage/v1/b/${BUCKET_NAME} | jq -r .projectNumber)
gcloud projects list --filter="PROJECT_NUMBER=${PROJECT_NUMBER}" --format="value(PROJECT_ID, NAME)"
Run Code Online (Sandbox Code Playgroud)
我今天结合使用了从终端中的 gcloud 或Cloud Shell运行的两个命令来完成此操作
gcloud storage buckets describe gs://<your-bucket> | grep projectNumber- 这将返回项目编号gcloud projects describe <projectNumber>- 这将返回有关项目的信息,包括项目名称和 ID。这是个好问题。
存储桶没有明显的项目范围,并且它们的全局唯一名称不会作为包含项目标识符的层次结构的一部分呈现。
然而... acls 可能是一个不错的选择...我不确定这个确定,请检查:
gsutil acl get gs://[[BUCKET-NAME]]
Run Code Online (Sandbox Code Playgroud)
从而产生projectNumber:
[
{
"entity": "project-owners-123456789012",
"projectTeam": {
"projectNumber": "123456789012",
"team": "owners"
},
"role": "OWNER"
},
{
"entity": "project-editors-123456789012",
"projectTeam": {
"projectNumber": "123456789012",
"team": "editors"
},
"role": "OWNER"
},
{
"entity": "project-viewers-123456789012",
"projectTeam": {
"projectNumber": "123456789012",
"team": "viewers"
},
"role": "READER"
}
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12628 次 |
| 最近记录: |