[英]Storing data in FIWARE Object Storage
我正在构建一个将文件存储到FIWARE对象存储中的应用程序。 我不太了解将文件存储到存储中的正确方法是什么。
以下摘自《 对象存储-用户和程序员指南》的 python代码片段显示了两种实现方法:
def store_text(token, auth, container_name, object_name, object_text):
headers = {"X-Auth-Token": token}
# 1. version
#body = '{"mimetype":"text/plain", "metadata":{}, "value" : "' + object_text + '"}'
# 2. version
body = object_text
url = auth + "/" + container_name + "/" + object_name
return swift_request('PUT', url, headers, body)
1.版本使我感到困惑,因为当我第一次查看唯一与对象存储一起工作的Node.js模块( 仓库 : fiware-object-storage )时,它似乎使用了1.版本 。 由于该模块正在调用旧的(v.1.1)API版本而不是可能的最新版本(v.2.0),因此请参考python示例,不确定是否是这样做的过时版本。
当我更多地使用该模块时,意识到它不起作用,并且代码完全混乱。 因此,我分叉了该项目,并迅速理解我将需要重新编写它,并以使用指南中的上述python示例作为参考。 链接到我的仓库 。
撰写本文时,唯一尚未实现的方法是对象存储(PUT)和对象获取(GET)。
我还发送了一些有关对象存储的问题,这些问题已发送至fiware-lab-help@lists.fiware.org,但还没有收到任何回音,因此请在这里询问。
没有编写API库的丰富经验。 我是否需要担心身份验证令牌到期? 我认为每次与存储交互时,都不需要进行新的身份验证。 服务器启动(我们创建一个实例)并在内部保存它时,身份验证应该发生一次。 我应该实施某种刷新令牌的机制吗?
租户ID是否更改? 从下面的引用中可以得出结论,我只是一次租住一个租户,然后您可以在配置中使用它以减少身份验证调用。
需要有效令牌才能访问对象存储。 本节介绍了在使用与OpenStack Keystone兼容的身份管理系统的情况下如何获取有效令牌。 如果知道用户名,密码和租户详细信息,则仅需要步骤3。 资源
在身份验证期间,获取租户时,我应该如何选择“正确的”租户? 现在,我只是采用与示例代码类似的第一个方法。
对象存储容器仅属于一个区域,这是真的吗?
仅使用您所说的版本2。忽略您的版本1。在示例中将其注释掉。 应该将其从文档中删除。
(1)令牌在一段时间内有效。 这可能是一个小时或一天,具体取决于设置。 该时间段应在身份验证服务返回的令牌中指定。 令牌需要定期刷新。
(2)租户ID不变。
(3)通常只返回一个租户ID。 但是,可能为您分配了多个ID,在这种情况下,您必须选择当前正在使用的ID。 容器通常属于一个租户,并且不在租户之间共享。
(4)容器通常限于一个区域。 将来,当对Swift添加容器的多区域支持时,这种情况可能会改变。
解决了我的麻烦,并创建了可与FIWARE对象存储一起使用的NPM模块: https : //github.com/renarsvilnis/fiware-object-storage-ge
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.