GCS存储创建文件夹API

时间:2019-07-15 11:01:59

标签: google-cloud-storage

无法通过API在Google Cloud存储区的存储桶中创建文件夹

我已经尝试了对API的curl调用,并且对请求json格式有各种可能。

ABC并不是真正的组织,而是让它混淆真实数据。我还使用gcloud调用设置了变量$access_token来获取访问令牌。

curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $access_token" -d '{"displayName":"[vicks]"}' https://cloudresourcemanager.googleapis.com/v2/folders?parent=ABC
{
  "error": {
    "code": 400,
    "message": "field [Folder.display_name] has issue [invalid format]",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "field": "Folder.display_name",
            "description": "invalid format"
          }
        ]
      }
    ]
  }
}

我希望通过API调用来创建目录,但是尽管我遵循https://cloud.google.com/resource-manager/docs/creating-managing-folders上的文档,但它无法以display_name格式显示错误

1 个答案:

答案 0 :(得分:0)

不幸的是,您提供的链接是关于API的,它将帮助您在组织内而不是在Cloud Storage存储桶内创建文件夹。通过查看链接页面中的first graph可以看到这一点。

非常感谢,仍然有一种解决方案可以帮助您实现所需的目标。虽然Google Cloud Storage对象存储在一个平面名称空间中,但是gsutil甚至Google Cloud Console之类的工具都可以通过遵循简单的命名规则(本质上是子目录的仿真)来提供对象的分层视图。

1)要将对象视为目录,可以创建一个以“ /”结尾的空对象。如果您想要一个名为“ abc”的子目录,则可以调用对象“ abc /”,gsutil会将其视为一个空目录。要将对象/文件插入子目录,您只需将对象/文件复制到包含“ abc”的目标网址,例如“ gs:// your-bucket / abc”。

2)另一种较不常用的方法是创建一个以“ $ folder $”结尾的空对象。如果您想要一个名为“ abc”的子目录,则可以调用对象“ abc $ folder $”,gsutil会将其视为一个空目录。与上一点类似,要将对象/文件插入子目录,您可以简单地将对象/文件复制到包含“ abc”(例如“ gs:// your-bucket / abc”)的目标URL。

我强烈建议您通读this link,以深入了解Google Cloud Storage子目录的工作方式。另外,我发现another previously answered stack question与您的问题非常相关,也可以为您提供很大的帮助。