TL;DR InfluxDB技术技巧;使用InfluxDB API创建桶

导航到

无论您使用的是InfluxDB Cloud还是InfluxDB OSS,InfluxDB API都提供了一种简单的方法来与您的InfluxDB实例交互。InfluxDB v2 API(API文档)提供了一种统一的方法来查询、写入数据和评估InfluxDB实例的健康状况。在今天的Tech Tips文章中,我们将学习如何创建和列出存储桶。存储桶是InfluxDB中数据写入的命名位置。存储桶是InfluxDB数据布局中的最高组织结构。每个存储桶都有一个保留策略,它描述了数据在该存储桶中保留的时间。

注意:今天的教程中,我们将使用InfluxDB Cloud的免费版。如果您正在运行InfluxDB 2.0-rc或之前的开源版本,请分别将URL替换为您的https://127.0.0.1:8086/https://127.0.0.1:9999/。虽然您可以使用任何API开发工具——如Postmancurl——来执行本TL;DR中描述的API调用,但我们使用Python和Requests库

使用API进行高效的物联网应用开发

使用API自动创建和列出存储桶对于各种任务很有用。例如,假设您正在InfluxDB之上构建物联网应用。具体来说,让我们假设您正在收集临时数据,并且您正在监控生物文化的环境。每次科学家开始新的实验时,您可能希望创建一个新的存储桶来写入培养室数据。这是因为我们假设科学家只对在整个实验期间监控文化的环境感兴趣。实验完成后,培养数据就不再有用。

培养文化与制作松饼类似。您想确保在烘焙过程中烘焙温度保持恒定。然而,如果发生干扰并且您的松饼在烘焙过程中被破坏,您就不想保留旧的烤箱温度数据。相反,您只需修复烤箱并确保它为下一次烘焙正常工作。将数据写入新的存储桶允许物联网开发者轻松地从旧实验中过期培养数据,并在存储桶中的单个测量中隔离培养生长事件数据。因此,科学家能够比较孵化并确保在整个实验过程中他们的培养生长是成功的。

使用InfluxDB v2 API创建存储桶

为了创建存储桶,您需要

  • InfluxDB v2 API文档中的正确端点。
  • 一个全面访问令牌——您很可能会使用在注册InfluxDB账户时生成的那个。您可以在导航栏中的“数据”标签下找到您的令牌。

influxdb token

  • 您的orgID。在navbar中点击账户下拉菜单。这个下拉菜单在“数据”标签上方,您可以在那里找到您的令牌。此下拉菜单将列出您的用户名以及org-name。点击关于以获取您的用户ID和orgID。

influxdb orgid user id

要创建存储桶,请使用以下脚本,该脚本利用您刚刚收集到的信息:

import requests
# url = 'https://us-west-2-1.aws.cloud2.influxdata.com/api/v2/bucket'
# or if you're using InfluxDB OSSr
# url = 'https://127.0.0.1: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('https://127.0.0.1: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 = 'https://127.0.0.1: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频道中分享您的想法、关注点或问题。我们很乐意获取您的反馈并帮助您解决遇到的问题!