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

如何在AWS Wrangler中配置SSL验证访问S3存储资源

问题原因

你错误混淆了SSL配置的两个参数,将CA根证书路径赋值给了client_cert参数,二者用途完全不同:

  • verify参数:指定CA根证书路径,用于验证服务端SSL证书的合法性,是你之前正常运行的boto3代码中实际使用的参数
  • client_cert参数:仅用于双向TLS认证场景,指定客户端自身的证书/密钥路径,用于服务端验证客户端身份,你当前场景不需要该参数

参数误用后botocore尝试将CA根证书解析为客户端证书,格式不匹配就抛出了PEM解析错误。

解决方案

以下是可正常运行的AWS Wrangler配置代码,对齐你原有的boto3 SSL配置逻辑:

import awswrangler as wr
import boto3
import botocore
import os

aries_cert = os.environ['ARIES_CERT']

# 配置WR全局参数
wr.config.s3_endpoint_url = "https://MY-ENDPOINT.com"
# 对应boto3 client的verify参数,传入CA根证书路径
wr.config.s3_verify_ssl = aries_cert
# 配置超时、重试策略
wr.config.botocore_config = botocore.config.Config(
    retries={"max_attempts": 3},
    connect_timeout=600,
    read_timeout=600
)

# 创建boto3会话
session = boto3.Session(
    aws_access_key_id=os.environ['AWS_ACCESS_KEY_ID'],
    aws_secret_access_key=os.environ["AWS_SECRET_ACCESS_KEY"],
    region_name="us-east-1"
)
# 路径处理
path = f's3://{path}' if not path.startswith('s3://') else path
# 读取Parquet转为DataFrame
df = wr.s3.read_parquet(
    path=path,
    dataset=True,
    boto3_session=session
)
注意事项

如果配置完成后仍有报错,可依次排查:

  • 环境变量ARIES_CERT对应的证书文件路径是否存在
  • 程序进程是否有该证书文件的读取权限
  • 证书是否为标准PEM格式
boto3核心组件使用逻辑

Session

Session是boto3的配置容器,存储了认证信息(AK/SK、Token)、区域、自定义配置等所有上下文配置:

  • 不显式创建Session时,boto3会自动生成一个全局默认Session,从环境变量、本地配置文件读取默认配置
  • 多账号、多环境、自定义配置的场景必须显式创建独立Session,避免配置互相污染
  • 所有Client、Resource实例都需要从Session生成

Client

Client是底层API封装,和AWS服务的REST接口一一对应:

  • 所有AWS服务都支持Client调用
  • 接口返回原生字典格式的响应,灵活性最高,可以拿到所有返回字段
  • 适合需要细粒度控制请求、调用冷门API、需要处理原始响应数据的场景

Resource

Resource是高层面向对象的API封装,仅覆盖常用服务的常用操作:

  • 目前仅S3、EC2、DynamoDB等部分常用服务提供Resource接口
  • 把服务资源抽象为Python对象,比如s3.Bucket('bucket-name')、s3.Object('bucket','key'),代码更简洁易读
  • 适合常用的CRUD操作,不需要处理原始响应的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:30:00