此页面由 AI 自动翻译。查看英文原版

本页目录

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

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

当您需要将 Luxonis Hub API 密钥 传递给未接入 Luxonis Hub 的本地脚本或设备时,但又不想将密钥暴露在源代码管理中,请使用此页面。有关创建和管理 API 密钥本身,请使用 Luxonis Hub 中的 API 密钥。本页重点介绍如何安全地将这些密钥与 Luxonis 软件一起使用。通过 Luxonis Hub 管理的已接入设备和 OAK Apps 不需要团队 API 密钥。Hub 会使用更适合设备的权限进行身份验证,而不是共享的团队 API 密钥。手动处理 API 密钥主要适用于:
  • 需要从模型注册表中下载私有模型的未接入 Luxonis Hub 的设备
  • 本地脚本
请勿将 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 文件保留在本地,并避免共享它们。

模式和安全设置选项

独立模式

当您不需要手动传递密钥时

如果设备已接入 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 中的通用神经网络示例 以了解一个实际模式。