无法通过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格式显示错误
答案 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与您的问题非常相关,也可以为您提供很大的帮助。