本页目录

  • 一般建议
  • 模式和安全设置选项

在 OAK Apps 和脚本中使用 Hub API 密钥

当您需要将 Luxonis Hub API 密钥 传递给本地脚本或未采用到 Luxonis Hub 的设备,且不希望将密钥暴露在源代码管理时,请参考本页。有关创建和管理 API 密钥本身,请参阅 Luxonis Hub 中的 API 密钥。本页重点介绍如何安全地将这些密钥用于 Luxonis 软件。通过 Luxonis Hub 管理的已采用设备和 OAK Apps 需要团队 API 密钥。Hub 使用比共享团队 API 密钥更合适的设备级权限为其处理身份验证。手动 API 密钥处理主要适用于:
  • 未采用到 Luxonis Hub 且需要从 Models Registry 下载私有模型的设备
  • 本地脚本
不要将 API 密钥直接放置在 git 跟踪的文件中,例如 oakapp.toml、Python 源文件、JSON、YAML 或 shell 脚本。相反,使用仅运行时的注入模式,例如环境变量、.env 文件或 oakctl 登录流程。

一般建议

  • 切勿直接将 API 密钥提交 到仓库(例如 git 下的 .toml.json.yaml.py 文件)。
  • 优先使用环境变量.env 文件(通过 .gitignore 排除在 git 之外)。
  • 除非有特定的非 Hub 需求,否则不要将团队 API 密钥添加到已采用设备或 Hub 管理的 OAK App 工作流中。
  • 当确实需要密钥时,优先使用**oakctl 管理的身份验证**或本地运行时注入。
  • 仅将 .env 文件保留在本地,并避免共享。

模式和安全设置选项

Standalone Mode

何时无需手动传递密钥

如果设备已采用到 Luxonis Hub,或者应用已通过 Hub 部署和管理,您通常无需手动管理团队 API 密钥。Hub 通过已采用设备流程和设备级权限处理身份验证。

本地和设备端设置

选项1 - 设备已采用

如果设备已在 Hub 中被您的团队采用,则无需手动提供团队 API 密钥。使用以下命令运行应用:
Command Line
1oakctl app run .

选项2 - 覆盖密钥

如果设备未采用到 Hub,请覆盖 DEPTHAI_HUB_API_KEY在这种情况下,从本地的 .env 文件中加载值:
Python
1import os
2from dotenv import load_dotenv
3
4load_dotenv(override=True)
5
6print(os.environ["DEPTHAI_HUB_API_KEY"])
然后将密钥存储在 main.py 旁边的 .env 文件中:
Command Line
1cd <INSERT_PATH_TO_PROJECT>
2echo "DEPTHAI_HUB_API_KEY=<INSERT_YOUR_DEPTHAI_HUB_API_KEY>" > .env
3echo ".env" >> .gitignore
然后运行:
Command Line
1oakctl app run .
oakctl.env 文件复制到设备上的应用环境中。您的应用仍需要自己的逻辑在运行时读取该值,例如使用 dotenv.load_dotenv()

Peripheral Mode

oakctl 管理的身份验证

如果 oakctl 正在为未采用到 Hub 的设备驱动工作流,请使用其 Hub 登录流程,而不是手动硬编码原始密钥:
Command Line
1oakctl hub login
2oakctl run-script python3 main.py
登录后,oakctl 向脚本提供 Hub 身份验证上下文。稍后您可以使用 oakctl hub logout 登出。

本地脚本设置

如果您直接运行脚本,请使用以下模式之一:

选项1 - 内联参数

从 CLI 参数读取值:
Python
1_, args = initialize_argparser()
2
3if args.api_key:
4    print(args.api_key)
从命令行调用:
Command Line
1python3 <INSERT_PATH_TO_PROJECT>/main.py -api <INSERT_YOUR_DEPTHAI_HUB_API_KEY>

选项2 - .env 文件

从本地的 .env 文件加载密钥:
Python
1import os
2from dotenv import load_dotenv
3
4load_dotenv(override=True)
5print(os.environ["DEPTHAI_HUB_API_KEY"])
然后执行以下命令:
Command Line
1cd <INSERT_PATH_TO_PROJECT>
2echo "DEPTHAI_HUB_API_KEY=<INSERT_YOUR_DEPTHAI_HUB_API_KEY>" > .env
3echo ".env" >> .gitignore
4python3 <INSERT_PATH_TO_PROJECT>/main.py

选项3 - 导出的环境变量

从进程环境读取密钥:
Python
1import os
2print(os.environ["DEPTHAI_HUB_API_KEY"])
然后执行:
Command Line
1cd <INSERT_PATH_TO_PROJECT>
2export DEPTHAI_HUB_API_KEY=your_key_here
3python3 main.py

示例

请参阅 oak-examples 中的通用神经网络示例 以了解一个实用模式。