在 FIWARE 对象存储中存储数据
Storing data in FIWARE Object Storage
我正在构建一个将文件存储到 FIWARE 对象存储中的应用程序。 我不太明白将文件存储到存储中的正确方法是什么。
下面摘自 Object Storage - User and Programmers Guide 的代码 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。 version 让我感到困惑,因为当我第一次看到唯一与对象存储一起工作的 Node.js 模块(repo:fiware-object-storage)时,它似乎使用 1。版本。由于模块正在调用旧的 (v.1.1) API 版本而不是可能是最新的 (v.2.0),参考 python 示例,不确定这是否是过时的版本做还是不做。
当我更多地使用该模块时,意识到它不起作用并且它的代码完全是一团糟。所以我分叉了这个项目并很快明白我需要从头开始重写它,以上面提到的使用指南中的 python 示例作为参考。 Link to my repo.
在撰写本文时,唯一未实现的方法是对象存储 (PUT) 和对象获取 (GET)。
还有一些关于对象存储的其他问题,我发送给了 fiware-lab-help@lists.fiware.org,但没有收到任何回音,所以在这里问他们。
没有多少编写 API 库的经验。 我是否需要担心身份验证令牌过期? 我认为每次与存储交互时都不需要进行新的身份验证。身份验证应该在服务器启动时发生一次(我们创建一个实例)并且它在内部保留它。 我是否应该实施某种刷新令牌的机制?
租户id有变化吗?从下面的引述来看,假设得到一个租户我只是一次性交易,然后你可以在以后使用它配置以减少身份验证调用。
A valid token is required to access an object store. This section
describes how to get a valid token assuming an identity management
system compatible with OpenStack Keystone is being used. If the
username, password and tenant details are known, only step 3 is
required. source
在获取租户的身份验证过程中,我应该如何 select "right" 一个? 现在我只是采取第一个与示例代码类似。
一个对象存储容器是否只属于一个region?
只使用你所说的版本 2。忽略你的版本 1。它在示例中被注释掉了。它应该从文档中删除。
(1) 令牌将在一段时间内有效。这可能是一个小时或一天,具体取决于设置。该时间段应在身份验证服务返回的令牌中指定。令牌需要定期刷新。
(2)租户id不变。
(3) 通常只返回一个租户id。但是,您可能被分配了多个 ID,在这种情况下,您必须选择当前使用的 ID。容器通常属于单个租户,不在租户之间共享。
(4) 容器通常仅限于一个区域。当 multi-region 对容器的支持被添加到 Swift.
时,这在未来可能会改变
解决了我的问题并创建了与 FIWARE 对象存储一起工作的 NPM 模块:https://github.com/renarsvilnis/fiware-object-storage-ge
我正在构建一个将文件存储到 FIWARE 对象存储中的应用程序。 我不太明白将文件存储到存储中的正确方法是什么。
下面摘自 Object Storage - User and Programmers Guide 的代码 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。 version 让我感到困惑,因为当我第一次看到唯一与对象存储一起工作的 Node.js 模块(repo:fiware-object-storage)时,它似乎使用 1。版本。由于模块正在调用旧的 (v.1.1) API 版本而不是可能是最新的 (v.2.0),参考 python 示例,不确定这是否是过时的版本做还是不做。
当我更多地使用该模块时,意识到它不起作用并且它的代码完全是一团糟。所以我分叉了这个项目并很快明白我需要从头开始重写它,以上面提到的使用指南中的 python 示例作为参考。 Link to my repo.
在撰写本文时,唯一未实现的方法是对象存储 (PUT) 和对象获取 (GET)。
还有一些关于对象存储的其他问题,我发送给了 fiware-lab-help@lists.fiware.org,但没有收到任何回音,所以在这里问他们。
没有多少编写 API 库的经验。 我是否需要担心身份验证令牌过期? 我认为每次与存储交互时都不需要进行新的身份验证。身份验证应该在服务器启动时发生一次(我们创建一个实例)并且它在内部保留它。 我是否应该实施某种刷新令牌的机制?
租户id有变化吗?从下面的引述来看,假设得到一个租户我只是一次性交易,然后你可以在以后使用它配置以减少身份验证调用。
A valid token is required to access an object store. This section describes how to get a valid token assuming an identity management system compatible with OpenStack Keystone is being used. If the username, password and tenant details are known, only step 3 is required. source
在获取租户的身份验证过程中,我应该如何 select "right" 一个? 现在我只是采取第一个与示例代码类似。
一个对象存储容器是否只属于一个region?
只使用你所说的版本 2。忽略你的版本 1。它在示例中被注释掉了。它应该从文档中删除。
(1) 令牌将在一段时间内有效。这可能是一个小时或一天,具体取决于设置。该时间段应在身份验证服务返回的令牌中指定。令牌需要定期刷新。
(2)租户id不变。
(3) 通常只返回一个租户id。但是,您可能被分配了多个 ID,在这种情况下,您必须选择当前使用的 ID。容器通常属于单个租户,不在租户之间共享。
(4) 容器通常仅限于一个区域。当 multi-region 对容器的支持被添加到 Swift.
时,这在未来可能会改变解决了我的问题并创建了与 FIWARE 对象存储一起工作的 NPM 模块:https://github.com/renarsvilnis/fiware-object-storage-ge