TL;DR InfluxDB 技术提示;使用 InfluxDB API 创建存储桶
作者:Anais Dotis-Georgiou / 产品, 用例, 开发者
2020 年 10 月 22 日
导航至
无论您使用的是 InfluxDB Cloud 还是 InfluxDB OSS,InfluxDB API 都提供了一种与 InfluxDB 实例交互的简单方法。InfluxDB v2 API 提供了一种统一的方法来查询、写入数据和评估 InfluxDB 实例的健康状况。在今天的技术提示文章中,我们将学习如何创建和列出存储桶。存储桶是 InfluxDB 中用于写入时间序列数据的命名位置。存储桶是 InfluxDB 数据布局中最高的组织结构级别。每个存储桶都有一个保留策略,用于描述数据在该存储桶中保留的时长。
注意:在今天的教程中,我们将使用InfluxDB Cloud的免费层。如果您运行的是 InfluxDB 2.0-rc 或之前的 OSS 版本,请将 URL 替换为您的 http://localhost:8086/ 或 http://localhost:9999/。虽然您可以使用任何 API 开发工具(如 Postman)或 curl 来执行本 TL;DR 中描述的 API 调用,但我们使用的是 Python 和 Requests 库。
使用 API 进行高效的物联网应用程序开发
使用 API 自动化创建和列出存储桶对于各种任务非常有用。例如,假设您正在 InfluxDB 之上构建一个物联网应用程序。具体来说,我们假设您正在收集临时数据,并且您正在监控生物培养物的环境。每次科学家开始一项新实验时,您可能都想创建一个新的存储桶来写入培养室数据。这是因为我们假设科学家只对在整个实验期间监控培养物的环境感兴趣。实验结束后,培养物数据不再有用。
培养文化类似于制作蛋奶酥。您需要确保在烘烤时烘烤温度恒定。但是,如果出现干扰并且您的蛋奶酥在烘烤过程中毁坏,您对保留旧的烤箱温度数据不感兴趣。相反,您只需修理烤箱并确保它为下一次烘烤工作即可。将数据写入新的存储桶使物联网开发人员可以轻松地使旧实验中的培养物数据过期,并将培养物生长事件数据隔离在存储桶内的单个测量中。因此,科学家能够比较孵化情况,并确保他们的培养物在整个实验过程中成功生长。
使用 InfluxDB v2 API 创建存储桶
为了创建存储桶,您需要
- 来自 InfluxDB v2 API 文档 的正确端点。
- 完全访问令牌 – 最有可能您将使用注册 InfluxDB 帐户时生成的令牌。您可以在导航栏的 数据 选项卡中找到您的令牌。
- 您的 orgID。单击导航栏中的 帐户下拉菜单。这直接位于您可以找到令牌的 数据 选项卡上方。此下拉菜单将列出您的用户名以及组织名称。单击 关于 以获取您的用户 ID 和 orgID。
- 来自 InfluxDB v2 API 文档的 POST 的有效负载结构。
要创建存储桶,请使用以下脚本,该脚本利用了您刚刚收集的上述信息
import requests
# url = 'https://us-west-2-1.aws.cloud2.influxdata.com/api/v2/bucket'
# or if you're using InfluxDB OSSr
# url = 'http://localhost:8086/api/v2/buckets'
headers = {'Authorization': 'Token MdxASmL0yKZZ4bcDP7oRzMDMJ_8h8ugZuG0LfgvX4eD-euBH0blCpxs596bU1EEgcoKsTLvxMjHQfvKq6PGM_Q=='}
payload = {
"orgID": "ec4a5f5fee6ed685",
"name": "mybucket",
"description": "create a bucket",
"rp": "myrp",
"retentionRules":[
{
"type": "expire",
"everySeconds": 86400
}
]
}
# r = requests.get('http://localhost:8086/api/v2/authorizations/', headers=headers)
r = requests.post(url, headers=headers, json=payload)
print(r.text)
创建存储桶时,您可以包含描述以及保留策略。对于此存储桶,我们的数据将在每 24 小时过期。这在有效负载的“retentionRules”部分中指定。没有规则意味着数据永不过期。运行脚本后,您应该看到以下响应
{
"id": "eef18cc593a9da5b",
"orgID": "ec4a5f5fee6ed685",
"type": "user",
"description": "create a bucket",
"name": "mybucket",
"rp": "myrp",
"retentionRules": [
{
"type": "expire",
"everySeconds": 86400
}
],
"createdAt": "2020-10-15T17:33:14.958035Z",
"updatedAt": "2020-10-15T17:33:14.958035Z",
"links": {
"labels": "/api/v2/buckets/eef18cc593a9da5b/labels",
"members": "/api/v2/buckets/eef18cc593a9da5b/members",
"org": "/api/v2/orgs/ec4a5f5fee6ed685",
"owners": "/api/v2/buckets/eef18cc593a9da5b/owners",
"self": "/api/v2/buckets/eef18cc593a9da5b",
"write": "/api/v2/write?org=ec4a5f5fee6ed685\u0026bucket=eef18cc593a9da5b"
},
"labels": []
}
使用 InfluxDB v2 API 列出存储桶
为了使用 InfluxDB v2 API 列出存储桶,您需要与上述相同的信息。此脚本允许您列出所有存储桶
import requests
# url = 'https://us-west-2-1.aws.cloud2.influxdata.com/api/v2/bucket'
# or if you're using InfluxDB OSSr
# url = 'http://localhost:8086/api/v2/buckets'
headers = {'Authorization': 'Token MdxASmL0yKZZ4bcDP7oRzMDMJ_8h8ugZuG0LfgvX4eD-euBH0blCpxs596bU1EEgcoKsTLvxMjHQfvKq6PGM_Q=='}
r = requests.get(url, headers=headers)
print(r.text)
运行脚本后,您应该看到列出的所有令牌。这是响应的一部分,其中包括我们刚刚创建的存储桶。
{
"links": {
"self": "/api/v2/buckets?descending=false\u0026limit=20\u0026offset=0"
},
"buckets": [
{
"id": "3624665d39427203",
"orgID": "ec4a5f5fee6ed685",
"type": "user",
"name": "my-bucket",
"retentionRules": [],
"createdAt": "2020-10-06T18:23:02.689376Z",
"updatedAt": "2020-10-06T18:23:02.689376Z",
"links": {
"labels": "/api/v2/buckets/3624665d39427203/labels",
"members": "/api/v2/buckets/3624665d39427203/members",
"org": "/api/v2/orgs/ec4a5f5fee6ed685",
"owners": "/api/v2/buckets/3624665d39427203/owners",
"self": "/api/v2/buckets/3624665d39427203",
"write": "/api/v2/write?org=ec4a5f5fee6ed685\u0026bucket=3624665d39427203"
},
"labels": []
}]
}
使用 InfluxDB v2 API 管理存储桶的后续步骤
我希望这篇 InfluxDB 技术提示文章能启发您利用 InfluxDB v2 API 创建存储桶。还值得注意的是,您可以使用存储桶和 API 做更多的事情。您可以为存储桶分配所有者,管理组织内的成员,并授予成员仅对特定存储桶的权限。如果您正在创建物联网应用程序或出于其他原因使用 API,请向我们寻求帮助并分享您的故事!在评论区、我们的社区站点或我们的 Slack 频道中分享您的想法、疑虑或问题。我们很乐意获得您的反馈并帮助您解决遇到的任何问题!