我怎样才能从代码存储库中找到 Foundry API?

How can I hit a Foundry API from Code Repositories?

使用例如 Python 转换从代码存储库命中内部 Foundry API 的正确方法是什么?

目前默认不支持从代码存储库访问 Foundry API 的功能。

这是可能的,但由于对安全的影响,有些劝阻。特别是用于调用 API 的标记。从历史上看,Foundry 作业 运行 具有构建用户的完整令牌。这允许进行用户可以进行的任何 API 调用,但可能会被恶意行为者滥用。因此,今天大多数构建使用 project-scoped 令牌,它只能读取和写入数据集,而不能进行 API 调用。

因此您必须 un-project-scope 存储库以便它使用用户令牌,这可以通过 Jemma API 完成,或者通过提供 hard-coded 令牌,这可以是通过带有适当标记的安全数据集完成,但请注意,任何可以阅读此数据集的人都可能窃取令牌。

称为逻辑流的产品支持解决方案即将推出,以使该过程更加顺畅。

获得令牌后,API 调用与任何其他 API 调用类似。这是 python 中的示例,the documentation 中有更多信息。

URL = f"https://foundry.url/stemma/api/repos/{repo}/checks"
headers = {
    "Authorization": "Bearer " + token
}
req = requests.get(URL, headers=headers)
if req.status_code > 299:
    continue
req_json = req.json()

由于提到的 Foundry 限制和项目范围内的令牌,我们创建了用于自动化的专用服务帐户,为服务帐户创建了不记名令牌并将其存储在我们使用标记保护的数据集中。在我们使用令牌进行 api 调用的转换中,我们 stop_propagating 标记到下游转换。

不幸的是,这相当麻烦,我们正在 Palantir 的产品开发团队寻求更好的解决方案。