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

Jupyter Notebook访问S3报InvalidAccessKeyId错误如何解决

问题结论

不需要为S3添加额外策略,你遇到的InvalidAccessKeyId报错和S3侧权限配置无关,本质是传入容器的AWS凭证未被SDK识别为有效凭证。

排查修复步骤
  • 先验证本地凭证有效性
    你使用的是带AWS_SESSION_TOKEN的临时凭证,这类凭证默认有效期最长12小时,过期后会直接触发「Access Key不存在」的报错。先在宿主机的AWS CLI中执行aws s3 ls,确认当前本地存储的凭证本身可以正常调用S3接口,如果本地调用也报错,重新执行STS命令获取新的有效临时凭证即可。
  • 核对容器环境变量传参是否正确
    Windows环境下通过CMD/PowerShell传长字符串环境变量时,很容易在复制密钥、Token的过程中带入不可见的尾部空格、换行符,尤其是长度较长的Session Token缺漏一个字符就会触发当前报错。可以执行以下命令进入运行中的容器,打印实际加载的AWS相关环境变量,和有效凭证逐字核对:
    docker exec -it <你的容器ID> env | findstr AWS_
    
  • 排查镜像内置凭证链的覆盖问题
    你使用的ECR开发端点镜像如果是Glue、SageMaker类的定制镜像,通常内置了AWS SDK的默认凭证加载逻辑,可能会优先读取镜像内预置的无效凭证配置,忽略你传入的环境变量。可以在Jupyter Notebook中运行以下代码,打印SDK实际加载使用的Access Key ID,确认是否为你传入的凭证:
    import boto3
    current_cred = boto3.Session().get_credentials()
    print("SDK当前加载的Access Key ID:", current_cred.access_key)
    
    如果打印的Key和你传入的不一致,初始化S3客户端时显式传入三个凭证参数即可,无需依赖默认凭证链。

注意:如果是跨账号访问S3的场景,只需要保证你使用的凭证所属的IAM身份已经被授予S3访问权限即可,不需要额外修改S3桶策略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:54:19