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

在ReadTheDocs配置AWS访问密钥:避免公开暴露的方案问询

问题:ReadTheDocs PR构建中安全访问AWS S3的替代方案

我需要在.readthedocs.yaml文件的jobs.pre_build阶段从S3存储桶下载文件,该操作需在每个Pull Request构建时执行。目前的配置是在项目的ReadTheDocs高级设置中把IAM用户的访问密钥设为环境变量,代码片段如下:

jobs:
    pre_build:
      - pip install awscli
      - aws configure set aws_access_key_id ${aws_access_key_id}
      - aws configure set aws_secret_access_key ${aws_secret_access_key}
      - aws s3 cp s3://some_path some_file

其中aws_access_key_id和aws_secret_access_key已配置为ReadTheDocs的环境变量。根据官方文档,若要让Pull Request构建能访问环境变量需勾选Public选项,但我们不想公开AWS访问密钥,请问有无其他可行的配置方式?

可行的替代配置方式

  • 限制私有环境变量的PR访问范围
    如果你的PR仅来自仓库内部协作成员(而非外部提交者),可以在ReadTheDocs环境变量设置中保持变量为私有(不勾选Public),同时开启"允许来自Pull Request的构建"选项。该选项仅对仓库拥有者、协作者提交的PR生效,外部贡献者的PR无法访问这些私有变量,既满足内部PR的构建需求,又避免密钥公开。

  • 使用IAM OIDC角色获取临时凭证
    放弃长期IAM访问密钥,通过AWS OIDC身份提供商让ReadTheDocs构建服务临时获取权限:

    1. 在AWS IAM中创建指向ReadTheDocs OIDC端点的身份提供商
    2. 创建IAM角色,信任该OIDC提供商,并赋予仅允许下载目标S3路径文件的最小权限(遵循权限最小化原则)
    3. 在.readthedocs.yaml中无需配置密钥,直接运行aws s3 cp命令,AWS CLI会自动通过OIDC流程获取临时访问凭证,无需存储敏感信息。
  • 使用预构建镜像嵌入文件
    如果下载的文件更新频率较低,可以将文件打包到自定义Docker镜像中,在.readthedocs.yaml的build.image字段指定使用该镜像作为构建环境。ReadTheDocs启动构建时直接使用包含目标文件的镜像,无需在构建阶段访问S3,彻底规避密钥问题。

  • 通过仓库CI前置同步文件
    借助GitHub Actions、GitLab CI等仓库自带的CI工具,在PR提交时自动将S3文件同步到仓库的指定目录(如docs/assets)。ReadTheDocs构建时直接从仓库读取文件,无需在构建阶段连接S3。这种方式需要确保同步流程的时效性,适合文件更新不频繁的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 13:07:14