本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Python 兼容性
CodeArtifact 支持/simple/<project>/、、和其他 Python 客户端使用的 pip PyPI 简单存储库 API。twine uv客户端使用Accept请求标头在 HTML 和 JSON 响应之间进行选择。
简单存储库 API 支持
CodeArtifact 实现了 P ep 503、PEP 691 和 PEP
/simple/<project>/终端节点支持以下Accept标题内容类型:
application/vnd.pypi.simple.v1+json: JSON 响应(PEP 691,PEP 700)。application/vnd.pypi.simple.v1+html: HTML 响应 (PEP 503)。application/vnd.pypi.simple.latest+json: 解析为支持的最新 JSON 版本。application/vnd.pypi.simple.latest+html: 解析为支持的最新 HTML 版本。text/html*/*、或无Accept标题:HTML 响应(默认向后兼容)。
如果客户端指定的Accept标头不包含任何支持的内容类型, CodeArtifact 则返回406 Not Acceptable。
JSON 响应包括 PEP 700 字段 versionssize,upload-time以及 PEP 691 字段。HTML 响应的每个构件的上传时间与每个工件链接上的data-upload-time属性相同。
对于在启用每项资产元数据捕获之前缓存的软件包版本,可能缺少size和upload-time字段。当客户端通过 JSON Simple Repository API 请求此类包时,会从上游注册表 CodeArtifact 重新获取元数据并填充缺失的字段。客户无需采取任何行动,随后对相同软件包版本的请求会返回完整的元数据。
pip23.0 及更高版本并默认uv发送 JSON Accept 标头,因此大多数客户端无需任何额外配置即可接收 JSON。
示例:为项目请求 JSON
以下示例用于curl获取requests项目的 JSON 简单存储库 API 响应。从获取存储库 URLaws codeartifact get-repository-endpoint,从中获取授权令牌aws codeartifact get-authorization-token。
curl --header "Accept: application/vnd.pypi.simple.v1+json" \ --header "Authorization: Bearer $CODEARTIFACT_AUTH_TOKEN" \ "https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/pypi/my_repo/simple/requests/"
注意
CodeArtifact PyPI 端点接受 HTTP 基本身份验证(用户名aws、设置为授权令牌的密码)或持有者令牌身份验证。本指南其他地方显示的pip和twine配置使用 HTTP Basic。
以下示例显示了典型的 JSON 响应(为简洁起见,已截断)。versionssize、和upload-time字段来自 PEP 700;hashesrequires-python、和yanked字段来自 PEP 691。
{ "meta": { "api-version": "1.1" }, "name": "requests", "versions": [ "2.31.0", "2.32.0", "2.32.3" ], "files": [ { "filename": "requests-2.32.3-py3-none-any.whl", "url": "2.32.3/requests-2.32.3-py3-none-any.whl", "hashes": { "sha256": "70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", "md5": "df6df19f49fc7ae54ee5ff2dd3d22d2c" }, "requires-python": ">=3.8", "size": 64928, "upload-time": "2024-05-29T15:37:49.123456Z", "yanked": false } ] }
不支持的 PyPI API
CodeArtifact 不支持以下 PyPI API:
PyPI Warehou se JSON API
,它在下面提供了项目级和发布级的 JSON 端点。 /pypi/这是一个单独的 API,不同于简单存储库 API 的 PEP 691 JSON 变体,后者 CodeArtifact 确实支持。项目列表端点
/simple/。仅支持项目详细信息/simple/<project>/端点。
有关 PyPI API 的更多信息,请参阅 Python 打包管理局网站上的 Legacy API
pip 命令支持
以下各节总结了 CodeArtifact 存储库支持的 pip 命令以及不支持的特定命令。
与存储库进行交互的受支持命令
此部分列出了 pip 命令,其中 pip 客户端向其配置的注册表发出一个或多个请求。这些命令已经过验证,在针对 CodeArtifact 存储库调用时可以正常运行。
CodeArtifact 不实现pip search。如果您配置pip了 CodeArtifact 存储库,则运行pip search将搜索并显示来自 PyP
支持的客户端命令
这些命令不需要与存储库进行任何直接交互,因此 CodeArtifact 无需执行任何操作即可支持它们。