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

在MWAA中从S3自定义PyPI服务器安装Python包失败排查

MWAA部署时无法从S3自定义PyPI安装内部Python包的解决方案

问题场景

我们团队用S3搭了自定义PyPI服务器,想通过MWAA的requirements.txt装内部开发的Python包。已经配了MWAA的IAM策略和S3桶权限,本地用MWAA测试容器验证安装完全正常,但部署到MWAA实例后,requirements.txt里加了--extra-index-url、--trusted-host并指定包版本,所有DAG直接失效。CloudWatch日志显示只有目标内部包没装上,报错“找不到匹配版本”,怀疑是网络或权限配置出了问题,求解决办法。

附当前用的S3桶策略:

{
    "Version": "Date",
    "Id": "MWAApolicyforcustomS3",
    "Statement": [
        {
            "Sid": "AllowSpecificMWAAAccess",
            "Effect": "Allow",
            "Principal": {
                "AWS": "mwaa-role-example"
            },
            "Action": "s3:GetObject",
            "Resource": [
                "arn:aws:s3:::bucket",
                "arn:aws:s3:::bucket/*"
            ]
        }
    ]
}

排查与解决步骤

1. 先核对requirements.txt格式

MWAA对requirements.txt的格式要求很严,必须保证--extra-index-url和--trusted-host的写法符合pip规范,而且要放在包声明前面:

--extra-index-url https://bucket.s3.region.amazonaws.com/simple/
--trusted-host bucket.s3.region.amazonaws.com
your-internal-package==1.0.0

重点:S3自定义PyPI的URL必须指向simple/目录(PyPI标准结构),不然pip根本识别不了索引。

2. 验证MWAA实例的网络能不能到S3

  • 如果MWAA部署在私有子网,得确认子网配了VPC端点(Gateway或Interface)来访问S3:
    • 检查VPC里有没有S3 Gateway端点,路由表有没有关联这个端点,允许MWAA子网访问S3
    • 要是用Interface端点,得确保安全组允许出站流量到S3的443端口
  • 确认MWAA实例没被限制访问公网(如果自定义PyPI的S3桶是公开访问或者需要公网解析,但更推荐用VPC端点)

3. 修正S3桶策略和IAM权限

  • 当前桶策略里的Version字段必须是合法的AWS版本值,比如"2012-10-17",不能写"Date",不然策略可能不生效
  • MWAA执行角色的IAM策略除了桶策略里的GetObject,还得加ListBucket权限——因为pip需要遍历索引目录:
{
    "Effect": "Allow",
    "Action": [
        "s3:GetObject",
        "s3:ListBucket"
    ],
    "Resource": [
        "arn:aws:s3:::bucket",
        "arn:aws:s3:::bucket/*"
    ]
}
  • 检查桶的阻塞公共访问设置,如果开了完全阻塞,得确认MWAA是通过VPC端点或IAM角色访问的,不是走公共URL;要是必须用公共URL,得调整阻塞设置(不推荐这么做)

4. 检查自定义PyPI的结构对不对

得保证S3桶里的PyPI结构符合标准:

  • 包目录路径必须是simple/your-internal-package/
  • 目录下要有对应版本的.whl或.tar.gz包文件,文件名得符合pip识别规则(比如your_internal_package-1.0.0-py3-none-any.whl)
  • 目录下的index.html文件要正确生成——可以本地用pip index versions your-internal-package --index-url https://bucket.s3.region.amazonaws.com/simple/验证

5. 开MWAA的详细日志查问题

在MWAA控制台把Requirements Installation Logs设为详细级别,重新部署requirements.txt,去CloudWatch看pip的完整执行输出,确认有没有这些问题:

  • pip是不是访问了正确的S3索引URL
  • 有没有403/404错误(权限或者路径错了)
  • 是不是因为SSL证书问题访问失败(得确保--trusted-host正确配置了S3桶的域名)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 19:10:30