如何在不需要凭据的情况下访问 VPC 中的 AWS CodeArtifact 存储库 public / public?
How do I make access to a AWS CodeArtifact repository public / public in VPC, without need of credentials?
我的公司 Python 包需要一个包存储库。我已经设置了一个 AWS CodeArtifact 存储库并设法发布和安装我的包。
要使 pip 能够使用此存储库,AWS 建议执行以下操作之一:
aws codeartifact login --tool pip | twine --domain my-domain --domain-owner domain-owner-id --repository my-repo
这是有效的,因为我已经使用我的凭据配置了我的 AWS 客户端。
不过,我更愿意像这样安装:
他们应该能够轻松安装这些软件包,例如通过
pip install --extra-index-url https://repository-name.d.codeartifact.eu-west-1.amazonaws.com/pypi/repository/ package_name
出于两个原因,我希望它在没有凭据的情况下工作:
- 我不希望组织内的每个人都安装 AWS 客户端。
- 我托管的第三方系统不允许我安装 AWS 客户端 - 它允许我提供替代索引或指定 requirements.txt 我可以在其中添加其他索引作为嗯
因此我的问题是:
如何在 VPC(虚拟私有云)中访问 AWS CodeArtifact 存储库 public / public,而不需要凭据?
用户(通过 VPN)和第 3 方应用程序都已配置在同一 VPC 中。
不幸的是,在撰写本文时这似乎是不可能的。我遇到了一个类似的问题,即 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 存储库。
Kasia Gogolek 答案的两个备选方案:
运行 处理身份验证的 aws-codeartifact 前面的代理:
https://github.com/Polymathian/aws-codeartifact-python-proxy
pypicloud 而不是 s3pypi:
我的公司 Python 包需要一个包存储库。我已经设置了一个 AWS CodeArtifact 存储库并设法发布和安装我的包。
要使 pip 能够使用此存储库,AWS 建议执行以下操作之一:
aws codeartifact login --tool pip | twine --domain my-domain --domain-owner domain-owner-id --repository my-repo
这是有效的,因为我已经使用我的凭据配置了我的 AWS 客户端。 不过,我更愿意像这样安装: 他们应该能够轻松安装这些软件包,例如通过
pip install --extra-index-url https://repository-name.d.codeartifact.eu-west-1.amazonaws.com/pypi/repository/ package_name
出于两个原因,我希望它在没有凭据的情况下工作:
- 我不希望组织内的每个人都安装 AWS 客户端。
- 我托管的第三方系统不允许我安装 AWS 客户端 - 它允许我提供替代索引或指定 requirements.txt 我可以在其中添加其他索引作为嗯
因此我的问题是: 如何在 VPC(虚拟私有云)中访问 AWS CodeArtifact 存储库 public / public,而不需要凭据?
用户(通过 VPN)和第 3 方应用程序都已配置在同一 VPC 中。
不幸的是,在撰写本文时这似乎是不可能的。我遇到了一个类似的问题,即 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 存储库。
Kasia Gogolek 答案的两个备选方案:
运行 处理身份验证的 aws-codeartifact 前面的代理:
https://github.com/Polymathian/aws-codeartifact-python-proxy
pypicloud 而不是 s3pypi: