从上的文档https://developers.google.com/vault/guides/exports,我已经能够创建、列出和检索导出,但还没有找到任何方法下载与特定导出关联的导出数据。是否有任何方法可以通过API下载导出的文件,或者只能通过vault UI进行下载?
导出元数据中有一个Cloud dStorageSink
键,但是尝试使用使用云存储API提供的值会导致通用权限问题(403错误)。
示例导出元数据响应:
{
"status": "COMPLETED",
"cloudStorageSink": {
"files": [
{
"md5Hash": "da5e3979864d71d1e3ac776b618dcf48",
"bucketName": "408d9135-6155-4a43-9d3c-424f124b9474",
"objectName": "a740999b-e11b-4af5-b8b1-6c6def35d677/exportly-41dd7886-fe02-432f-83c-a4b6fd4520a5/Test_Export-1.zip",
"size": "37720"
},
{
"md5Hash": "d345a812e15cdae3b6277a0806668808",
"bucketName": "408d9135-6155-4a43-9d3c-424f124b9474",
"objectName": "a507999b-e11b-4af5-b8b1-6c6def35d677/exportly-41dd6886-fb02-4c2f-813c-a4b6fd4520a5/Test_Export-metadata.xml",
"size": "8943"
},
{
"md5Hash": "21e91e1c60e6c07490faaae30f8154fd",
"bucketName": "408d9135-6155-4a43-9d3c-424f124b9474",
"objectName": "a503959b-e11b-4af5-b8b1-6c6def35d677/exportly-41dd6786-fb02-42f-813c-a4b6fd4520a5/Test_Export-results-count.csv",
"size": "26"
}
]
},
"stats": {
"sizeInBytes": "46689",
"exportedArtifactCount": "7",
"totalArtifactCount": "7"
},
"name": "Test Export",
...
}
您看到的问题是因为API使用最小权限原则。
对您的影响是,由于您的目标是从导出中下载文件,您将获得仅下载文件的权限,而不是整个桶(即使它只包含这些文件)。
这就是为什么当您从存储桶请求信息时,会出现403错误(权限错误)。但是,您确实有权下载存储桶中的文件。这样,你应该做的是直接获取每个对象,做这样的请求(使用问题上的信息):
GEThttps://storage.googleapis.com/storage/v1/b/408d9135-6155-4a43-9d3c-424f124b9474/o/a740999b-e11b-4af5-b8b1-6c6def35d677/exportly-41dd7886-fe02-432f-83c-a4b6fd4520a5/Test_Export-1.zip
因此,简而言之,不是获取完整的存储桶,而是获取导出生成的每个文件。
希望这有帮助。
创建所有导出后,您需要等待它们完成。你可以用https://developers.google.com/vault/reference/rest/v1/matters.exports/list 检查事件中每个导出的状态。在响应中,参考“exports”数组并检查每个数组的“status”值,可以下载任何表示“COMPLETED”的值。
要下载完成的导出,请转到每个导出的“云存储库”对象,并获取“文件”数组中第一个条目的“桶名”和“对象名”值。您需要使用云存储API和这两个值来下载文件。本页有所有流行语言的代码示例,并使用APIhttps://cloud.google.com/storage/docs/downloading-objects#storage-download-object-cpp.
希望能有帮助。
有两种方法可以执行您需要的操作:
第一个:
使用OAuth 2.0刷新和访问键,但是需要用户的干预,确认您的应用程序访问。你可以在这里找到谷歌提供的一个不错的游乐场和更多信息:https://developers.google.com/oauthplayground/.
https://www.googleapis.com/auth/devstorage.full_controll
在云存储JSON API v1部分下。第二个:
使用Google客户端库以编程方式下载它。这是@darkfolcer建议的方法,但是我认为谷歌提供的文档是不够的,因此没有真正的帮助。如果python示例有所帮助,您可以在以下问题的答案中找到一个示例-如何在使用python API创建文件后立即从Google Vault导出下载文件?
问题内容: 我正在使用带有Java程序的MySql数据库,现在我想将该程序提供给其他人。 如何导出MySql数据库结构而不包含数据,仅导出结构? 问题答案: 您可以通过mysqldump命令使用该选项
问题内容: PHP数组可以为其元素包含数组。这些数组可以具有数组,依此类推。有没有办法找出PHP数组中存在的最大嵌套?一个示例是一个函数,如果初始数组不具有数组作为元素,则返回1;如果至少一个元素是数组,则返回2,依此类推。 问题答案: 应该这样做: 编辑:非常快速地测试了它,它似乎可以工作。
我正在写一个捕食者-猎物模型,类似于NetLogo中的狼羊捕食模型。我有一套关于代理何时可以复制(每个时间步的给定概率)的规则。我有没有办法追踪模型中的总出生率?还是捕食率?人口增长率?我真的不知道我能写些什么。 编辑:我还不确定我是想要每滴答的出生率还是超过一定数量的滴答,最终可能两者都要。如果一个时间步大约是一天,我想计算出每个时间步的出生率,但也包括一年中的出生率(所以大约365个时间步)。
如何在laravel 4下载数以千计的行excel。我使用Maatsite包。我得到以下错误。 [2016-10-20 11:22:00]当地。错误:异常“Symfony\Component\Debug\exception\FatalErrorException”,并显示消息“允许内存大小为524288000字节(已尝试分配4194304字节)”#0[内部函数]:lighting\exceptio
我试图导入池,但我得到了这个错误 导入{池}从"pg"; ^^^^ 语法错误:未找到命名的导出'池'。请求的模块'pg'是一个通用JS模块,它可能不支持所有module.exports命名导出。 下面是我的代码 从"pg"导入{池}; dotenv.config(); const databaseConfig={connectionString:process.env.DATABASE_URL};
有没有办法列出AWS中的所有资源?对于所有区域,所有资源...例如列出所有EC2实例、所有VPC、API Gateway中的所有API等...我想列出我帐户的所有资源,因为我很难找到我现在可以放弃的资源。