如何在不需要凭证的情况下访问 VPC 中公共/公共的 AWS CodeArtifact 存储库?

问题描述

我需要一个用于我公司 Python 包的包存储库。我已经设置了一个 AWS CodeArtifact 存储库并设法发布和安装了我的包。

要使 pip 能够使用此存储库,AWS 建议执行以下操作之一:

org.eclipse.persistence.logging.slf4j.SLF4JLogger

这是有效的,因为我已经使用我的凭证配置了我的 AWS 客户端。 不过,我更愿意像这样安装: 他们应该能够轻松安装这些软件包,例如通过

aws codeartifact login --tool pip | twine --domain my-domain --domain-owner domain-owner-id --repository my-repo

出于两个原因,我希望无需凭据即可工作:

  • 我不希望组织内的每个人都安装 AWS 客户端。
  • 我托管的第三方系统不允许我安装 AWS 客户端 - 它允许我提供替代索引或指定一个 requirements.txt,我也可以在其中添加其他索引。立>

因此我的问题是: 如何在不需要凭据的情况下访问 VPC(虚拟私有云)中的公共/公共 AWS CodeArtifact 存储库?

用户(通过 VPN)和第 3 方应用程序均已配置为位于同一 VPC 中。

解决方法

Kasia Gogolek 答案的两种替代方案:

在处理身份验证的 aws-codeartifact 前运行代理

https://github.com/Polymathian/aws-codeartifact-python-proxy

pypicloud 而不是 s3pypi:

https://github.com/stevearc/pypicloud-docker

,

不幸的是,在撰写本文时,这似乎是不可能的。我面临一个类似的问题,即 CodeArtifact 与尝试在 Windows Docker 中使用 pip 包的用户无法正常工作。我今天早上就此事与 AWS 支持人员进行了交谈,以检查是否有一种方法可以使用 IAMRoles 而不是 aws cli 进行身份验证,但现在这也不是一种选择,尽管与我交谈的工程师说他们会为其创建内部请求。>

什么可能对您有用,我目前正在考虑的是在 S3 中创建一个 pypi 存储库。

S3 + CDN + WAF

您可以使用 s3pypi pip 包来管理它并在它前面设置 cloudfront 和 WAF 以阻止外部流量 (https://www.novemberfive.co/blog/opensource-pypi-package-repository-tutorial)

S3 + Lambda + API 网关

设置一个以 api 网关 + lambda 作为端点的 S3 存储库。此存储库可能会帮助您入门 https://github.com/berislavlopac/plambdapi。理论上,您可以将端点设置在 VPC 中,然后通过这种方式控制流量。

托管您自己的

作为替代方案,您可以在 VPC 中安装 Artifactory 并将其用作您的 pypi 存储库。