You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何无需凭证实现AWS CodeArtifact仓库的公网访问或VPC内访问?

无需凭证访问AWS CodeArtifact仓库的可行方案

针对你想让公司VPN用户和第三方系统,在无需安装AWS客户端、不用凭证的情况下,直接通过pip install --extra-index-url命令访问CodeArtifact仓库的需求,我整理了两种适配你场景的方案,重点推荐VPC内访问的配置——毕竟你的用户和系统都部署在同一VPC中:

方案一:VPC内无凭证访问(推荐)

利用AWS VPC端点实现VPC内资源直接访问CodeArtifact,流量完全在AWS内部传输,安全且无需凭证,步骤如下:

  1. 创建CodeArtifact的VPC端点

    • 登录AWS控制台,进入VPC服务,找到「端点」菜单点击「创建端点」
    • 服务类型选「AWS服务」,搜索codeartifact,选中对应区域的com.amazonaws.<你的区域>.codeartifact服务
    • 选择你的目标VPC、用户/系统所在的子网,以及允许VPC内443端口流量的安全组(确保安全组放行VPC内的入站HTTPS请求)
    • 完成创建后,VPC内的资源就能通过这个端点直接访问CodeArtifact
  2. 更新CodeArtifact仓库的资源策略
    给仓库添加允许VPC内所有主体只读访问的策略,这样VPC内的请求不需要凭证就能拉取包。在CodeArtifact控制台的仓库「权限」页面,添加以下策略(记得替换占位符):

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": "*",
                "Action": [
                    "codeartifact:GetPackageVersionAsset",
                    "codeartifact:GetPackageVersionReadme",
                    "codeartifact:ListPackageVersions",
                    "codeartifact:ListPackages",
                    "codeartifact:DescribePackageVersion",
                    "codeartifact:ReadFromRepository"
                ],
                "Resource": "arn:aws:codeartifact:eu-west-1:domain-owner-id:repository/my-domain/my-repo",
                "Condition": {
                    "StringEquals": {
                        "aws:SourceVpc": "vpc-你的VPC-ID"
                    }
                }
            }
        ]
    }
    

    这个策略只开放了pip安装所需的只读权限,避免了不必要的安全风险。

  3. 验证访问
    现在VPC内的机器或第三方系统,直接用你想要的命令即可安装包(注意URL必须加上/simple/后缀,pip需要这个路径识别索引):

    pip install --extra-index-url https://my-domain-<domain-owner-id>.d.codeartifact.eu-west-1.amazonaws.com/pypi/my-repo/simple/ package_name
    

    如果你用requirements.txt,可以直接添加:

    --extra-index-url https://my-domain-<domain-owner-id>.d.codeartifact.eu-west-1.amazonaws.com/pypi/my-repo/simple/
    package_name
    

    另外,通过VPN连接到VPC的用户,只要流量进入了目标VPC,也能无凭证访问。

方案二:公网无凭证访问(可选)

如果之后需要公网环境下的无凭证访问,可以通过限制IP范围来实现:

  1. 更新仓库资源策略
    添加允许指定公网IP访问的策略,比如公司办公IP段或第三方系统的公网IP:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": "*",
                "Action": [
                    "codeartifact:GetPackageVersionAsset",
                    "codeartifact:GetPackageVersionReadme",
                    "codeartifact:ListPackageVersions",
                    "codeartifact:ListPackages",
                    "codeartifact:DescribePackageVersion",
                    "codeartifact:ReadFromRepository"
                ],
                "Resource": "arn:aws:codeartifact:eu-west-1:domain-owner-id:repository/my-domain/my-repo",
                "Condition": {
                    "IpAddress": {
                        "aws:SourceIp": [
                            "192.168.1.0/24",  # 公司办公IP段
                            "203.0.113.10/32"   # 第三方系统公网IP
                        ]
                    }
                }
            }
        ]
    }
    
  2. 开启仓库公网访问
    在CodeArtifact控制台的仓库「设置」页面,将「访问控制」改为「公网和VPC」,确保公网流量能到达仓库。

  3. 验证公网访问
    用同样的pip命令即可在指定IP范围内无凭证安装包。


重要注意事项

  • 一定要确保CodeArtifact的PyPI索引URL带有/simple/后缀,否则pip会无法识别包索引
  • 资源策略遵循最小权限原则,只开放必要的只读操作,不要授予发布包等写权限
  • VPC端点方案比公网方案更安全,因为流量完全在AWS内部传输,不会暴露到公网

内容的提问来源于stack exchange,提问作者marqram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 08:02:30